Tuesday, December 3, 2013

I'm sensing you may or may not want to continue

I got my Williams Star Trek: The Next Generation pinball in, complete with colour dot matrix display, to complement my beloved Stern Sopranos pin. Naturally, I had to thoroughly test it during the 90 day warranty period, because, you know, it's a rough job to play a lot of pinball but someone's gotta do it. The TNG game, for those of you unfamiliar with it, is a pinball classic that is constantly at or near the top in table rankings; it's one of Williams' most inspired offerings from the great Steve Ritchie.

Set for free play, once you've drained your three balls (and this game will gobble them), Counselor Troi will ask, "I'm sensing you want to continue" (to "buy" a ball). And really that's the dilemma we're at, so you tell me.

First some good news for a change. The issue I had with Firefox 26 also cropped up in 24 and Mozilla determined it was a bug and fixed it, which enabled me to get Fx26 compiling further (it still doesn't get through JavaScript, but this is due to code I just have to sit down and write, not a fundamental compiler issue). I've also completed my audit of the Australis widget changes and while some of them are going to be a headache, I'm actually a bit more confident it can be ported to 10.4. I'm still not fully convinced, but some of the 10.5-only code I was worried about was replaced with more portable implementations that also will simply work better.

Still, let's review how far we've come. We are still on a supported branch of Firefox, albeit an ESR branch (ESR24), over three years after Firefox 4 beta 7 ended PowerPC support; we have successfully ported through twenty revisions of Firefox since then. This branch of Firefox will officially receive security updates until at least early 2015, at which point we can still maintain it with backports. We implement in Fx24 most of HTML5 and, arguably, more of CSS3 than anyone else. We also already implement most of ECMAScript 6, the next standard for JavaScript (TC39/"Harmony"), and again, more completely than most other browsers. Maintenance of these three prongs (HTML5, CSS3 and TC39) is necessary to keep us current with web standards, but we are in an excellent position with regard to compliance right now.

Given all that, is it in our best interest to continue to try to get to Firefox 31, especially with all that's coming down the pike (Australis being the most notorious)? Well, that's the part I'm not sure about. I don't want to prematurely abandon keeping current with somewhat-bleeding-edge Firefox, but my experience with doing backpatches on Firefox 22 at the same time I was trying to fix Firefox 24 and maintain Firefox 17 was not a lot of fun, and I don't want us marooned on a version of Firefox stuck between ESRs with no updates at all. But I lay out the pros and cons:

Pros of staying on 24

  • No Australis (also a con).
  • Officially supported security and stability updates, at least until early 2015.
  • More time to focus on improving the port instead of desperately attempting to keep up with the Mozilla version treadmill because merging changes will be a lot less work.
  • The IonMonkey JavaScript compiler port will be a lot easier to do. (Remember, we're still on PPCBC, which has much lower latency but generates much less efficient code.) In fact, much of it is written already, so it's just a matter of getting it working.
  • We can start customizing it more. One perennial request is a proper AppleScript implementation. Another is a built-in user-agent switch. Built-in adblock might also be a thought. And lots of people still want H.264 support.
  • We can still implement many of those missing TC39/CSS3/HTML5 features. These features are written in high-level code in later versions of Firefox that are not far removed from ESR24, so they can be backported relatively easily.

Pros of trying to get to 31

  • Australis (also a con). We can't get to 31 without it.
  • If we get to 31, then we get security patches well into 2016, and could even look to continuing the port past that point.
  • Although IonMonkey will be harder work to get running, it is likely to be quite a bit faster due to JavaScript improvements along the way which 24 does not have.
  • Better add-on and theme compatibility.
  • Bugs in the original TC39/CSS3/HTML5 features we are trying to add to 24 will already be fixed without us trying to track them down.

Cons of staying on 24

  • No Australis (also a pro, depending on your perspective).
  • When security support ends from Mozilla, we must provide our own.
  • Themes and add-ons from versions of Firefox after 25 or 26 or so may have incompatibilities.
  • We need to find and fix ourselves bugs in the original TC39/CSS3/HTML5 features we are trying to add to 24.
  • It is highly unlikely further-out-future standards like CSS4 will be easily portable to 24.

Cons of trying to get to 31

  • Australis (also a pro, depending on your perspective). We can't get to 31 without it.
  • If we don't get to 31, we're stuck rolling our own security patches on a totally unsupported branch (i.e., whichever was the last version that worked).
  • Several new technologies are landing, including off-main-thread compositing (even for software rendering, which is our standard operating mode) and generational garbage collection. These might not be portable or even compileable, but they will almost certainly be mandatory.
  • A large libvpx change is scheduled for Fx28 which might break our AltiVec WebM acceleration.
  • Graphics and widget changes are very likely to accumulate more interface glitches, some fixable, some less so.
  • When 10.6 support goes, all supported Macs will be 64-bit in addition to requiring all the interface changes of 10.7+. If Mozilla completely deprecated 32-bit support on OS X, the only Power Macs that could support a true 64-bit build even theoretically are the G5 Macs, but there is no 64-bit Carbon (and we depend heavily on Carbon). Although 10.6 usage is still high, it is virtually certain to have been abandoned by Apple now that 10.9 is out, and Mozilla would most likely drop 10.6 support just prior to ESR31 based on their previous behaviour with 10.4 and 10.5.
  • Much less available time to work on 24, which would still receive builds.

I'd like to hear your thoughts about this so I can make a decision. I might jump from 26 all the way to 29 to see if Australis will actually build (if it does not, this is a showstopper). But I'm uneasy about 10.6 support being removed as well in the (likely) very near future, and certain elements at Mozilla have been very aggressive about removing legacy code we might have been using. Either way, even if we stick with 24 as the basis for our new "unstable branch," we have to consider the consequences carefully.

Still waiting for build tags on 24.2.0 and then we'll build it and get it out to you; I'm hoping for Friday. And a big thanks to Chris T and the localizers for their hard work on our new 24-specific langpacks (see issues 42 and 61). 24 should be a good launch no matter which way we decide we want to end up.


  1. Go for broke! Or 31.

    Then again, there's always Intel. LOL

  2. One could as well change to a decelerated release cycle, jumping directly from ESR to ESR.
    That may result in more stability and more time for getting the workarounds right.

  3. 10.6/10.7 gonna be hard to kill, so many "newer" machines can't go any farther.

  4. I'm not very keen on Australis, but apart from that I would say we should go as far as we can and try to get to 31. However, since I can't do any of the programming involved, it's not for me to decide whether it's worth the effort and risk. Either way I'll be happy to have a supported browser for the forseeable future.

  5. I agree with Chris above and I will seriously (I cannot emphasize that enough) help do whatever is needed to try and make it work. It sounds like it would be quite a feat if you were successful. Anyways, I think it's so awesome that you guys have managed to make it this far.

  6. Having no formation in programming I cannot help you about software subjects but I want to express my admiration and gratefulness: You are overcoming giants. If we could donate some money to pay your efforts… Take care and be wise.

  7. For me, humble user, add-on compatibility is very important.

  8. I'll third Chris's comments above. The possibility of making it to 31 is exciting and it would be great to have security patch support well into 2016, but it's obviously up to those doing the development work to decide whether it's worth expending the significant amount of effort it will take to get there.

  9. As long as TFF keeps going, I will continue to use it. This G4 1GHz DP PPC is my main computer, and does a good job of serving my needs better than the iMac(8.1) that stands next to it - TFF being instrumental for this. Thank you all and my vote is: 'Keep Going'!

  10. I'd say to stay away from the "Australias" looking stuff and stick with staying in the high 20s for the version number. Maybe the new look might be okay if you're in Australia, but in the rest of the world, we really prefer the Firefox 3 look (or at least as close to that as we can get).

    What I really don't get is their wacky version numbers. Do you know how silly it'll sound in a couple years when they're asking us to upgrade to "Firefox 90"? I mean, they had a "numbering scheme", why couldn't they stick to it? Everything from version 4 onward has basically been the same thing with major changes happening maybe once every dozen "Versions" or so. What we have now should really be only called "Firefox 5" or "Firefox 6", not "Firefox 25", that's just absolutely silly.

    :: Channel 2012


Due to an increased frequency of spam, comments are now subject to moderation.