 Okay so let's do the birds of a feather. I was kind of hoping there's a few more birds here but maybe I'll turn up in a few minutes. Okay so this is what I put on the abstract when I was submitting this talk. So ASP developers are many but widely dispersed so we don't get a lot of opportunities to get together and share ideas but here we are. So the mic is open for anybody who wants to contribute. This isn't about me but I do have a couple of ideas. So this is my kind of outline agenda. Happy to add things in as we go. So these are the topics that I really wanted to or thought would be great to talk about. So top of my list is community. How do we get some kind of community behind ASP? So I've got a couple of slides of that and we'll come on to that moment. Then other topics I thought of is where do you go to get information about ASP? Is it source.android.com or is it some people you happen to know or is it some magic link that nobody else knows about that we all should know? And any conferences which cover ASP topics would be great as well. Any experiences on porting ASP? So issues to do with board support packages? Which build tag do you use? Actually that's the next topic but how do you find a good version of ASP? And then there's the final thing. What are your main grumbles about ASP? Don't this to be particularly negative but there are pain points. So what are the pain points that you experience and do you know ways around them? Do you know where the near-refen is? So just to get things rolling then I just want to do this slide and the next slide and then we'll kind of open it up a little bit. So open source really in my opinion is at least 50% but it's 90% community. The whole point of open source is that there is a community. We can come together. We can share code. We can communicate about things. We can share bugs. People can post patches and so on and so on. And the way that ASP is structured none of that happens or at least none of it happens easily. And I'm going to call out Google here. Google a little bit absence here. So there is this community page which hopefully this is going to work. So Android community and contacts. Somewhere there's some ASP stuff. Android.com. Yeah. So what I was going to say, yeah, groups you go. So there are a whole bunch of groups like Android platform, Android building and whatever. But if you go to these groups there's basically nothing happening. And that kind of bugs me. Oops, wrong way. Yeah. It would be nice if there's a little bit more interaction on this or if we could set up some alternative mechanism. I really would like that. So there we go. So questions. Why don't we talk to each other and how can we make it better? So does anybody want to contribute on this? I have a mic. So thoughts. How can we build a community? I don't really got any magic ideas on this. Anybody? Burn it. So from where I stand, I think there's a big problem for ASP and that problem is called Google. And what is really needed is more open project that follows ASP closely, that copies every line of code from ASP, but that is more useful as a standalone project. So if you try to put ASP on your phone, you will find that you cannot really use it because it's missing even basic features like an email client. And there are open source tools that can fill in all the gaps. I'm using an un-Googled phone right now and not really missing anything. But what is really needed is putting ASP and all those projects that turn it into something that is actually useful together and then try to build a community around that while also trying to be somewhat less ignorant about community issues than the upstream ASP maintainers. And of course the idea there would be to not really fork ASP, will keep all the code that is there as it is in ASP, just pull it in and build a couple of extensions around it that are pulled in through a different manifest. Maybe having the completely usable system will already help more attract more community members. Isn't that more or less what Lydia, Joes, do already? In a way it is. My criticism of lineage is that they try to fork it too much. There's quite a bit of divergence from the code base. There's no way whatsoever that all the changes that go in there will ever be much back into ASP. So what I am suggesting is kind of similar but trying to stay closer to the ASP code base, trying to upstream patches that make sense. Yeah sure. The issue with forking, we for sure could do that. ASP is open source, we can fork it any time we like. But then once you've made the fork then what do you do? That's always the point where it falls to pieces. Because you have to follow the ASP because everybody wants the capability, compatibility with the later versions of Android. You can't just stick with Android 4.4 KitKat, which is actually my favourite version of Android. But no, you've got to keep on going forward. So it's a great idea. I fully support it but it needs quite a lot of effort behind it to maintain it. Right. That's why I think it needs to be brought up at a session like this to see. Absolutely, yes. So if anybody wants to do that, I'm totally with you. Yeah, in fact to some extent I have done it, the code for it is flying around on a Git server in my cellar so it just needs more people to look at it and maybe a better place to host it. Okay, well if you can post a link to that or tell me and I'll write it on the slides. That'd be great. Yeah, sure, we'll do that. Yeah, yeah, if you scroll it down, I'll put it on the screen. Okay, super. Yes, so I come from also like the Google free Android community and from my point of view like contributing to AOSP, it is not really clear how to do that or if you can even do that and when you maybe find the right Garrett whatever project and you submit a patch and then it just sits there for seven years and the bug is still unfixed. So that is I think a huge problem and then you have the various like Linear.js is one fork that maintains their own tree. They're also quite closed. I don't know anyone from that community. That's a good point as well. So it'd be great if Linear.js, if anybody happens to be watching this, were to join this community or at least be a little bit more open. And there's various other projects that build on top of Linear.js or AOSP, other custom ROMs, other companies that sell phones with less Google integrated into Android and they all maintain their own like framework trees tracking AOSP or whatever upstream they have and then they have a bunch of patches and a bunch of bug fix patches and you kind of move them around Garrett instances like they picked that from this one and we also need this bug fix and it's all a mess and it sometimes or mostly never makes it up to AOSP because it's too complicated and so I don't have any solutions. I just have problems, I guess. Yeah, I hear you and I'm gonna have a complete solution either but maybe a quick suggestion. Most of the Git projects in AOSP have a file called owners which has a list of usernames who are allowed to merge into that particular Git project. So typically when you upload a change to Garrett, it doesn't get assigned to anybody which is horrible and there should be an auto assign but you can figure out from that file who has the permission to make that decision. So you know assign it to them, maybe send them an email if they don't respond but at least there is a list of maintainers somewhere. It's not much but at least something. Okay, that'd be cool. And maybe just to add to that like I guess even if you would do that like with some projects maybe you would want one get your patches merged in because like the product timelines there are other things that are happening behind the scenes is not just because we're assholes but sorry I shouldn't have said that but like maybe in like instances like this having a prioritized community list of like here are the biggest pain points with the CLs or like bugs or like some sort of description and then using this as the venue to get like the top two or three or five fixed might be interesting. Okay, other thoughts I guess. So adding on top of what David just said and nowadays get it automatically assign the owners. I've tried it a few times so the owners get assigned automatically with the new version of get it maybe. I don't think it does it for all the projects but yeah it does for some that's true. So I'm just making a note here I'll be with you in just a moment. I have a question and the question is sort of like what are the projects that people feel like they need to modify the most or have most changes against and then the follow-up would be why is that? Is it because the projects are not designed in a way in which you could interface quite easily or is it because functionality is missing? So I guess from my point of view the things would be so basically the low level stuff so bug fixes to house bug fixes maybe to the Bluetooth stack which is somewhat buggy in places. Basically it'd be really really great to at least to start with if we were just able to fix bugs and have a workflow and a strategy for doing that. That helps everyone and it should be pretty much no-brainer. The problem is of course that the internal team developing Android are probably working on a different code base to the one we're working on so there's always going to be some mismatch. But there is a there is a kind of solution to that which I think John Stoltz recommended is that there is a period which he called the merge window directly after the release of the next Android release and before they start the next version. So at that time sort of September Octoberish time is probably the best window to get stuff merged upstream because the Android developers are kind of merging their stuff into main at that point and they're much more it's much easier for them to to merge in external changes. So another idea then go for the merge window do stuff September October. Does anybody else have experience in that? Have you tried different periods? Does it work better at some times of the year than others? So our changes are very small in nature so we don't try to push too many changes to its internal projects it's like 10, 15 at max 50 lines of code just the bug fixes. So our experience with ASP is rather good maybe it's because we have been involved with ASP for last 10 plus years so I don't know if that helps the contributions and other things but this merge window thing is I have heard that too that but sometimes if you do it just at the time the release is dropped then it takes about a week for the things to settle down but if you try to sync or download or sorry sync or build it doesn't even build at times. So even they are still free because merging Android release tag in ASP gets very complicated for certain projects because as you mentioned that for the release they are working on a totally different code base and it may not align with ASP as such and there could be merge issues and we have run into issues where it takes about two or three weeks for things to settle down and okay now the ASP is bootable. Okay but there's still a period I think once that settling has happened before they basically take a snapshot of main and then start the next round of development which I guess happens towards the end of the year so there must be a period when the code bases are kind of a little bit more in sync. Maybe somebody at Google should kind of publish this maybe this should be made to kind of common knowledge seems like a reason maybe they get too many patches that way though so we should keep it quiet. Okay okay anyone else otherwise I want to move on to another topic well actually not quite but yeah maybe I'll just add to that a little bit. I think two things was one of the most I think Christy mentioned that Google might be working on a different source base at given times that might be true for kind of the more product oriented grid repositories kind of UI and application level but it's definitely not true for the layers of the stack right the kernel, a Selenax, all the kind of base in its scripts all of that is developed directly in OSP and actually merges into the internal tree from there. But are they working on the master branch or are they working on the master branch? That's on master okay so those lower layers we're seeing the exact same thing as you do okay and on the timelines yes September is usually the drop of the the latest release but that is after some period of stabilization yeah so especially if we're talking about these lower layers they're usually developed in OSP around you know maybe one to two quarters earlier so winter is usually the busiest time and then things start to stabilize so gradually. Okay right so that would argue for maybe targeting late spring, early summer as they as a good time to emerge okay interesting okay okay great thanks for that. Ideas for making it better so I want to kind of move on a little bit away from the interaction with Google and think more about the interaction between us developers. And so I've got a blatant plug here which I guess you guys are aware of this but let's do it anyhow the the meetup so this is something I put together just over a year ago with the aim of creating some kind of community and it was it was a bit of a shot in the dark but it's something I've been thinking about doing for years and years and I keep thinking to myself somebody's going to do this if I wait long enough somebody will do it and then I finally realized that actually it's going to have to be me so I actually put this together it's a little bit amateurish I'm not the most organized person in the world for doing this kind of stuff to be honest so I put this stuff together and it is a meetup so it's an online meetup because you can never get enough people together in one place to make it work as an in-person meetup but it seems to be quite successful we typically I mean that the group has 350 members right now the meetups would typically have 30 35 people turn up online and many of the faces here have been present there and I very much appreciate that so this I think is I'm quite pleased with the way it's gone it's been more more successful than than I might I feared it might be and it's turning into quite a good resource here I'd like to somehow publicize this so at the moment I just have a list of past talks this needs kind of organizing and kind of categorizing a bit and also when I look at the the stats of the videos on on YouTube um yeah we don't get a lot of hits to be honest the most popular talk it only has about 300 views so I'd like some ideas of how do we get this information out people ought to be there's some good stuff there there ought to be more people watching this stuff so I'll open that up in a moment um but the other the other thing I'd like to look at is that this is great it happens every every two months and a bunch of people get together and we chat for a couple of hours about this and that and it all goes really nicely um but at the end of that you know it it kind of shuts down and then nothing happens until the next meetup now okay that's the nature of meetups but what I was looking for is is some kind of thing where we could keep the ball rolling in between the the the meetups some kind of community so if anybody has any ideas about that again that would be very very useful and I'm very happy to kind of work on that so first point then how do we make this stuff more more more more known um it's so I am part of another community which does pretty much the same thing so the first thing would be to merge maybe similar initiatives to begin with yep sure so I think you are also part of that IRC channel right asp-developers I am I was looking for the link to it yeah so it is not this page which is a mistake yeah carry on I'll find the link so what that project does is so right now it is mostly phone-specific so a bunch of people trying to run asp and write open source project not the release tag it's the the asp version on form factor devices on phones so I know that they are running it on SDM 845 SoC which is called count couple of them uses it for SDM 600 series phones as well and the reason they are doing it is because free dinner right the graphics is open you can run AOSP you can run upstream kernel post market OS is something which is different than AOSP but we I mean not me but there are a bunch of developers who are you know twin timing between AOSP and post market OS development so we get to share the features which are being supported on both side of the ecosystem so maybe there's a good opportunity here to collaborate on your project and asp mainline project or any other project if there are any and this is just phone specific right I'm hoping that should because you have if you have seen my talk this morning the dev board requirements in asp is getting very strict nowadays so should we expand this project to include the dev boards as well this project yes so this plus your one and throw in development boards in the mix so this one only talks about this is john this is john's uh page which looks very similar to my page I know I apologize that I did steal a lot of his ideas so I'm saying that yeah these two projects when you both are talking about the same thing right building a community around AOSP people using AOSP on their devices be it development board be it phones tablets whatever device they could find I I mean it would be really great if we could have more dev boards more embedded conversations on on this so I mean essentially this is mostly about the the IRC channel I think so if we scroll down a little bit come chat with us does this work I think it works so I think okay it's not a work yeah so we should definitely so one one thing I never one thing I have not set up is any kind of IRC or chat or whatever and that's a big mistake on my part um so maybe we should come together yeah I'm more than happy to do that I did kind of I spoke briefly with John Stoltz at Plummer's last last October whenever it was and we kind of said we'd do something and we both said yeah that's a really good idea and then neither of us me in particular didn't follow through on that so I will take that I will send an email to John tonight and say maybe we can kind of do more than just cross-link and actually do you know do something together um but yes and also as a follow-up to that I really would like to do more kind of embedded Android so I define embedded Android as being Android not on a phone so as we all know Android ends up in all kinds of weird places um in pizza ovens I happen to know run run Android and um Garmin use it and there and there are navigation systems for all their yachts that's that's all running Android and security cameras and all kinds of stuff so there are thousands and thousands of products out there running Android embedded Android uh that kind of nobody really knows about um and I speak to people doing these things and they all have the same problems they all kind of you know how do we build a thing how to get the platform to work how do I access the GPIOs how do I how do I add in a SPI or an I2C device and talk to that from my app you know all kind of basic stuff that should all come together I think because you know like it or not this is how Android is used and it's it's kind of in a lot of people's minds it's kind of a replacement for Windows CE so Windows CE is kind of you know it's dead what are you going to use instead Android that's the way the world goes um okay so okay so we've got something positive there so I'll get in contact we'll see if we can do a bit more together on these two uh two projects um oh yeah yeah so this is this is me being lazy so I set up a slack workspace turns out slack is a really bad tool for this kind of thing I need to get rid of that sorry slack but it just doesn't work mostly because unless you pay them big dollars they they they're the it you know the messages are deleted after 90 days which is a bit silly well okay from my point of view um oh yeah and a quick plug as you probably all know the next meetup is 12 which is only a few weeks away and I sure I don't have any talks arranged so come to me afterwards if you've got any ideas for for really interesting talks otherwise I'll have to chase you up individually what is a os a a os actually ah okay that's a secret um so that is android automotive os so it's a usp on android and it's one of the cases where the the acronym a os is harder to say than android automotive or android automotive or android automotive os um but yes the thing that that you know poll star put into there their poll star two cars and such and the meeting is virtual or in a physical location it's it's virtual yeah i mean it wouldn't work um any other way because there are people from all over europe and from india and from usa and all kinds of all kinds of places yeah i'm also part of the community of open source android developers but mostly on the like system framework ui to app level so but there's some overlap i guess yeah so i mean the the reason i called it the a osp and a os meetup is i did not want android to be in the name because as soon as i put android out there on meetup.com i'll get tons of application developers piling in and i this is not about the applications this is about the os so that's why it's named slightly obscurely in that way so this is very much the operating system okay um moving on from that okay next topic so how do you find out about a usp what are good resources for a usp so the obvious one is sourced android.com but as we know that well i mean sourced android.com is kind of great but it's also a little bit random and a lot of the stuff is out of date so where else do you go can you can you uh microphone so i would say cuttlefish get logs okay that's i mean i would find very good information there why they are doing the change and then you can realize whether you want that change in your device or not so this is once you already have a device set up and if you want to do some modifications or keep track of what is happening in a usp framework level which you may want to change or incorporate in your device config so i have always find a cuttlefish uh get logs very useful in that case okay that's great because i mean um a related thing to that which i think i come to in a moment or two is if you're if you're porting android to to new hardware what do you use as a reference platform um so i i've got you know some something pie board which somebody's just given me and i want android to work on that where do i start where where where what's the configuration i should i should kick off with cuttlefish would it be or i would start with cuttlefish i would start with cuttlefish i mean we don't do that ourselves because we have a device config so we just keep piling things on the same we reuse the same device configs but if i have to start on a new board today then i would start with cuttlefish yeah cool because there are a lot of build configurations which are some of them are very legacy uh for 10 years 15 years old uh board config file board config variables and which i still see them getting used in certain board config files but those configs are no longer valid but people are using it because someone has used it once and people keep following the same set of configurations and we were talking to some of the cuttlefish developers once and they told us that they do keep track of what build variable is currently being used and what is being deprecated so if something which they're using in their board config file or device mk file so any kind of common configuration which you can make use of then you can rely on that okay that's good to know because i must admit when i'm looking through uh board configuration files quite often you look at stuff and you think that doesn't do anything anymore why why is that still there and that's because they just copied and pasted from somewhere else um exactly yeah so i didn't work on it for a while but i usually looked at the latest um google phone that um for for android 10 i think it was the pixel or pixel two or something and i started from there and copied the stuff from there because i figured it would be the most up-to-date and current way to to work with it okay cool um yeah so what again information coming back to this anybody know of any good kind of blogs or anybody who is writing stuff about a usp apart from things we've already spoken about so you can go to stack overflow and that there's there's some random stuff there some of it's good some of it not so so i find the google groups helpful too at times you do i've never got an answer on a google group maybe i asked them the wrong questions this is a strange one but there's a there's a guy named michael who keeps probably scouring through the garret all the time and i actually learned i actually learned a lot about new features from his tweets you write actually yes um michael raman yeah am i right yeah uh yes i i i do follow him and uh he does come up some really good stuff i i've never met him in person which would be an interesting thing to do okay okay that didn't work um okay another bug bearer mine then is when i do my repo sink and whatever how do i know that what i've got is a good version of a usp because quite often you download bsp and it doesn't build or it builds but doesn't boot or whatever and this is especially an issue with the android automotive stuff a usp a usp obviously is working on a different release cadence to everyone else and so trying to get an a usp build to work sorry i'm trying to get an android automotive build uh to build and boot is a little bit hit and miss in my opinion does anybody so how do i know so i i guess to to simplify the question a little bit when i look at the build tags uh for the android manifests how do i know what they all do they all say uh this this is updates for pixel seven this is pixel six whatever what does that all mean how do i know how do i decode uh those build tags and know which ones i should navigate to anybody have any magic here so you're talking about the builds from ci dot android dot com right or i was talking about the builds from um from yes from from google source dot com just the just the canonical um i'm talking about the pre builds or you're doing a local build i'm talking about the a usp source code with the local builds right yeah so when i do a repo thing repo when i do a repo in it and repo saying when i do the repo in it you know what what what should i what what branch should i give that so i'm mostly on master branch and what we end up doing is at some point we were maintaining a list of known good manifests right that's what we need so we were doing it but then we realized so uh after that we pivoted to having daily builds so now what we do is that if something breaks today i'll go to my daily build page download the two days older build and see if the issue is still there or not if it is not then i know that this a usp bug is being introduced in last two days and with our daily builds we published the manifest files so i have a manifest file of two days earlier two days which was there two days ago and today's manifest file then it's like a manual thing right okay which projects got changed then okay so i'm gonna solve your problem but maybe a tool that you might not be aware of there's the ci.android.com where we do continuous builds with some basic testing on cuttlefish i think so at least we will tell you whether this is a build that boots and when you open the artifacts for the for that particular build it has a manifest.xml which is a copy of the of the manifest but it has inserted the comet hashes of the individual good projects that were used for that particular build so you can sync to that and you should have the exact same checkout as was used for that particular known good build okay that's cool um it's in the artifacts so i uh we only got another couple of minutes left but um so following off from that i i've i've always kind of avoided the master branch because it's unstable and i'm not quite sure what it's going to build or whatever but also it's not so as i'm teaching android people don't really want to know about master they want to know about the currently released version which currently would be android 13 or maybe even earlier versions a lot of people are still working on 11 or even 10 so i tend to want to know uh i tend to work with with tagged releases because that's that's that has version numbers that people recognize if i start teaching people about master well for one thing i'd have to update my slides every day which i don't want to do um but it's it's not stable enough for most uh most of my customers okay and we have a couple of things okay we probably don't have time to do this the grumpy developer so i i plan to do this but i think we're running out of time uh i was going to ask you to give a give me your your favorite moans about uh about android so we have time for maybe two so anybody want to yeah what was what was what's the worst thing about a a osp nobody wants to commit okay so this is not really about a osp as a whole but for for example bionic is a very interesting project it would be useful outside of android as well but it's pretty much impossible to rip it out of the android tree to build it in the context of some other learning system that happens to use bionic as well oh i've never tried doing that yeah i've tried doing it as part of researching different libsi implementations but uh but it's no it's certainly doable if you invest a lot of time but then five days later they modified the build system again and then it's broken again yep yeah now that so it would be really nice if some of those projects that are part of android could be modified to make them more usable outside of android as well i think that's true and i i i think we kind of come into the end here but i my final plea would be to make android more modular android is this huge enormous monster which kind of gobbles you up um so if if there's one thing a google could do to improve android they could split it into smaller pieces and make it more modular and more more more rebuild rebuildable and so on okay um so i think we're out of time there so thank you all very much for contributing that's been really great and um yeah don't forget we've got one more talk on the asp track um chris haze from mem fault is given his talk on debugging android uh just before the closing game so whatever that is i still haven't looked at the time 1640 i think meanwhile thank you very much enjoy the conference and see you around