Friday, April 2, 2021

TenFourFox FPR32b1 available

I decided not to post this on April Fools Day since a lot of people were hoping the last post was a mistimed April Fools prank, and it wasn't. For one thing, I've never worked that hard on an April Fools joke, even the time when I changed the printer READY messages all over campus to say INSERT FIVE CENTS.

Anyway, the beta for the final TenFourFox Feature Parity Release, FPR32, is now available (downloads, hashes, release notes). This release adds another special preference dialogue for auto reader view, allowing you to automatically jump to reader view for subpages or all pages of domains you enter. I also updated Readability, the underlying Reader View library, to the current tip and also refreshed the ATSUI font blocklist. It will become final on or about April 20 parallel to Firefox 88.

I received lots of kind messages which I have been replying to. Many people appreciated that they could use their hardware for longer, even if they themselves are no longer using their Power Macs, and I even heard about a iMac G4 that is currently a TenFourFox-powered kiosk. I'm willing to bet there are actually a number of these systems hauled out of the closet easily serving such purposes by displaying a ticker or dashboard that can be tweaked to render quickly.

Don't forget, though, that even after September 7 I will still make intermittent updates (primarily security-based) for my own use which will be public and you can use them too. However, as I mentioned, you'll need to build the browser yourself, and since it will only be on a rolling basis (I won't be doing specific versions or tags), you can decide how often you want to update your own local copy. I'll make a note here on the blog when I've done a new batch so that your feedreader can alert you if you aren't watching the Github repository already. The first such batch is a near certainty since it will be me changing the certificate roots to 91ESR.

If you come up with simpler or better build instructions, I'm all ears.

I'm also willing to point people to third-party builds. If you're able to do it and want to take on the task, and don't mind others downloading it, post in the comments. You declare how often you want to do it and which set of systems you want to do it for. The more builders the merrier so that the load can be shared and people can specialize in the systems they most care about.

As a last comment, a few people have asked what it would take to get later versions (52ESR, etc.) to run on Power Macs. Fine, here's a summarized to-do list. None of them are (probably) technically impossible; the real issue is the amount of time required and the ongoing burden needed, plus any unexpected regressions you'd incur. (See also the flap over the sudden Rust requirement for the Python cryptography library, an analogous situation which broke a number of other platforms of similar vintage.)

  • Upgrade gcc and validate it.
  • Transplant the 32-bit PowerPC JIT to 52's JavaScript. This isn't automatic because you would need to add any new code to the backend required by Ion, and there are some hacks in the source to fix various assumptions SpiderMonkey makes that have to be rechecked and carried forward. There are also some endian fixes. You could get around this by making it interpreter-only, but since much of the browser itself is written in JavaScript, everything will slow down, not just web pages. This task is additionally complicated by our post-45 changes which would need to be undone.
  • Transplant the local Cocoa widget changes and merge them with any additional OS support Mozilla added. There are a lot of these patches; some portions were completely rewritten for 10.4 or use old code I dragged along from version to version. A couple people proposed an X11-only version to get around this too. You should be able to do this, and it would probably work, but the code needs some adjustment to deal with the fact it's running on Mac OS X but not with a Cocoa widget system. There are a number of places you would need to manually patch, though this is mostly tedium and not terribly complex.
  • The 2D drawing backend changed from CoreGraphics to Skia for technical reasons. Unfortunately, Skia at the time had a lot of problems on big endian and didn't compile properly with 10.4. The former problem might have since been fixed upstream but the latter almost certainly wouldn't have been or would now be worse. You can get around this by using Cairo, but our CG backend was heavily customized, and you will take an additional performance hit on what was probably TenFourFox's worst performing section to begin with since we have no GPU acceleration. It may also be possible to patch the old CG backend back in but you would need to write any additional glue to deal with the higher-level API changes.
  • The ICU library required by JavaScript lacked Mozilla build system support for big-endian for a very long time. This was finally fixed in Firefox 80; you would need to backport this.
And then, assuming you want to go post-Firefox 54, there's Rust. Rust is not compatible with 32-bit PowerPC on OS X (it does work on other 32-bit PowerPC operating systems, but those don't run TenFourFox). Besides having to do any adjustments to Rust to emit code compliant with the PowerOpen ABI used by 32-bit PowerPC OS X, you will also have issues with any crates or code that require thread-local storage; OS X didn't support this until 10.7. There may be ways to emulate it and you get to figure those out. On top of that is the need for LLVM: David Fang struggled for years trying to get early versions to work on Tiger, and even MacPorts currently shows llvm-9 on 10.6 as "red", which does not bode well for 10.5 or 10.4. The issue seems to be missing dependencies and you get to figure those out too. I'm just not willing to maintain an entire compiler toolchain and infrastructure on top of maintaining a browser.

