This is awesome – thank you for noticing and bringing this up, Sebastian! I'm on board and I filed a meta. [1]
Since Sebastian is PTO for the week, I'll give a quick skim and see where the most actionable and high impact areas are and file a few bugs. You're all welcome to file bugs as well (especially you, when you get back Sebastian! :P). - Mike [1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1202076 On Thu, Sep 3, 2015 at 10:46 AM, Nicholas Alexander <[email protected]> wrote: > Hi Sebastian, > > On Thu, Sep 3, 2015 at 2:11 AM, Sebastian Kaspari <[email protected]> > wrote: > >> Hey everyone, >> >> I remember when I joined Mozilla Michael asked me what's different >> working here compared to working at other Android "companies". Back then my >> answer was: The build system! Because this was so obviously different and >> maybe a bit painful at the beginning. Since the build system gets better >> almost every day (Thank you nalexander!) my answer today would be: The big >> effort we are making to ship multiple variations of our UI to the different >> Android versions. >> > > I don't have direct expertise in maintaining these UI variations, but I > would like to pile on that this type of unification is a Good Thing, and > I'm happy Sebastian has raised it. > > >> Two examples of what I mean: >> >> 1) The overflow menu. In Firefox: On most modern devices it's in the top >> right corner. On Gingerbread it's a simple, old Android menu triggered by >> pressing a hardware menu button. Then there are some devices with Android >> 4+ and a menu button. These devices get a menu that shows up from the >> bottom of the screen but has more features like the overflow menu. And I >> wouldn't be surprised if there are even more variations. :) Touching this >> code is not always easy. Writing UI tests can be frustrating because you >> have to handle all these variations (even though we do a good job hiding >> this behind components). >> >> 2) Themes: We have a default theme that derives from Android's default >> theme (Back then this could be anything, including funky variations shipped >> by the device manufacturers), a v11+ theme that inherits from the Holo >> theme, a v14+ style that overrides some styles and a v21+ theme that >> inherits from the Material theme. In addition to that we define styles in >> default, v11, v13, v16 and v19. Some styles are inherited from previous >> versions and some are overridden. I recently tried to change the v21 theme >> and I couldn't follow all style paths because of the complexity. >> >> On the one hand, I'm impressed that we have been able to maintain this >> and are shipping a Look & Feel that matches the one of the particular >> platform very closely, but on the other hand, I don't know of any other >> popular app that does that. Instead they ship the same (modern, now: >> Material) UI to all devices with the help of the support library and >> appcompat library (And nowadays the Android design support library too). >> >> Some examples: >> * The Toolbar API allows us to have the same ActionBar behavior >> independently of the Android version we are running on (vs. maintaining >> different menus) >> * The appcompat library comes with a theme that resembles the Material >> theme on all Android versions (as good as it can). This allows us to use >> and adapt just one theme. >> * We are maintaining some custom components that we could replace with >> feature richer and more tested support components, e.g our >> TabMenuStripLayout >> >> But of course there are some downsides: >> * We already include the support library and the appcompat library (at >> least for builds with MOZ_NATIVE_DEVICES set) but not the design library >> (bug 1189306). We don't need it yet but it will grow the APK size. Even >> though proguard might be able to reduce this a bit. >> > > The AAR is 200k, of which almost all of that is classes.jar. It's worth > investigating the impact of Proguard further, but using this design library > sounds like a great idea. The more custom code we replace with upstream > code, the easier it is for new engineers to come to the code base. > > >> * Shipping the same thing to all devices with the help of support >> components removes the advantage of possible APK size reductions by >> splitting APKs by version. >> > > In some ways, yes. In others, no. We do need to be aggressive about > guarding features across APK splits. > > >> Okay, this mail got longer than I thought. I wanted to write it for some >> time to hear your opinions but now that I saw a new bug about inheriting >> styles from AppCompat (bug 1201206) I wanted to get it out. :) >> > > Thanks for this email. I hope that mcomella, mhaigh, and others with more > informed opinions will weigh in here to set public direction. > > Nick > > _______________________________________________ > mobile-firefox-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/mobile-firefox-dev > >
_______________________________________________ mobile-firefox-dev mailing list [email protected] https://mail.mozilla.org/listinfo/mobile-firefox-dev

