> It appears to have gotten so bad that they moved the entire issue tracker over to Bugzilla and moved the repo to a new GitHub repo to hide just how feature poor this browser is.
The move to Github with Fenix probably happened because all the cool kids are hanging out on Github these days and they were hoping to gain some additional outside contributors that way. On the other hand, while Github's UI is in some ways possibly a bit slicker and more polished than Bugzilla's, Github's issue tracking is still lacking some notable features that are present in Bugzilla, like proper dependencies between individual bugs. Plus development of Gecko and GeckoView still happens in Bugzilla, so while using Github for Fenix might make things easier for outside contributors, it also introduces some additional friction for Mozilla's own developers.
As for the repo move – from what I remember around the time that the whole GeckoView thing started, they (or at least certain product managers) were dreaming of being able to develop figuratively (or maybe even literally) dozens of little special-purpose browsers along the lines of Focus. Like one special privacy browser (i.e. Focus), one special browser for watching videos, one for… I can't remember actually, but maybe for online shopping, one for doing "research" or something like that, and so on, and so on, and so on.
That's why the old Firefox actually got split up not just two-way, but actually three ways: GeckoView (Gecko packaged up with a proper Android API instead of the sprawling ad-hoc API in browser.js), Android Components (common UI components for web browsers as another separate library) and then the actual browser itself (because like I said the original idea was to have dozens of separate little browser apps, so they wanted to have as much re-usable code as possible – not just the browser engine itself, but also any other components that would be part of the native Android app – things like the URL bar, tab management, downloads, menus, sync, etc. etc.).
It's an admirable goal, but it also introduces quite a bit of additional friction – instead of building the browser in one go, you now need to build three separate projects. I suppose for pure Android developers it's nice not having to directly deal with Gecko [1], but if you're doing things that straddle those component boundaries, it's rather annoying. You have three separate repositories that you need to keep in sync, you need to wrangle three separate builds, when landing new cross-component features you need to land them across those separate repositories in the right order and with the right timing, Gecko development is still tracked on Bugzilla while the two Android repositories used to use Github… [2] And what with the additional split of even the Android app into Android Components and the actual app, even pure Android developers who didn't work on Gecko/GeckoView couldn't entirely escape this additional friction.
And of course (YAGNI was true this time), Mozilla never really got further than building the two browsers that are existing even now (Focus, which still seems to be hanging on, as well as the main Firefox itself [3]), so I guess that ultimately they themselves decided that having two separate repositories (or three, if you're counting Focus, too) wasn't actually worth the hassle, so they decided to merge them back together again in order to make the developer experience more seamless.
[1] Though Firefox has been able to build in "artefact mode" for quite a while now (definitively pre-dating the Fenix rewrite), where it'll simply download a Gecko build from Mozilla so you don't have to compile the C++/Rust code yourself if you don't have any intentions on making any changes in that area. So from an Android developer point of view there's not much of a difference between building the old Firefox for Android with an artefact build, or building the new Firefox with a ready-made GeckoView package, though I suppose the new systems allows you to skip some "Mozillaisms" that are still required for building the full Firefox repository even in artefact mode, plus of course you no longer have to download the whole large mozilla-central repository.
[2] Apart from the general annoyance of feeling that Spolsky was definitively right and throwing out the whole old codebase was a mistake, this was another reason why I stopped contributing to the frontend bits of Firefox on Android – I used to contribute both frontend and backend bits, and in conjunction with the general annoyance about the direction being taken, suddenly having to deal with three separate repositories didn't feel like fun any more.
[3] Okay, so there was Firefox Rocket, too [4], which was supposed to be some sort of lite browser for developing countries, but with the release of the full new Firefox it was discontinued again. (And shipping it with Gecko(View) instead of using the system web view would have definitively taken it out of the "lite" category, too.)
[4] And the "Reference Browser" I guess, but that was only ever intended as a demo project for Android Components and possibly to also aid in debugging without having to spin up a full Firefox for Android build, or before the new Fenix-Firefox was even in a really useable state.
> It appears to have gotten so bad that they moved the entire issue tracker over to Bugzilla and moved the repo to a new GitHub repo to hide just how feature poor this browser is.
The move to Github with Fenix probably happened because all the cool kids are hanging out on Github these days and they were hoping to gain some additional outside contributors that way. On the other hand, while Github's UI is in some ways possibly a bit slicker and more polished than Bugzilla's, Github's issue tracking is still lacking some notable features that are present in Bugzilla, like proper dependencies between individual bugs. Plus development of Gecko and GeckoView still happens in Bugzilla, so while using Github for Fenix might make things easier for outside contributors, it also introduces some additional friction for Mozilla's own developers.
As for the repo move – from what I remember around the time that the whole GeckoView thing started, they (or at least certain product managers) were dreaming of being able to develop figuratively (or maybe even literally) dozens of little special-purpose browsers along the lines of Focus. Like one special privacy browser (i.e. Focus), one special browser for watching videos, one for… I can't remember actually, but maybe for online shopping, one for doing "research" or something like that, and so on, and so on, and so on.
That's why the old Firefox actually got split up not just two-way, but actually three ways: GeckoView (Gecko packaged up with a proper Android API instead of the sprawling ad-hoc API in browser.js), Android Components (common UI components for web browsers as another separate library) and then the actual browser itself (because like I said the original idea was to have dozens of separate little browser apps, so they wanted to have as much re-usable code as possible – not just the browser engine itself, but also any other components that would be part of the native Android app – things like the URL bar, tab management, downloads, menus, sync, etc. etc.).
It's an admirable goal, but it also introduces quite a bit of additional friction – instead of building the browser in one go, you now need to build three separate projects. I suppose for pure Android developers it's nice not having to directly deal with Gecko [1], but if you're doing things that straddle those component boundaries, it's rather annoying. You have three separate repositories that you need to keep in sync, you need to wrangle three separate builds, when landing new cross-component features you need to land them across those separate repositories in the right order and with the right timing, Gecko development is still tracked on Bugzilla while the two Android repositories used to use Github… [2] And what with the additional split of even the Android app into Android Components and the actual app, even pure Android developers who didn't work on Gecko/GeckoView couldn't entirely escape this additional friction.
And of course (YAGNI was true this time), Mozilla never really got further than building the two browsers that are existing even now (Focus, which still seems to be hanging on, as well as the main Firefox itself [3]), so I guess that ultimately they themselves decided that having two separate repositories (or three, if you're counting Focus, too) wasn't actually worth the hassle, so they decided to merge them back together again in order to make the developer experience more seamless.
[1] Though Firefox has been able to build in "artefact mode" for quite a while now (definitively pre-dating the Fenix rewrite), where it'll simply download a Gecko build from Mozilla so you don't have to compile the C++/Rust code yourself if you don't have any intentions on making any changes in that area. So from an Android developer point of view there's not much of a difference between building the old Firefox for Android with an artefact build, or building the new Firefox with a ready-made GeckoView package, though I suppose the new systems allows you to skip some "Mozillaisms" that are still required for building the full Firefox repository even in artefact mode, plus of course you no longer have to download the whole large mozilla-central repository.
[2] Apart from the general annoyance of feeling that Spolsky was definitively right and throwing out the whole old codebase was a mistake, this was another reason why I stopped contributing to the frontend bits of Firefox on Android – I used to contribute both frontend and backend bits, and in conjunction with the general annoyance about the direction being taken, suddenly having to deal with three separate repositories didn't feel like fun any more.
[3] Okay, so there was Firefox Rocket, too [4], which was supposed to be some sort of lite browser for developing countries, but with the release of the full new Firefox it was discontinued again. (And shipping it with Gecko(View) instead of using the system web view would have definitively taken it out of the "lite" category, too.)
[4] And the "Reference Browser" I guess, but that was only ever intended as a demo project for Android Components and possibly to also aid in debugging without having to spin up a full Firefox for Android build, or before the new Fenix-Firefox was even in a really useable state.