While I admit that the recent Heartbleed security issue is a critical issue, I am getting perpetually flummoxed by the 'I have the moral high ground' negative comments being thrown at the OpenSSL project & developers. Innumerable blogs and HN threads are taking the stand of 'how could they commit something like that', 'How idiotic was the committer', 'OpenSSL should not use a custom wrapper around malloc' and even taking personal shots at the two gentlemen who were referenced in the code.
Mistakes were made in code and processes, mistakes will continue to be made in code. What we need is:
* A formal code review tool. I don't know whether there's something like review-board for OpenSSL commits.
* Donations to the OpenSSL foundation. C'mon folks, practically all your online security depends on OpenSSL (Cisco, Juniper, Extreme, Huawei, Google, Yahoo, Wikipedia: I am looking at you). A bit of money back to OpenSSL (and OpenSSH + friends) would go a long way. Personally, I think these tools ought to be getting way more than Wikimedia (Just my two cents)
* More eyes on the code. Whether it's refactoring the code, formal code audits or full time employees from the fortune 500 companies.
* You to commit. This is an open project. 20/20 retrospective bashing does no one favours[1]. If you really feel strongly about something, get a patch out then start yammering about it.
* A security mailing list. Something similar to xen-security-announce. That way, major vendors, cloud providers, OS & distributions can get fixes baked by the time the general alarm is sent.
1.http://www.tedunangst.com/flak/post/analysis-of-openssl-freelist-reuse
* Initialization is even more complicated than the security needs dictate, and so is everything afterward.
* The internal abstractions are leaky, e.g. requiring a poll for read before you can write (and vice versa), because of the way handshakes are implemented.
* The normal error reporting is awful, so you must add extra code to get useful information.
* The documentation is terrible. It's hard to find what you need to know just to write your code, then hard to find information about the "idiosyncratic" command-line tools to test it. Want to know if your certificate code actually works? Have fun fighting theirs to find out.
A lot of people have felt forced to use OpenSSL because it was the de facto standard, or because NSS and GnuTLS were even worse (especially in terms of documentation). That leads to resentment, which has been just waiting for an outlet like this. I'm not saying it's right. I completely empathize with the plight of an under-resourced development team who could use some more help in some difficult areas. All I'm saying is that it's understandable.