Curl is inside 22,734 Steam games
daniel.haxx.se
daniel.haxx.se
Furthermore, it seems to use "set option" function with magic values to control in-memory cookie storage which is even weirder: https://curl.se/libcurl/c/CURLOPT_COOKIELIST.html
Also, curl seems to have no built-in function to save data? The user has to implement write callback themselves?
Also, regarding options, curl uses a single function for setting options of different types (numbers, booleans, strings) so typing for an option value cannot be used. Is that a good idea? What C developers usually use in such cases?
> Not too shabby for a hobby.
I went to some open source confs to promote a book I wrote (https://howtoopensource.dev) and free service (https://www.codetriage.com) and asked people working at booths for large companies if they can contribute to open source at their day job. Only one person had a positive example and in that case their team was literally blocked on the fix and there was no workaround. The rest seemed confused about why they should be spending work time to report issues or fix bugs. Some genuinely didn’t realize that was helpful and that “contributing to open source” doesn’t just mean releasing and maintaining your own code.
So yes, please fund the software you use, also time and attention is valuable too.
Last tip: If you want to make a habit of it, get it tracked like regular work. “Hey, is feature X done, can we move this card over?” …”Actually I still need to report an upstream issue before we are totally done, I’ll make another work item for it and get it checked off today”. If you feel like you would get pushback for that, then start smaller, by filing issues and talking about it after the fact. Most other engineers and quite a few managers see this as going above and beyond for your job.
A lot of them are likely using it as part of a game engine that they pay for, those game engines should be supporting the curl project, assuming you believe they have an obligation to do so.
* it's got a license that allows it to be embedded
* it's well known amongst game devs
* its deals very well with all the mind-numbingly uninteresting network issues game devs don't care about
It's mostly used for analytics, fetching news, RSS feeds etc. Seperate proprietry libs are used for the CDN side of game dev.
Basically it works and the gamedev industry is incredibly conservative about new/different tech. Alas it's also greedy. I know of games making $1 million a day that pay nothing in to the curl.
Or maybe a handful of the microtransaction/IAP filled games.
From a quick search:
$500 for a character cosmetic:
https://www.si.com/esports/league-of-legends/ahri-ban-rate
$50'000 for a feature bundle:
https://www.ign.com/articles/star-citizen-introducing-a-4800...
$100'000 for an auctioned weapon cosmetic:
Sadly, it's really difficult to get companies to pay money they don't have to.
I was reading The Wealth Of Nations by Adam Smith recently (1776), and one passage stuck to me: that the regular market works because it is driven by the inherent self-interest and egoism of humans, while only beggars expect to earn a living out of the goodwill of the people.
I love free software, but it makes no sense as a business model. If you want to make money out of free software while avoiding leeches, use a serious license. AGPL3, MPL2.0 or EUPL. The entire ecosystem of permissive licenses is pushed, hard, by companies themselves, and perpetuated by their naive employees. Hence the creation of the corporate-friendly Open Source Initiative (OSI) that has completely eaten the lunch of the FSF.
Companies don’t donate out of (pure) goodwill. Lots of talks about risk mitigation. Even if they don’t donate money, the devs who rely on dependencies can still donate time as they choose (within limits).
One big problem is that you cannot encode all possible wants and wishes into a legal document.
Laurence Lessig, founding member of Creative Commons, wrote in Code 2.0 (1999) about four elements that regulate behavior online: Laws, norms, markets, and technology
- *Code/architecture* – the physical or technical constraints on activities (e.g. locks on doors or firewalls on the Internet)
- *Market* – economic forces
- *Law* – explicit mandates that can be enforced by the government
- *Norms* – social conventions that one often feels compelled to follow
It also doesn’t help that OSI and FSF operate as though they are each other’s biggest enemies instead of all the other threats out there.
I feel like the definitions of “Free” and “Open” are too binary and lack nuance. I wish for something more, an open “score”, for example. Sure the Hipocratic license isn’t permissive but the only limitation it imposes is predicated on committing human atrocities as defined in legal code by the Geneva convention. So maybe it’s “closer” to MIT then say the “business source license” which is actively restricting commercialization.
Or to put it another way: If we want software devs to choose licenses that are closer to their actual goals (like CC-BY-NC) then we need to find ways as a community to distinguish these projects as better than pure closed source, proprietary software. Because right now FSF and OSI classify both the same.
The solution really is to use a serious license. Add a "if you make more than $X you owe us $Y" clause. Or use a Qt-style dual-license, where your users can buy their way out of the GPL, this way you can keep the moral high ground of using a "FSF-approved license". But putting yourself in a position where your work can be easily exploited and then complaining when it is is ridiculous.
[1] MPL works on a per-file basis. Technically I can extend it the library with a new file that contains no MPL code and won't have to release it. The LGPL has protections against this, is worse in other ways.
A company can keep closed source their own extension to your project, but any modification to the project itself gets shared with the community, no exception. In ways it's more libre than GPLv2, without forcing big money to bend to your idealistic will (because they won't, and will just avoid using your software).
Of course you can write your license, but either you do it seriously and pay $x,000 a lawyer to do it for you, or you write legal nonsense. In both cases the result is any company will just skip using your software because they have better things to do than review your custom license. There is a real people choose pre-made licenses for open source.
Ridiculous is a strong adjective to use in this case, naïve would work much better without adding a harsh judgment to people who don't share your worldview. I could say the same: your position is ridiculous by only believing that humans are incapable of cooperation without having something to gain from it, such position only exist due to a system we are beholden to, not due to absolute human nature.
> your position is ridiculous by only believing that humans are incapable of cooperation without having something to gain from it
I do believe that. They're always a motivation to gain something, even if it's the pride that you've helped financially support a project you believe in.
My worldview is irrelevant though, the issue here is corporate structure, not human nature. It's difficult to convince a company to pay for something that is free, especially when the button says "Donate" and not "Buy". And even if you do, for a high-value FOSS component, the amount paid will never reflect the actual value they gained from it - think YouTube and ffmpeg, Apple and FreeBSD, or any SaaS and Linux.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
IANAL, this is just my interpretation.- There's no way to comply with this when developing for a closed platform - e.g. iOS or any video game console.
- There's no way to comply with this if you need to sign your code for whatever reason.
- It's very difficult to comply with this if you have to ship a single binary and cannot dynamically link - e.g. Android with an .apk package.
I think a big difference is that the author is pretty darn proud of cURL and brags about it often, and that curl's license is more permissive than wget's GPL.
22,734 games utilize Curl (glorifying).
either ways this is a one-off instance. not meme worthy just yet.
Ubiquity does not always equate to quality, sadly.
But curl is better than anything you could reasonably develop yourself in C++.
Curl is really good, and worthy of its position- especially as hobby software
Hey, Boost.Beast is alright.