Moonchild wrote: ↑2024-03-04, 17:06
I'm well-aware of that. At the same time, I hardly ever see my Pale Moon browser use more than 2 GB of RAM, even with heavy use. Then again I do use suspender to suspend idle tabs...
I'm assuming then that a good portion of users would need more than 4GB for the application, going by your assumptions.
So, this would mean, overall:
- If we want to satisfy plugin users, we'd need to maintain 32-bit.
- If we want to satisfy people on old (or otherwise severely crippled) hardware that do make heavy use of Pale Moon, we'd need to maintain 64-bit SSE2.
- If we want to satisfy people's needs for a performant browser, especially in heavy use scenarios, we'd need to move to using AVX.
Yeah, exactly. There's not an easy answer here. Ultimately, it's a matter of deciding who exactly we can afford to disappoint most/least. Plugin users? People on netbooks or 15 year old hardware? People who want a faster browser?
The reality is that we cannot maintain every possible use case under the sun and go by lowest common denominator. We also don't have the resources or manpower to implement multiple code paths for every component in the browser. We don't gather telemetry so we don't know hard numbers. We also can't expect the average user to know whether they have an AVX capable CPU, so a broader survey would not necessarily provide reasonable numbers for us to use.
I agree with you on that.
Discontinue 64-bit SSE2, directing people on it to 32-bit. This would cause the above limitations and likely needs more restarts to deal with memory pressure.
I think discontinuing 64-bit SSE2 makes sense, don't get me wrong. The thing is, Linux doesn't have 32-bit builds, so if we recommend 32-bit as an alternative for non-AVX systems, Linux users will start clamoring for 32-bit builds again. So I'm picturing Windows users complaining about memory leaks and Linux users complaining that they don't have 32-bit builds to fall back on.
Add an AVX channel as a extra release channel, and somehow migrate all people on AVX capable systems to it, leaving others on SSE2 (potentially needs an AVX check in the internal updater and some risky code that needs to be thoroughly checked for function on a wide range of hardware). This adds a much bigger release burden on us for all platforms (2 extra builds on Linux, 1 on Windows, possibly more for Mac an BSD, also) and this would cause confusion among users not knowing "what version they need". I'm really, really not in favour of this.
This seems like the worst possible option, and precisely what I am hoping to avoid as well.
Discontinue 32-bit "too bad, so sad" and replace it with maintaining two 64-bit channels. This causes the same extra burden on upgrading and Linux/altarch builds and I feel like this 64-bit version would end up being like a shoved-under child. Similar confusion to the three-channel setup for end users. Consider not supporting NPAPI in mainline while we're at it, since there aren't really any practical use-cases for 64-bit plugins.
Yeah, now that I think about it, having two 64-bit channels would be very confusing, not useful to most people, and also force an earlier end to plugin support. People wouldn't know which build they need, and on top of it introduces exactly the same problem for Linux as reinstating 32-bit builds would... four builds instead of two, a GTK3 and GTK2 version of each. At this point it's kinda looking like we aren't going to get away with shifting 64-bit Linux to AVX without going back to doing four builds one way or the other. :/
Discontinue 32-bit and 64-bit SSE2, leaving us with just AVX. Let people choose contributed builds for 32-bit, SSE2 or other preferred configurations if they need it, and let contributors use the leniency in our redist license to build with official branding in those cases. More of a wild-west option but relieves release engineering pressure from us. I'm fairly confident our community can make this work, though.
I think that's not a bad option, though it is the one likely to generate the most backlash. I like the spirit of it, though.
Do nothing and have it be detrimental to 95%+ of users in terms of optimization. Almost everybody loses.
This would probably be the least controversial option in the short-term, though it is actually the worst option long-term.
Hmm... I do have another idea, though. What if we
just move the 64-bit Windows builds over to AVX, but leave the official Linux builds as SSE2 because we don't want to reintroduce 32-bit or have two 64-bit builds? We tell Windows users on old hardware that they can either use 32-bit Pale Moon or move to Linux to keep getting SSE2 support on 64-bit? We also tell Linux users that if they want AVX they'll have to compile the browser themselves or use Windows. The way I see it, touching anything on Linux will put pressure on us to provide more builds, whereas I think on Windows we can just about get away with requiring AVX, but not AVX2, since the average Windows user has newer hardware than the average Linux user. Linux users tend to keep their hardware longer on average, and we already don't support ancient Windows. The way I see it, most Linux users on pre-AVX systems would be the ones least able to build Pale Moon themselves, whereas any Linux user on an AVX or later system likely has enough horsepower to compile Pale Moon in a couple of hours at most.
"The Athenians, however, represent the unity of these opposites; in them, mind or spirit has emerged from the Theban subjectivity without losing itself in the Spartan objectivity of ethical life. With the Athenians, the rights of the State and of the individual found as perfect a union as was possible at all at the level of the Greek spirit." -- Hegel's philosophy of Mind