Ask HN: Best open source project that has terrible documentation?
I am building some code documentation tools and want to contribute to the open source community - what open source documentation gives you a headache?
Anything with layers and layers of abstraction can be very difficult to document.

The first example I stumbled across of this was Java. The original Java doco was very, very easy to follow. But they invented interfaces, and gradually instead of passing say a string you passed some object that implemented a string like interface. After a while you even just finding out "how do I get me an object with the required interface" was a struggle.

The underlying cause is originally you just have to read and learn the basics of the language and it's core library. Everything else was expressing in terms of that, so if you read the documentation for some library, you already understood the parameters passed and the return results. Then the language gave developers the ability to build their own foundations. After that, when you looked at the documentation for a random library, it's arguments and return values were types you had never seen before - they were all abstract base classes and interfaces. Delve into them, and they also were made up of the same thing. You often had to pick you way through 1000's of definitions before you could get a complete picture.

Today, I'd say OpenSSL is the worst. In it's EVP API even the parameters to functions are abstracted to OSSL_PARAM's, and then they don't document all of them of just refer you to other bits of the data for "defaults", only half of which apply to the function you're trying to use.

Taking an initial look at the OpenSSL documentation it does seem like there is room for improvement in how the code is communicated. Given that OpenSSL is a security-critical library, I find contributing a bit intimidating, especially when it comes to documentation. However, I believe that with careful implementation and community engagement, I can make a positive impact.

I’m considering the possibility of creating a second documentation page to address specific use cases or common questions without disrupting the existing structure. I want to ensure that experienced developers who rely on the current documentation are not confused by any changes.

I plan to reach out to the OpenSSL community this week to gather more insights and feedback. Thank you for pointing me in this direction!

Under the hood OpenSSL is a very solid, high performance library that implements crypto primitives. When it is all said and done there is not a lot to crypto primitives as they are all very well defined with straight forward interfaces. Nonetheless, you see lots alternatives to OpenSSL, most of which have headline banners like "easy to use correctly". My guess is the EVP API is the major reason OpenSSL is so difficult to use. Yes, it is poorly documented, but I suspect documentation alone can't save a difficult API.

It doesn't have to be that way. Rust is a good example of a language that like Java and OpenSSL is built on lots of abstractions, but nonetheless the doco is a joy to read and follow. A lot of thought has goes into most Rust API's, so that good doco is a product of good API design combined with good document writing.

It will be a challenge to put lipstick on this particular pig - but on behalf of all OpenSSL users out there, I wish you luck.

Lazarus/Free Pascal has horrible documentation. I was spoiled by Turbo Pascal/Delphi, but this new stuff is incomplete and even understanding what all the parameters do to various functions is hard going.

Otherwise it's an awesome project.

  • onel
  • ·
  • 1 month ago
  • ·
  • [ - ]
Take a look at dspy.ai. Love the project but they need some help with the docs.
Anything with multiple main languages.
Because open source projects are usually developed by a community of contributors, it might be better to talk with some of those communities. That way you have access to the reasons existing documentation is the way it is.

Sure, it might be more work than soliciting user complaints. But opining “your documentation is bad” is unlikely to foster the conditions that actually improve actual documentation for actual projects. Documentation problems are usually the result of effort writing documentation by people highly technically informed about a project, tooling is rounding error.

Good luck.

Thank you so much for your response, it helps a lot. I will certainly engage with the communities directly to learn more before I get ahead of myself trying to help without fully understanding what the community needs.
  • ·
  • 1 month ago
  • ·
  • [ - ]