The Conflict at the Heart of Open Source
drdobbs.com
drdobbs.com
OpenSSL is a free software project, meaning that everyone smart enough to snark after the fact could and should have been providing patches before all hell broke loose. I mean, it is amazing how many people were poking fun at the "awful coding practices" and the "bug-laced codebase". Where were all those people when the code was committed?
There's no winning in a culture where you devote your time and efforts for the greater good in an extremely complicated field of computer science only to be lambasted at the first mistake by the very same people who should have steadying the boat with you in the first place.
> everyone smart enough to snark after the fact could and
> should have been providing patches before all hell broke
> loose.
Could have? Sure. Should have? Not so fast. Quite a few of those people had pointed out that the complexity and sheer ugliness of the OpenSSL code created a large unnecessary barrier to contribution, and that people's time would be better spent on alternatives. It would be very interesting to look at the use:contribution ratios over time for OpenSSL and e.g. PolarSSL, which also happens to be GPL-licensed. Sometimes the people who made a mess bear primary responsibility for cleaning up, and there's nothing wrong with others saying so. Bringing pressure to bear on the people who can actually make that kind of fundamental change might be more productive than submitting patches that have to be rejected because they're based on wrong assumptions about complex code.Now, if someone from one of those freeloading companies that have eschewed alternatives and continue to ship millions of copies of OpenSSL without contributing anything were to offer such criticism, that would be wrong. It would be wrong not because it's kibitzing from an outsider, but because it's ingratitude from an insider. That's a different thing. If contribution was always a precondition for comment, this would be a very quiet world. Comments like these might not be allowed:
> this is excruciating to read due to very strange page
> layout.
Where's the patch for that?And touché (though I guess you nothed I merely criticized the form and thanked the author for the content) :)
If you follow Valhalla, OpenBSD merged a number of patches which had been languishing in the OpenSSL tracker for months or years.
For many years now, the security community taken as a whole has very vocally stated, "Never roll your own crypto!", and been highly critical of anyone who has attempted to do so without the security community's blessing.
For many programmers, maybe that is good advice. They probably shouldn't try to design their own schemes, and probably shouldn't try to build them, either.
But I think this attitude has also driven away a lot of very talented programmers who perhaps could have caught an issue like this much earlier on, or perhaps even avoided it in the first place.
So I believe it's misleading for you to portray the users of OpenSSL as somehow being responsible, especially given how much effort the security community has generally put forth toward discouraging more direct participation from these users.
The security community took a holier-than-thou attitude for a long time. It has now been shown that they aren't necessarily any better at avoiding critical and very harmful bugs in their code, however. So of course people will call them out. And there's not a thing wrong with doing so.
That said, your final sentence seems unfair either way. The warning not to roll your own crypto is to avoid the all too common noob pitfalls whereby a reasonably experienced developer invents a security scheme that is completely and utterly broken from its very conception. It's not tell smart people they are too stupid to do crypto (which is a lot of programmers' knee-jerk reaction to being accused of ignorance on any technical topic), it's merely to point out that there's a lot of existing knowledge out there about crypto, and if you don't go learn about it first then your contribution will almost certainly be of negative value.
It's not meant to say don't contribute to OpenSSL or one of its competing libraries, it's meant to say that you need to be grounded in the state of the art and have peer review in order to produce a solid cryptography product.
After an entire webpage was created to ridicule the Debian developers for how stupid they were when they changed something in OpenSSL's code in their distro's version (complete with references to Dilbert strips about faulty random number generators), I just assumed that I shouldn't even bother trying to look at OpenSSL's code (and especially not try to send patches or ask questions on their mailing list) unless I was willing to make a lifestyle out of it, lest I get ridiculed in the same way (but probably not at Debian's magnitude). I wasn't willing to make a lifestyle out of it.
That attitude, off-putting though it may be, shouldn't cause us to read too much into what they say.
So why have nobody fixed them. I guess one of the reason is that the codebase is broken beyond repair, and it was not just to "provide patches". In fact a major rewrite or reworking of the code was required, and this is what the people behind LibreSSL currently are doing.
Another reason is that people (and companies) generally are not willing to pay for security, and does not know when something is secure or not. Thus for something that works, but is insecure, the incentive for doing something about it is missing. Security vulnerabilities is only theoretical for most people.
Are the nerds about to fix some of the security holes you've been exploiting? Easy; just distract them with yet another "gpl vs bsd" bikeshed argument! They never get tired of it!
[1] http://video.fosdem.org/2014/Janson/Sunday/NSA_operation_ORC...
First, companies using OpenSSL for free were completely living up to their end of the bargain, which was "you can use this for free."
Second, there was absolutely nothing stopping a few banks and/or giant web companies from getting together to raise a million dollars to have this code professionally audited. Banks do spend lots of resources auditing the code they write themselves, so how come nothing was spent here?
(Related to second point: There was also absolutely nothing was stopping people from doing what the OpenBSD team is doing now and deciding to tear it apart to clean it up. There was also absolutely nothing forcing people to use OpenSSL. )
Of course these projects (and many others) should receive scheduled funding by lucrative corporations or the state, but to me seems like ultimately our current approach works fine and it is just auto-adjusting to the need for better/more responsible development and funding. Let's wait and see how the situation will evolve next year and the year after that.
I think the author is just choosing a half-empty-glass view for no reason. Financially successful projects offering an open-source/community version and a SaaS version of their software are extremely popular these days, which means that generally speaking it works.
Akamai did (covered on HN when the Heartbeat vulnerability was at the top of the news).
Some software thrives in copy left, some thrives in copy middle, some thrives in copy right. If you are an empiricist, it remains eminently unclear which license style is best suited for which kinds of projects in the long term.
Quite the contrary, the whole suggestive false premise is remarkably similar to 90's style anti-GPL FUD. Unless the the author is a card carrying communist and believes anti-business is a good thing, I would say he's not a big fan of copy left.
That said, copy middle, or permissive licenses, or whatever term you want to use, is at least a little more business friendly than copy left.
I personally don't allow copy left code into my applications so I can keep my IP rights clean. I do that for long term option value, aka business reasons.
Only if you're the kind of empiricist who hasn't done a systematic survey of what they're trying to figure out, but just assumes that all options are even by default due to the Law of Averages.
That is, unless you're summarizing some study about Free and Open Source software licensing and project growth that I'm unaware of. If you are, I'd be highly interested in reading it.
http://en.m.wikipedia.org/wiki/Comparison_of_web_application...
Another data set: http://www.softwarefreedom.org/resources/2013/lcs-slides-aar...
That's the problem. There is no "copy middle."
I consider all of those to be copy middle
What's worse is it seems like the incentives didn't line up to motivate a clean up, but they didn't convert that potential into actual cash either. Lose-lose.
[1] - in my own experience
Despite this discouraging experience, it still seems to me that the open-source world needs crowdfunding, and Kickstarter-style crowdfunding isn't ideal. Certainly, no significant fraction of open-source development is being crowdfunded yet.
My site isn't the only one trying to get a piece of this market, of course; there are others, and we all have different systems. But the question I'd love to see some discussion of here on HN is, why aren't any of these sites catching on? Why is open source not as good a fit for crowdfunding as a few of us think it should be?
I do know that I think open source often fails to produce good software for this reason; when unpaid efforts compete with job, consulting, SO, kids, sports, recreation, etc for time it's inevitable they will often be a lower priority; I wish I knew some way to help people get paid and change that.
I don't think of it as a "solved problem" though, so it'll be interesting to see where open source goes in the future. The public goods link I posted elsewhere here is a good read, although a lot of negativity regarding copyright has crept into it.
Doesn't OpenSSL fit this definition perfectly?
...which is a rather unsettling property in the foundation of your pyramid.
I agree with your theory--I'm just sad to see that there isn't always a lot of that in practice.
Hell, they almost killed off SPARC support on Debian a month ago because of developer ADD.
- There is no effective monetization scheme to develop, maintain, improve, or redesign basic infrastructure that is critical and used by everybody
- There is lots of money thrown around for tiny little non-reusable services that depend on that infrastructure
Where and how money is spent on the core infrastructure is typically sporadic, subject to the whims or neglects of the big companies that have R&D budgets, and typically their best interest for the infrastructure is not quite that of the general public.
Example: the web, which grew from a simple consumer-is-in-control document sharing system to an incredibly complicated and misengineered producer-is-in-control application engine that abuses user data/privacy all throughout. Yes the infrastructure was developed, but very poorly and incrementally, and with bad intentions.
Yes the infrastructure is largely open-source / open-protocol, so that counts as a win? But I wish we could invent a society in which shared-infrastructure is valued and monetized proportional to its contribution to the society (which would outweigh the utility of the services on top of it), rather than vice-versa.
Open-source verifiable operating systems, security libraries: these are more important than your text-messaging app! But we don't know how to fund them.
Its competitors tended to be expensive commercial options, or comparatively limited open source projects. Any individual or organization wanting to use an advanced, yet free, compiler system generally ended up with GCC by default.
It wasn't GCC's licensing that attracted them. In fact, its licensing ended up being a liability, especially for commercial users. That's why we've seen LLVM and Clang really take off lately. They started to not only match the functionality of GCC, but did so with a far more flexible licensing approach. This made them a much more appealing set of tools for many users, both commercial and open source.
[Citation needed]
It even misses the main story -- that the OpenSSL license has a peculiar advertizing clause that causes all sorts of integration problems with other projects.
I wrote an open-source library for a popular service in a popular programming language. I wrote a couple of e-mails and suddenly my library became popular.
Today it has had about 50 different people work on everything from off-by-ones to upgrading to the next language version.
This library has been a reason to employ me, so the monetary benefits are there.
I don't expect somebody to pay for something that I put out for free, I don't expect anybody to help me make that something better either. However, the time I've put into this project is worth a thousand times less to me than the standing and respect I gained, and the people I got to interact with so far.
It's such a common argument at this point that I would disagree that it's a "citation needed".
Well, we can count on the US government to fund OSS, like Tor.
There is an EU parliament and there is the EU commission.
Since the EU is comprised of 28 sovereign countries there is no such thing as an EU government.
Although, I'm not sure if the Commission itself would have the revenue to support key open source projects. They could certainly enact regulation to encourage funding, however.
"€53 billion has been made available between 2007 and 2013"
I'd also point out that we've (google) spent scads of money on oss software development , orgs and the rest at Google. The author really didn't research before writing the article.
dual-licensing works, but a problem is getting customers to pay in a timely fashion - we already have it, what's the rush? However, to be fair, this may be due more to organization delays (getting management approval, waiting for the meeting to get management approval, etc)
O wait isn't that GPL?
If you're afraid that companies will steal it and not respect the license face it they always do.
However if your tool becomes widely used they will eventually have follow the license and if you know with certainty that a certain company is using your too and braking the license you can always sue them.
The most devastating thing the community can do now is fund a organization that can sue companies for breaking the terms of free software they are using I'm certain 90% companies are in violation of at least one license.
I recommend they start with high frequency trading companies.
No.
The GPL says nothing about people contributing back financially, even if they use the code for commercial purposes. It also only requires people to contribute back code if a) they make changes and b) they distribute the changed version of the library outside their organisation. It's trivial for people to base multi-million dollar business on GPL code and contribute nothing back. It happens all the time. If you think the GPL protects you from that you need to read it more closely.
>The most devastating thing the community can do now is fund a organization that can sue companies for breaking the terms of free software they are using
Only the copyright holders have standing to sue.
That's kind of the point, if you own the source, you can license it as GPL for the general public or anyone else willing to participate in the ecosystem (aka other GPL compatible projects), or for a modest $100K fee per year I'll license the same code to you under whatever crazy license you like just for your company.
"Only the copyright holders have standing to sue."
See above, if you're the copyright holder, you can sell a "special" license to special buyers.
If you've ever wondered why some GPL projects are "weird" about demanding patches will not be accepted unless you reassign your copyright for those patches to the project, well, now you know.
Its only fair after all. Either you'll contribute to the ecosystem by donating your source like we did, or you'll contribute to the ecosystem with a fat stack of cash, but either way, no freeloading bums.
The misconception that the poster above was correcting was the claim that the GPL requires you to contribute back either code or money: it does not (unless you distribute changes to the code, etc, etc, in which case it's about making your changes available under the GPL, and not at all about giving money to anyone).
No, the GPL allows code use for commercial purposes without contributing anything back. Though MySQL AB for a while based its business around pretending this wasn't the case.
http://www.gnu.org/licenses/why-affero-gpl.html
also: We don't see any sensible way to address the SaaSS problem with license conditions on particular programs
Maidsafe!
There's no reason why businesses can't use software under copyleft licenses. The copyleft licenses are intended to ensure that systems produced for the public always remain available to the public and don't get turned into closed secret systems available only to the privileged. In economics terms it's a kind of free rider problem - how to stop a common resource from being parasitised.