[squid-dev] What os/cpu platforms do we want to target as a project?
Amos Jeffries
squid3 at treenet.co.nz
Sun Dec 5 12:00:03 UTC 2021
On 5/12/21 22:44, Francesco Chemolli wrote:
> Hi all,
> continuing the conversation from
> https://github.com/squid-cache/squid/pull/942#issuecomment-986055422
> to a bigger forum
>
> The discussion started out of a number of PRs meant to remove explicit
> support for obsolete platforms such as OSF/1, NeXT or old versions of
> Solaris.
>
> I that thread I move forward a list of platforms that in my opinion we
> should as a project target, and while of course we should not
> explicitly prevent other platforms from being built on, we should also
> not disperse our time supporting complexity for the sake of other
> os/cpu combos .
>
> The rationale is that we should focus our attention as a project where
> the majority of our userbase is, where users mean "people who build
> and run squid".
>
I do not accept that a few hacks for old OS are causing pain to core
developers simply by bitrotting in untouched code.
Removing things because the majority of users are not using it would
mean we become a Linux-only project and thus actively push people out of
the community unnecessarily. There are active benefits gained in the
form of better code, bug detection, and community inclusiveness from
maintaining portable code.
FTR; The criteria informing my OS removal decisions so far have been:
a) Squid-3 has support for any OS which has a chance at providing C++
tools. Inheriting from the Squid-2 support for any ancient OS that had
someone willing to provide patches.
b) Squid-4+ require C++11 toolchain. This eliminates a lot of very old
OS code. Especially those which have no vendor/distro have little chance
at providing a modern toolchain.
- At times the vendor/distro supporting that OS provides
toolchains/support in ways that no longer need our hacks (eg PR 944 m88k
supported as normal NetBSD/OpenBSD builds, PR 943 likewise as QNX or
MacOS builds).
- At times our hack is for a version of OS which the vendor(s)
provide (and/or require) admin to use a newer version of Squid for. Our
usual distro hack removals.
c) OS which are outdated (newer version supported by the vendors) need
a reasonable ability for any admin wanting to manually build their Squid
able to do so. If we know of any admin wanting the code to remain it can
stay unless we have a clear reason to remove. (eg PR 942)
NP: now that Squid has formally dated releases I have a timeline for
support forcasts. (eg PR 942 vendor LTS schedule vs Squid-6 release)
> We have no way of knowing who is installing squid, we don't have
> telemetry, so we will need to do a bit of guesswork, based on the
> assumption that people who deploy squid are rational; as a consequence
> of that, we can assume that they will go for the solution that gives
> them most bang for buck ("buck" being money and time).
>
> What are the main use cases for squid users? (again, guesswork, please
> feel free to add more)
> 1. forward proxy in enterprise or ISP
> 2. reverse proxy in datacenter
> 3. forward proxy in small or embedded environments
>
IME, (1) and (2) have switched places in the past 5 years for actual
usage. Though (1) people are more vocal with SSL-Bump problems.
4. protocol translation gateways
Historically FTP and Gopher to HTTP. Recent years IPv6/v4 conversion.
Plus latest Browsers dropping FTP support has brought back FTP gateway
translation popularity.
We should be in the thick of HTTP 1/2/3 conversion, but blockers on that
work have completely eliminated Squid from that section of the market.
People wanting that go to Haproxy instead.
> What are the Os/CPU combos that we can expect to find in these environments?
Ubuntu is a large chunk of user base and that alone requires a large
range of architectures (see https://buildd.debian.org/) to get through
Debian. That includes BSD and microkernel builds, not just Linux.
So, IMO specific machine architectures are not much concern to "us". The
toolchains and vendors take care of that part so long as we provide
half-decent code.
> x64 is likely to be found in all of them, and the OSes most likely to
> be used are all sorts of Linux, FreeBSD, OpenBSD, Windows.
> For the third use case (and possibly more and more of the second in
> upcoming years), we can consider arm64, arm32 and possibly MIPS with
> Linux. There might be a niche of NetBSD users here, hard to tell.
>
> By now it makes no economic sense to run Squid on large Unix boxen.
Worse decisions have been sighted from management levels and not every
admin has a choice. I don't think this is a strong enough argument for
it to be relevant to this discussion.
>
> What do we get as a project out of this?
> - Mainly code simplification. Fewer portability subcases makes for
> easier to understand and modify code
When it comes to portability the outcome is more ironic. The lack of
special-cases means less pressure to have clear concept design,
abstraction/boundaries between actions (modularity). So large code like
Squid can become more complex than simple.
It is more work in total to design simple than complex/ad-hoc.
Portability gives a clear justification for that design work, does not
add/remove from the amount of it necessary to output simple code.
> - More clarity about our target use cases
That is a matter of features/protocols not portability.
> - better coverage in our testing for our explicit target use cases
>
Agreed.
Amos
More information about the squid-dev
mailing list