I occasionally do talks about curl. In these talks I often include a few slides that say something abut curl’s coverage and presence on different platforms. Mostly to boast of course, but also to help explain to the audience how curl has manged to reach its ten billion installations.
This is current incarnation of those seven slides in November 2022. I am of course also eager to get your feedback on the specific contents, especially if you miss details in them, that I should add so that my future curl presentations include more accurate data.
curl runs in all your devices
curl is used in (almost) every Internet-connected device out there, and I try to visualize that with this packed slide. Cars, servers, game consoles, medical devices, games, apps, operating systems, watches, robots, TVs, speakers, light-bulbs, freezers, printers, motorcycles, music instruments and more.
The intent being to show with images that it runs in quite a few devices.
28 transfer protocols
More strictly speaking these are the 28 URL schemes curl supports right now, including in experimental builds. The image tries to put them in a sort of hierarchical way so that you can see what underlying protocol that is used for them: TCP, SSH, TLS, QUIC etc.
60 bindings
Volunteers have created and maintain libcurl bindings for at least these 60 different environments, making it possible for developers to access and use libcurl powers from virtually every programming language you can think of.
37 third party dependencies
curl’s modular design and ability letting the developer who builds curl to mix and match features and what particular third party dependencies to use, makes it possible to craft exactly the curl builds you want. Device manufacturers get the combination they like for exactly their purposes and needs.
89 operating systems
This list has been worked on and bounced around several times between friends and it always brings out a few questions and people like to argue with me about a few entries I include and about a few entries I do not include. The problem is both that there is not a clear defining line between the definition of an operating systems and a distribution or a different running environment and sometimes it is just branding differences separating X from Y. With a “flexible” attitude to the definition of operating systems, this is the current collection of no less than 89 individual ones on which curl runs or has run on:
24 CPU architectures
Older versions of this slide used to have x86-64 as a separate one, but I think we have concluded that a large amount of the architectures have separate 64 bit versions so if I were to keep x86-64 I should also include a lot of other 64 bit versions so I removed the x86-64 from the slide. Maybe I should rather go the other way and add all the 64 bit version as separate architectures?
Anyway, curl has been made to run on virtually all modern or semi-modern 32 bit or larger CPU architectures we can find:
2 planets
I admit it. I include this slide in my presentation and in this blog post because it feels like the ultimate show-off. curl was used in the mars 2020 helicopter mission.
29 ? How about adding Gemini:// as the 29th protocol? (should be quite easy)
@Ploum: there was once a start made but it was abandoned and while you say it “should be easy” nobody seems to do/want it…
Native Linux build for Elbrus architecture (not publicly available) also seem to have it, in line with any other general purpose Linux desktop system.
http://mcst.ru/elbrus_linux
Fourth tab has the link to the lists of packages, and curl is one of them:
https://yadi.sk/d/ZASlXqAM84O1lw
ALT Linux have also had it in e2k ports for quite some time:
https://packages.altlinux.org/en/search?branch=sisyphus_e2k&name=curl
So you can add Elbrus as 25th architecture.
I was just thinking to myself:
“I bet you know that some of this ‘Operating Systems’ are not actually operating systems, but kernels (e.g.: Hurd, Linux)… but why are there on an operating system’s list then? i wonder…”
@john: you did not only think this to yourself, you also wrote it here….
Let’s say that “operating systems” is in this context a shorthand for operating systems, kernels and particular run-time environments.
Where are MenuetOS and its fork KolibriOS? Those are perfectly valid and useable operating systems, and way older than a lot of options included here, like Redox and Serenity.
@Alex: finding names of Operating Systems is easy. Finding out if curl actually runs or has run on them is much harder. Do you know that curl has run on MenuetOS and/or KolibriOS?
If you like you can add Phix ( http://phix.x10.mx/ ) as a 61st binding.
@Pete: thanks, I’ll certainly do that!
Just amazing how to spread it is used. Not counting the fact like many languages like PHP can call the function from native libraries or beside the amount of configuration options it offers
Why don’t you include moons? Also, haven’t computers crashed onto Venus so shouldn’t that count as a planet also. Just because the computer “crashed” (pun intended) shouldn’t be a knock against curl.
And as far as moons, isn’t it on our moon yet? If not it will be soon as there are multiple different devices landing on the moon this decade. So that number should start going up as probes start being sent out to moons with the intent of landing at least a probe on those moons. You could put moons down as (near future …)
@OlsonBW: I don’t have any confirmed curl usage on any moon nor Venus though. Once I do, I can consider making slide for that… 🙂
I would argue about iOS, ipadOS and tvOS. and the fact that they all started as iOS.