If you think I'm wrong about all this, rather than argue with me in the comments, today's your chance to prove it :)

17 comments:

  1. Cameron:

    Congratulations and my deepest thanks for your Herculean efforts with Classilla and TenFourFox over the years. You have accomplished something of which you should be extraordinarily proud, a pride which is exceeded only by the debt of gratitude we PowerMac users owe to you. Bravo for a wonderful job and a wonderful gift to us users of these nifty old machines. I’d be remiss if I didn’t also say Bravo to your wife for giving us so much of your time and attention. I’ll keep TenFourFox and Classilla running on my machines as long as they’ll let me. I think your blogs are terrific and I’ll be reading as long as you’ll keep writing. God bless. -John

    ReplyDelete
  2. I also wish to express my thanks and gratitude for all the work you have put in to publish more modern browsers for both OS9 and PPC OSX.

    I don't have the technical means or know-how to argue anything, and I really do like the idea of a project getting newer build tools working on 10.4 to assist with big projects like this. I know it's an enormous rabbit hole to dive down and will require a ton of time to learn and play with. Maybe a retirement project...

    ReplyDelete
  3. I think a more immediate project can be setting up an Xserve with Jenkins or such to build all targets (G3, 7400, 7450, G5) when the github code is updated, right?

    ReplyDelete
  4. Hello Mr. Kaiser,
    I must take this opportunity to express my sincere thanks for your efforts all of these years. All of us users of power Macs have been incredibly fortunate to have someone like you on our side to keep our machines so capable for so long.
    I recall my disappointment many years ago when I learned that Apple would soon be discontinuing support for my new iBook G4 only a short time after I acquired it. I was a student at the time and did not have the ability to replace it with a new model, and I really disliked the prospect of having to abandon this completely functional machine well before its time. If someone had told me then that I would still be able to browse the web securely on this machine for 12+ years after the final Apple update, I would have said it was too good to be true. Yet, here I am in 2021, on the same iBook G4, writing this message. TenFourFox was the critical app that allowed me to continue using this iBook as a daily driver for many years longer (and not without a certain sense of extra satisfaction, I might add), and for that I am very grateful.
    Rather than express any sadness at the end of official TenFourFox releases, let me instead express my appreciation that we had access to such an application at all, and further that you still seem willing and able to make available occasional security patches for some time into the future. Frankly, I am amazed at what you have been able accomplish, almost single-handedly. Bravo, Mr. Kaiser!

    Chris M

    ReplyDelete
  5. Thank you, Cameron, for all the years of TFF and Classilla. They won't go unappreciated, and I'll make sure to use them wherever it'll still be possible to browse.

    ReplyDelete
  6. Your previous post was a breath of fresh air. There is often a temptation to get stuck in something too long, and Dune taught us: "The sleeper must awaken".
    Talos really needs great work to be done, and at this stage whether it's x86 or ARM (i.e. Raspberry Pi), the VAST majority of everyone has some access to the net. Having PPC Internet this long in Tiger has been a luxury for most of us (a very welcome one), but it's just time to move onward. Even with the silicon crisis, the net will move forward and most people will probably just hang onto their current stuff (to the environment's benefit) an extra year or two.

    ReplyDelete
  7. Cameron, thank you for your work over the years on TFF. This was no small task and really helped those of us using the PPC platform regularly. So should I end by bidding you farewell? Heck no! I'll end by sending you a huge BRAVO!

    ReplyDelete
  8. Man, thank you SO much for all your hard work on this for so many years. I retired my last daily driver PPC machine about 3 years ago, but you allowed me to keep using my favorite computers of all time far longer than Apple had said they were useful for. It meant more to me than I could ever express. Good luck in your future endeavors!

    ReplyDelete
  9. Thanks so very much for all your amazing efforts and your dedication keeping TenFourFox and Classilla going all these years!

    Although in the last month I have been forced to buy a used Late 2014 Mac Mini running Big Sur in order to use the latest Chrome and Firefox browser versions for some work-related websites, I still use TFF daily and regularly for work and pleasure on Snow Leopard (Intel) and on my G5, G4 and G3 machines running OS X Leopard and OS X Tiger, as often I need to use AppleWorks 6 and/or OS 9.2.2 and AppleWorks 6 and Claris Draw etc. while simultaneously getting information from the web via TTF.

    I also like to dabble with Classilla as I still like OS 9 as an OS.

    Thanks again and best wishes with your future endeavors!

    ReplyDelete
  10. I would like to thank you for developing TenFourFox so far. I'm still using Mirror Door Drive (2.0Ghz) on 10.4.11 and will continue to do so for some time to come. Even if the development is finished, I will continue to use TenFourFox until I find an obvious fault.
    Once again, thank you.

    Sincerely Yours
    Tabo

    ReplyDelete
  11. Cameron,

    Thanks for the great, great work you've done with TenFourFox. You have my deepest appreciation for allowing me to continue to use my MDD G4 almost 20 years after it was manufactured.

    Without your TenFourFox, I would have had to switch to another computer, and given all the expensive Adobe and Microsoft applications I'd have to replace in order to do that switch, I'd say you've saved me a ton of $$.

    Best of luck with your future projects and interests.

    ReplyDelete
  12. From Portugal, I wish to express my thanks for all the work you have put to give us a browser for PPC OSX, that allowed me to keep using my iBook G4.

    ReplyDelete
  13. Add me to the chorus of immensely grateful powerpc users. For years you have kept my g5s relevant and useful with your unceasing work and support. I have no idea why you did it, but thank you so much. I suppose now I will have to reconcile myself to being dragged, kicking and screaming, into the 21st century.

    Good job, Cameron. Enjoy your new-found extra hours.

    greatest regards,
    George Miner

    ReplyDelete
  14. Hey Cameron,

    Raion/Kaz here. I left you a detailed thank you message here:

    https://forums.irixnet.org/thread-2779.html

    It's understandable after all of these years why you want to stop. I think we had discussions about it ages ago on Nekochan.net

    In any case, I wish you the best and will continue to read your blogs on Talospace and see what you come out with next. I still regard you as a friend, and I hope you come around to irixnet one day, for old time's sake.

    ReplyDelete
  15. Thanks for all these years working on TFF. I volunteered on macrumors to do a full rebrand with minimal updates once or twice a year (certificates mostly) once your unofficial updates cease. If anyone is interested you can find it here: https://github.com/wicknix/InterWebPPC

    ReplyDelete
  16. Regarding modern toolchains on older macOS systems, I have been working this through MacPorts for some time. At present, llvm & clang 9.0 will build and work properly on macOS 10.5 Intel and up. Newer llvms and clangs will work on 10.6 and up. For 10.4 Intel, I have up to clang/llvm 7.0 working, and libc++. All these systems support thread_local_storage. A recent cctools is available for all systems. LD64 is available to the limits of the OS -- on 10.4, that is ld64-97; ld64-127 will build and as well, but has issues with the 10.4 underpinnings I haven't yet sorted out. For 10.5, ld64-127 is the default, but you can go higher with minor effort (enabling blocks using the external blocks runtime in MacPorts). For 10.6.8, very recent ld64 versions are available. gcc versions up through gcc7 are available with relative ease via MacPorts on all Intel systems. gcc 8 is enabled on 10.6.8, and gcc up to 9+ on 10.7 and up. The newer gcc versions also build on older systems, be we haven't enabled them as yet.

    It is possible to cross compile c++11 code from Intel to PPC using gcc, but MacPorts is not presently set up to do that.

    The PowerPC code generation on llvm was never finished, and although it is quite close, it is not done yet. See Iain Sandoe's github repos for the closest working version, llvm-7.0 with enhancements, but not yet ready for widespread use. Darwin PowerPC code was removed from llvm starting with llvm-8.0.

    I would encourage everyone interested to install MacPorts on 10.4 on up, and install the toolchains of your choice. They all build straight through without significant issues AFAIK, and if not, we will fix them again to do so.

    MacPorts is the last real hope for these older systems, and has robust support for them still. Many thousands of current software projects build for 10.4 up, both PPC and Intel, through MacPorts.

    ReplyDelete

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