 Thank you very much for joining I Think it's time to begin and I think thank you for coming to this session It's about contributing to automotive grade Linux and Geneva development platform My name is long on a V and I'm a senior software engineer at Gonzaga group The company provides open-source consultancy services for embedded devices and for the automotive industry So as part of my awesome job I had the opportunity to contribute to a lot of open-source projects a lot of upstream work And that's how I got involved with both automotive grade Linux and Geneva development platform So today I'll try to share with you my experience The agenda for today includes a brief introduction first of two automotive grade Linux then to Geneva development platform It's a very very brief introduction. So I just want to show you some of the core components in both platforms We can see the similarities between the the platforms and after that we'll focus on how to start contributing to these To these platforms, it's going to be a technical talk, but it's it's for beginners. So don't worry ask questions I'll try to answer the good thing is that I see a lot of other Contributors around here. So even someone from the crowd can provide better answers than me So it will be nice to have a good discussion openly So our motive great Linux. This is a project of the Linux foundation The purpose of the project is to create in vehicle infotainment New Linux distribution that is entirely open source. It's based on the Yachto project and open embedded. This is The the build system that we are using So basically if you want to get started with this platform the minimum Requirements is to get familiar with the Yachto project and open embedded because you need to know how to use bit bake to add recipes to modify recipes and this is the first step of making contributions to the platform How many of you are familiar with automotive grade Linux? Okay, almost everyone do you have a hands-on experience like contributing patches or something like this Okay, good three or four people I hope that by the end of this talk all of you will be interested in contributing to to the platform the platform was Founded in 2014 But it really took off in 2015 and last year in 2016. We have some great demos for consumers electronics show in Las Vegas and this is the the current stable version of a GL AGL is a project of the Linux foundation, but there are a lot of companies that are members of the project I took a screenshot from the website of Automotive grade Linux so you can have have a look at all the companies contributing to the platform It's a very very long list. I was so happy that I I was able to put all these logos in a single slide and after that I went to Twitter and I Found out even more members are coming. So Yes, AGL has a lot of members and new companies are joining the platform every day These are the top contributors of AGL the top 25 contributors. I took this This slide from waltz presentation who's sitting over there. He had a nice presentation doing during the AGL AMM meeting so you can have a look at the the number of commits that our people are contributing the companies involved and This this is this is of course just the top contributors There are a lot more companies and individuals contributing to automotive grade Linux In order to get familiarized with the platform we need to speak about the core technologies in it As you can guess each new Linux distribution has a lot a lot of packages a lot of components And this is just a small portion of the components in the distribution This I did this Based on my point of view so I might miss something that's really important But you know in a single slide I didn't want to put too much information The debate the most important ingredient in any Linux distribution Of course is the Linux kernel and the board support packages This is very dependent on the hardware to which you would like to get AGL running AGL as well as the Geneva development platform both use system D. So So I know that a lot of people are still in the discussion System 5 system D. But for a geo it's set to system D The bus is used for communication and it's important to say that the security model of automotive grade Linux is very special and It uses smack sinara and application framework So if you want to build a an image of a GL for a new board to port it for a new hardware device You should make sure that smack is enabled in the Linux kernel in the DevConfig of the Linux kernel smack provides Isolation of applications on kernel level and after that we have the sinara project Which was which is also used in other Projects such as Tizen it provides it is an open source tool for Managing privileges of application that are accessing peripheral devices So for example if an application wants to a third-party application wants to access a camera or something like this The application should have privilege to access it and sinara is the software for making Managing all these privileges and on top of the security model. We have the application framework which is Basically the way to develop the application and to connect them to the rest of the security framework within a GL Keep in mind that a geo has the security model as soon as later You will have to handle it when you are developing your applications or adding new components to the platform Soda client and oyster provides a software over-the-air updates I'm working on this project as part of the work that ADS advanced automatic systems and consulco group are doing for integration of this project it's it's interesting that this project exists both in Geneva development platform and Automotive grade Linux, so it's a good way to show the collaboration and how the components are used in this How similar components are implemented in this different distributions? Speaking about the graphical user interface We should mention that a geo is using Wayland. This is the displaced server protocol That is designed as a replacement of x11 and it's great that Automotive grade Linux is innovative and They have decided to use Wayland from from day one Weston is the reference implementation of a compositor for Wayland it's Western in a GL is working with IVI Wayland extensions and On top of this we have a user interface which at the moment is developed with Qt and QML HMI Qt and QML applications They were developed for the current version of the applications were developed for the consumer's electronic show in Las Vegas And they look pretty good actually you can have a look at them Today because there is going to be a showcase of a GL at what time is it old? Okay, so you can come to the a GL blue it and have a look at it It's really nice Alternatively if you want you can run html 5 applications. That's perfectly fine and for Streaming video or audio. We've got a G streamer as I mentioned a GL is a yok to open embedded based distribution therefore, it's important to say which are The meta layers within it So of course there is pokey pokey is the reference this distribution of the yok to project It's part of the layers included in a GL the special Agl layers are here meta Agl meta Agl demo meta Agl develop and extra We have the meta Intel IoT security layer which provides some of the recipes needed for building the security the security stuff in Agl and meta OIC is they Is the layer providing? interfaces for Iotivity this is a project open-source initiative for a project for connecting Smart home devices, so it's a good way to connect the these The connected car with the connected home and of course there is meta Qt 5 Which is needed for the Qt applications? I guess you're interested to learn which are the supported devices and Agl provides a long list of devices that are compatible Renaissance generation two and generation three boards are compatible. So our boards with Intel systems Intel CPUs like miniboard max and turbo as well as Intel Jue which was recently added there is a value board as well in the list of supported devices and on the bottom of the list we have Community supported boards raspberry pi two and three are both supported and Very personally attached to raspberry pi because I was heavily involved in the initial porting of Agl to raspberry pi Of course, we know that raspberry pi is not good for industry use, but it's a good enough to To have a quick look at what Agl offers. So if you have a raspberry pi Yes, you raspberry pi two or three. Yes, you have a board on which you can run Agl Dragon board as well as MX6 devices are also supported Agl provides releases Pretty much every twice a year the first release was in January 2016 and In the Agl Wiki you can find the exact dates for the scheduled releases up to the end of the year the current release that we are using in discussion is released 3.0 which was announced a month ago in January So now I would like to do another short overview of the Geneva development platform So there is a Geneva alliance which is looking after the development of the The distribution as well as the compliance standards for Geneva It's another distribution that at the moment is based on the Yachto project and open embedded How many of you have experience with Geneva development platform? Okay So Geneva development platform has a very very long history I won't go into the details because we have just 15 minutes for this talk So and it's a long long story. I'll just Mention the things that we have right now in Geneva development platform. The project was founded in 2009 So It brings a lot of stuff through the years These are the Geneva members as you can see there are a lot of companies from various fields contributing to the project car manufacturers tire one OEMs and These are the core technologies Used in Geneva development platform It's again just a small portion of the technologies used in the this Linux distribution Because as you know each distribution has hundreds or maybe thousands of packages And again, this is from my perspective from my point of view the components that I think that are core and interesting for this talk Of course, we have the board support package layer for the support it hardware devices that brings The bootloader and the Linux kernel version again. It's a distribution using system D Of the layers for Inter-process communication we have D bus as well as two projects which are Specific for Geneva common API and remote vehicle interaction interface. The solar client is again there. It's a it's a application That is currently written in the rest programming language, but it's being rewritten in C++ and it provides The feature for Downloading and installing updates over the year From the user interface we have again Wayland display Server protocols, so it's pretty similar to what we have in a GL We have Weston again This is the reference compositor of the Wayland display protocol and the applications are written in Qt and QML But although the same technology is used the user interface is completely different from what we have in a GL Just keep in mind that these user interfaces are just for at the moment for demo purposes so if a company wants to ship a product based on Geneva development platform as well as on the automotive grade Linux the user interface is supposed to be changed The structure of a Geneva development platform is very specific Therefore, I have a few slides With which I would like to explain How things work So the board support packages depends on the hardware on which Geneva development platform works There is Pocky the reference system of the Yachter project again Just like in a GL, but the difference here is that meta IVI is a layer That contains the Geneva baseline, which means that these These components that are here in meta IVI have to be compliant with the Geneva with with the Geneva standards Keep in mind this if you want to contribute anything to meta IVI The rest of the Yachter layers bring the HMI the applications and extra features of the Geneva development platform so in the next slide We have just a list of the Yachter layers that are exist in Geneva development platform Let's have a quick Look at them Pocky the reference system of the Yachter project meta IVI that we just discussed It contains the Geneva baseline meta Geneva dev This is the layer in which the majority of the development is going on Meta OIC again for Iotivity meta Qt 5. It's it's needed for 40 Graphical user interface and the Qt applications and Meta RVI for remote vehicle interaction The list of supported devices for Geneva development platform is Renaissance generation to and generation three boards Devices with Intel CPU like the open source hardware boards middle board max and turbo as well as raspberry pi 2 and 3 I did a photo of the user interface that you see when you launch Geneva development platform on Any of these devices this is what you see on the screen at the moment By the way, I forgot to say something very important even if you don't have this device or the devices that we Listed for a supported devices in automotive grade Linux. You still have a chance to run it Using Cuomo so even if you don't have the hardware you can have a look at the platform build it and play with it The GDP releases Are here so the next release is scheduled for April 2017 And the current release a JD Geneva development platform 11 was released in December So I would like to mention a few words about the sort of project just because I'm personally attached to it and I know a few details about its development So it's a complete open-source suit for uploading managing transmitting validating Downloading and installing software updates remotely to a fleet of vehicles. The idea is that Companies should be able to do this for millions of vehicles at the moment ADS advanced automatic systems are working on its development and Consulco group is providing some consultants services for the integration Within the automotive industry. Yes, please Okay, just to summarize the question to repeat it for the video The question is how it's actually the software over the year working in terms. Is it Doing partial upgrades or full image updates. Is this a correct summary? Okay, so the answer is that It is it is supposed to do full image updates using another open source to call it oyster so in general oyster is a project that was Initially created for GNOME and it's used in the continuous integration of GNOME The project is known as GNOME continues, but it's a great tool because it provides static deltas like a binary diffs between the images, so it's very convenient especially for the automotive industry and Ostr provides us this feature that we can download a smaller Files just the static deltas and apply them. So yes, it's a full image update But in the same time it's not using the dual partition strategy. It's it's Using co-estuary. Yeah, it's the advertisement of forestry is a git-like model for committing and downloading bootable system trees and actually even the commands that you use in oyster are very similar to the commands that you know from git The software over the air includes both a clan that is running on the embedded devices in the vehicles and a server that is supposed to be deployed in the cloud and Take the intelligent decisions, which version should be provided to the car and how to be installed It's important to mention the a GL developer tools Of course the main two is git all the wrappers are in using git and the Google repo tool is used to Put together all the git repositories of the meta layers that we saw in the previous slides That are combined together to build the AGL system So Garrett is another tool for cold reviews It's used in a GL as well as Jenkins for continuous integration. Basically if you do a new commit submit it to true Garrett Jenkins will take care to build this image Jira is used for big reporting. There is a wiki Which is currently based on doc wiki where we put some developer information and There is a new documentation side that is currently being developed Please know that this is these are not all the tools that we have in a GL But this is the majority of the tool So yes, there are additional open source components that are used as developer tools within a GL and this afternoon the on Simon is going to have a very interesting talk about the integration of Linares lava project for the continuous integration of a GL you can have a look at it as well and Now we are coming to the core of this talk It's how can you contribute to automotive grade Linux and how you can contribute to genie development platform? We're starting again with a GL first so The workflow is very basic It's quite standard for I would guess any software project First you have to identify the issue on which you would like to Work it could be a bug fix. It could be a new feature. You have to report it in Jira so other people can see it after that you should grab the source code modify it and when you are ready With your commit make sure that you are adding a reference to the Jira issue in the git commit messages Finally, you should contribute your change to to the upstream using Garrett of course if there are some remarks you might need to change a little bit things and to resubmit them again Are you familiar with Garrett? Have you used Garrett? Okay, almost everyone. It's one of the most popular ways to contribute to bigger open source Projects and even not open source, of course It's a free and open source web-based team collaboration to perfect for code reviews The first step that you should do to get started and to contribute to a GL is to go to identity dot Linux foundation dot org To create an account and to get started This is the basic workflow So it's a It's a standard workflow for Contributing through Garrett. We have the AGL rappel there. So the developer is supposed first to To pull all the changes from the AGL rappel on his local repository then to modify some Some files depending on the issue on which he's working and After that to push them back to Garrett and at that moment Garrett will create a ticket within its web interface from which the reviewer can have a look he can fetch the code he can make commands and Approve it if it's okay to be merged the best part in Garrett is that all the other contributors can vote for the change they can Provide positive or negative votes. So this is also a nice feature that Garrett offers because this way a lot of people can Work together and it's very good for in terms of community so if the If the reviewer and the maintainer have no remarks He will approve the pending changes and they'll go to the AGL repository So this is an example that I wanted to show you This is a real commit that I did a few months ago We still have some time I'll tell you the story quickly. So basically on Raspberry Pi and some of the renaissance boards I think it was renaissance Porter board We had this issue that Western the reference system the reference compositor for Wayland was not showing up with the HMI applications if there were if there were no input devices attached to the board and it appears that this This was actually a feature of Western because in a desktop environment It doesn't make sense to have a board without input devices without a keyboard or mouse but in In in a demo for automotive distribution. It's a little bit different. So we had this Complaints from people coming through the mailing list that they were booting AGL and nothing was showing up on the screen I did a research and it appears that This was part of the implementation of Western. So I did a patch which is specifically for a GL that fixes it So this is the patch you here if you have a look here. We have this reference to JIRA, so I Reported the issue first in JIRA to to generate this ID spec 297 after that I put it in my git commit message and this is the change ID That is generated by Garrett. Basically when you are checking out the source code from Garrett You'll get a hook that generates these IDs and if you somehow Forgot to do it Garrett will take care to do it even if you push it without the change ID something will be assigned automatically so How to get started and what are the communication channels? There is a mailing list So if you are not part of the mailing list, please join. Are you members of the mailing list? Already a jail mailing list or just a few of you. Oh, please Come and join. There is a weekly developer call that Walt is doing each Tuesday So we can join and we can collaborate together. The best part is that it's It's using go-to-meeting. Yeah, which which runs on the Linux. That's so good very convenient for developers and Of course, we've got the RC channel, which is automotive at freenoad.net It's a collaborative channel for both Geneva and automotive grade Linux So if you have a quick question or if you have an urgent question RC channel should your should be your first shot So the Geneva developer tools now, let's have a look at them although the majority of the core components that I listed in the previous slides are quite similar the approach for Contributing to Geneva is totally different. Of course again get us the the source control system, but Falling some major changes that happened in the last year, which were done by the team of From cold thing working on Geneva development platform now Contributions are accepted through github with the github pull requests We're gonna see this later on on the slides for continuous integration Geneva is using a tool called go CD The book reporting is done again in Jura, and there is a wiki Which is the confluence wiki provided by Atlassian so the workflow for contributing to meta Geneva dev is the standard workflow that pretty much everyone know from GitHub first, of course, you have to report the issue in Jura this way you have a reference to you can have a reference to it when You are submitting your git messages Then you have to fork the the project in github To to clone it locally to modify the source code to make the new feature or the book fix on which you have reported in Jura After that to include the reference to the Jura issue in the git commits Git commit message and after that to create a github pull request where you can discuss the change with the maintainers So I did a diagram just to show this process again So it's fork edit commit after that push create a github pull request Of course the push is in your local fork in github After creating the github pull request There probably will be some commands you might need to change something So if the maintainer provides you some recommendations, just go again edit commit again Don't worry. It's a standard procedure. Not all the patches go from the first time Just please be patient and follow the instructions provided by the maintainers and here is another example of a git commit message that I created again a few months ago and Do you notice something? It's exactly the same problem that we had in a GL I was working on Genevieve development platform with Raspberry Pi and I noticed that well, we have the same issue here It's again the issue that I explain you with the input devices what wasn't starting if there were no input devices. I Included especially this commit because I believe this is a good example How the projects can work together and how the projects are from time to time facing the same issues So the of course commit has to be signed off This is valid for both platforms here is the reference that we have to the Geneva Jira Jira issue so This is the exact number with it and this has been committed from a true github. So this is actually screenshot of our area from my web browser so Contributing to meta IVI is a little bit more Different because as I mentioned meta IVI contains the Geneva components that are part of the Geneva compliance specification In order to contribute new components or to update versions of the existing components You should have them part of the Geneva compliance Specifications if you do an update to a version that is not part of this compliance Probably the patch will be rejected. I have been there done that so my advice is to double check the specific the Geneva compliance specifications before making any changes to meta IVI this will save you some time Just go to the mailing list and ask if you're not sure Again, the the git commit messages has to be signed and they have to be submitted using the meta IVI mailing list Using the git send command. It's a different workflow for contributing These patches but meta IVI and meta Geneva dev have different maintainers Currently people from Wind River are looking after meta IVI While the team from Pewajicor is looking after meta Geneva dev This is a Simple example to show you how you can submit the patch. It's a little bit different from github but again It's a well-known procedure for submitting patches through git send mail and the Geneva development Platform has its own communication channels. There is a mailing list. I ask this about HGO But how many of you are subscribed to the Geneva list? Okay So don't hesitate join the mailing list There is an open call That is that take place Wednesday the one for a jail is on Tuesday the one for a Geneva development platform is on Wednesday So there is no conflict in terms of times Unfortunately for me because I'm a Linux user as a developer my laptop is running Kubuntu The Geneva development platform is using Webex for Making these calls in general Webex can run on the Linux, but it's quite tricky to do it So you either have to install something that's 32-bit or something or use another device for example Android Something that's not that open source and the RC channel is the same just as for automotive grade Linux It's great that we are all together in this RC channel all the time So join the automotive RC channel and ask any urgent questions or provide help to people that are asking urgent questions So, thank you very much. The slides are already uploaded The website of the event I have put them in slide share as well And we've got like 10 to 15 minutes for questions and discussions Yes, please Okay, so the question is what is the relationship between Geneva development platform and automotive grade Linux It's a simple question with a very tough answer because it involves a lot of politics and I'm a software engineer So you're putting me here in a hard situation Well, I guess in term in marketing terms. Yes, they are competing in terms from technology They have some similarities there. They have some differences is You saw the the list of core components and the list of supported devices so we can you can do the the math and compare them So a GL at the moment is more cold first so it's a GL is having a Very rapid development nowadays while Geneva has this compliance standards that I described in Geneva baseline and met idea. Yes, of course Okay The question is are there specific areas Geneva versus a GL right another tough question Well, let me think about it I'm not feeling very comfortable to answering to such question because I don't want to compare The two platforms in from the point of view of marketing I just wanted to show you how you can contribute to both platforms since I have this experience. Yes, please Okay, let me summarize the question Yes, the question is about the AGO steering committee. Yes, AGO has several layers of management The steering committee is on top of that them It's gain up a little bit of a politics question that I'm not sure that I can provide exact answer But I'm sure that what can so probably his talk could provide you more details about contributing Everyone can contribute companies or individuals. Just create an account. It's totally free It's easy to do it subscribe to the mailing list and you can get your changes there if you're not sure About anything you can ask in RC or join the weekly course on Tuesday Yes, please. Oh Excellent question. So the question is how closely is the upstreaming with the Yachter project and open embedded like Pocky and meta OE Thank you very much for this question because I had in mind to mention this and I forgot to say it The Yachter project has a six months release cycle So every six months there is a new release and the current stable release of the Yachter project It's called Morty. This is version 2.2 and Both platforms are trying to stick to the to the newest releases. So as soon as there is a new release of the Yachter project Automotive grade Linux and Geneva development platform are updated accordingly To the to the release schedule that they have Other questions. Yes, please Okay, are you asking for a specific Agio, okay So let me repeat the question for the video. The question is is Agio trying to dictate The version of the Linux kernel and the answer is no The Linux kernel as well as the bootloader depends on the board support packages From the slides with the supported devices in Agio I mentioned that we have some vendor supported platforms And we have others that are community supported such as Raspberry Pi So it depends on the board support package provided by the By the hardware vendor or the community looking after the specific device that it supported Of course, you have to keep in mind that it could not be very old kernel because you have to use systemd which requires some C groups and you have to use CMake but Pretty much any modern device has these capabilities or I hope they have it. Yes, please Okay Okay, so let me repeat the question again So what is the philosophy for contributing upstream to the projects to the core open source projects that are used in Agio, right? so Based on the example that I gave with this Western patch Depends depends on the patch the current patch that we had a look here is for Is for Western the versions of Western used in the platform By the time when I did the patch Agio was work using Western 1.9 and Agio was working is using Western 1.11 So the patch is not upstream because it's very specific. I'm not sure it works well for the desktop use case it's very specific for the demonstrations of both two platforms on these devices and Western is moving forward with the releases basically the the platforms are following their release the versions of Western and Wayland Set by the releases of the Yachto project and open embedded. I Hope this answers to the question. It's it depends on the patch For the specific patch in the newer Western versions, they already have a configuration to enable or disable this So it was not very appropriate to submit it upstream. Yeah Any other questions? Yes, please Okay, so the question is About Western. I just provide a few details before repeating the question Western has a configuration file called Western.ini and the question is Why do you have to set resolutions at the Western.ini file? It's a question that is valid for both platforms since both platforms are using Wayland and Western and The answer is that it depends on the supported supported monitors It's a little bit tricky to have everything working in full HD on all supported devices with the touch screens So both platforms have a list of supported and preferred Touch screen devices. It does not mean that you cannot use them with other devices. Yes, of course you can but for other devices you might need some additional efforts and Yes, the Western.ini files contain this specific configurations in terms of Screen resolution depending on the supported hardware. So it's a kind of a hardware specific solution It's pretty much how it's done because the different devices that are supported have different hardware capabilities. Therefore We have BB append files that extend the basic recipe and overwrite the Western.ini file. I Hope this answers the question and thanks for you. Any other questions? Okay. Thank you very much for joining the talk I hope you enjoyed