Non-code contributions to open source
github.com
github.com
As a new user of libcurl, I was recently able to quickly implement FTP upload and adapt it to our specific use case thanks to their tutorials and API documentation. I was even made aware of the lack of thread safety in old versions thanks to that same documentation, so I could warn my team that we should update.
Documentation is bloody important. Almost as important as the code and the test suite themselves.
Software without good documentation pales in comparison to software with good documentation.
https://www.ramijames.com/thoughts/docs-deserve-more-respect
E.g. the examples for the D standard-library's `curry` function are just unit-tests: the docs: <https://dlang.org/phobos/std_functional.html#quickindex.curr...>; the code: <https://github.com/dlang/phobos/blob/42b8c65ccfd35c863f7cedf...>
I realized at some point that a test and a how-to guide can and probably should actually be the same thing - not just for doctests (https://docs.python.org/3/library/doctest.html), but for every kind of test.
It's not only 2x quicker to combine writing a test with writing docs, the test part and the docs part reinforce the quality of each other:
* Tests are more easily understandable when you attach written context - the kind that is used when generating a readable how-to guide.
* How to docs are better if they come attached to a guarantee that they're tested, not out of date and not missing crucial details.
* Integration test driven development where how-to docs are created as a side effect is really nice.
Then there's how much you need to test. Good tests go way beyond readable examples, they usually involve generating tons of tests with more or less random data and running them in a loop (property based tests). I do this, and to be honest I wouldn't recommend end users read them.
Automated property-based tests, fuzz tester cases, and similar things aren't documentation at all.
As an example, in Elm (as in many languages) your publicly exposed functions in a package (a.k.a. library) are required to have documentation comments. This often includes a simple example because, well, it's easy to grasp. The build tool elm-verify-examples runs all of these examples and verifies that the output is what you say it is. It pretty cleverly uses the inline comment delimiter as the start of an arrow so that the rendered code listing in the example is still syntactically correct.
> Monocypher is an easy-to-use crypto library.
At your (apparent) level of understanding, you're probably better off reaching for a higher-level alternative, possibly even full applications like Age (that let you encrypts files), or Signify (that let you sign files).
* lots of screenshots
* a README.md that is extremely long and detailed
* tutorials, reference, design documents, architecture diagrams
* mental model documents to explain how things are thought of by the authors
* Approachable CONTRIBUTING.md with a brief technical overview and suggestions on how to get started.
I run tree on the repository root, append the output to the README and add comments to every line explaining every directory and sometimes every file.
They are crucial for open source - documentation, assets, etc.
But they can also mess up a project with giving power to non-developers who focus on changes like redoing the UX every release, to the detriment of stability, functionality, adoption, and so on. They also attract busybodies concerned with "politics", more so than coding does. It's also a great domain for bikeshedding (as anybody feels like they can do it).
This reminds me of the codes of conduct hell from a few years ago.
[1] https://github.com/opal/opal/issues/941
[2] https://github.com/nixxquality/WebMConverter/commit/c1ac0baa...
I see cultural change as analogous to steering a large ship. You won't be doing any sharp turns but you can gradually move it in a different direction.
https://news.ycombinator.com/item?id=21386948
The GitHub issue I linked is gone but those archive links are still up.
Never forget the fact they laughed in people's faces when they tried to hold them accountable to their own rules.
This brutal article also came to mind:
https://zedshaw.com/blog/2020-10-07-authoritarianism-of-code...
Have you found that a new developer is meaningfully less likely to recommend redoing the UX compared to a new non-developer? Personally my sense is that desire to update the UX is more closely correlated with the "newness" than development ability.
Kind of. New developers tend to do some bug fixing here and there, or implementing some small feature, not dictate major changes. And if they do, they're ignored or debated, and that's it.
I don't believe that to be the case, but am open to examples that provide evidence in favor of the claim.
Also since you seem to be familiar with both project, is Ansel compatible with Darktable sidecar files? If an existing Darktable user were to move to Ansel what can they expect to carry over and what might be lost?
I am only familiar with his YouTube, and then this topic. https://github.com/aurelienpierreeng/ansel Here are his examples.
It seems 1:1 compatible when I switched.
In an ideal world, developers write documentation as they're developing. This seems to work really well for OpenBSD and its various project, all of which have some of the best man pages out there.
a lot of documentation is put together as part of some KT handoff, and is written by technical folks in that domain, for folks in that domain.
As for politics and bikeshedding, I have seen plenty of that amongst developers so I'm not convinced non-developers would be more likely to engage in it.
Or they could just give mockups, like in Gnome, Mozilla, and elsewhere, and have enough traction within the project to push for them.
The fact that Gnome was able to choose a direction they wanted to go and then go in that direction even over the extremely vocal protests of a large portion of the community is if anything proof that you absolutely can reject mockups from community members if you don't want to implement them. Ultimately, the project decides what interface it wants to have. And community members can protest that direction, they can complain that project's priorities are wrong, they can fork things (and Gnome has forks), they can do whatever -- but they lack the ability to force the project to abandon a design that its owners like. That's a good thing about Open Source.
The idea that UI designers are somehow hijacking Gnome because they advocated for designs that the org voluntarily implemented... it makes no sense to me at all. Does the org own the project or not, it's their choice. Unless the idea here is that Gnome should have been obligated to accept design critiques from people outside of the project and change their internal designs just because the people proposing changes from outside the project knew a programming language; but that would be a silly thing to say.
Well, here's the problem: these people proposing the changes are not outside the project. They are within the project. And their vote is as good as a dev's (and it's easier to gather dozens of them, as it doesn't require skills for doing the much harder and more prolonged dev work).
And in orgs with a non-dev bureucracy and management (like Mozilla and Gnome) they can get buy-in from those "higher ups" too. And they can also create enough friction and bikeshedding on regular FOSS projects too, as long as those don't have a BDFL and everybody has a voice.
So what, your issue is that project owners get to decide who they work with? If the people working on UI in Gnome are part of the Gnome project that is not in any way randos coming in and bikeshedding over the UI -- it's a project self-determining what it wants to do. I'm sorry they're organized in a way that you (an outsider to the project) find offensive.
Yeah, of course the vote of project members is as good if not better than the votes of people outside of the project because these projects get to set up their own orgs and governance structures and they don't have to justify or prove to anyone outside the project why the people they work with deserve to be there. And that is one of the things that is amazing about Open Source. You can just go do stuff and when somebody else shows up on your Github repo and says, "the UI designers are ruining your software" you can tell them to take a hike because they don't get to decide how your project is run. They're not required to consult with you.
----
I don't see what any of this has to do with no-code contributions. Encouraging non-coders to write documentation and tutorials and help with feature suggestions is bad because you have a problem with project management?
By the "higher ups" I guess you mean the literal orgs behind the projects? You don't need quotation marks for that, those are just called higher-ups, that's how organizations work. It's still the case that the people who build and control Open Source projects can take them in any direction they want regardless of what people outside of the projects want them to do.
Of course, Open Source has lots of mechanisms to avoid problems with bad project direction -- notably, forking, which should be hecking easy since all of the people complaining are apparently such excellent programmers.
The people who do the things that the article talks about do not tend to be busybodies because these are tasks that don't get a lot of attention or recognition, which is why this article was written.
But, what can we do? I like to believe that those anti-social elements are (very vocal) but a small portion of the universe of non code contributors. Project leaders just need to be a little less naive and keep an eye on this possibility to tackle the problem as soon as it appears.
But on the other side, the non-tech infiltration route is also real.
The reality as far as I've seen is that the people injecting politics into the discussion are developers, not "normies". The perception exists because some of us have a stereotype of a developer as someone who's only interested in the technical details of a project, so the people who bring unrelated concerns to the table must be non-technical.
How does that apply here? That applies when people act on their perceptions; here we are talking about what the reality is.
To find petty bickering, look no further than most technical contributors. Accusing non-technical people of this sort of thing isn't borne out.
[1]: https://invisible-island.net/ncurses/ncurses-license.html
Of course all the bickering was between technical people — those were the only people around!
I'm still waiting for anyone to give an example of an open source project meltdown that was triggered by non-technical contributors.
Do you think people are looking to attack and want a vector? A much simpler, less paranoid explanation is that they get involved and then perceive problems. Some of those problems might even be real!
It just so happens that everyone can have an opinion on it. So you have a problem with a thousand possible voices, and that many of them might be drive-through busibodies. But that’s still not bikeshedding.
True bikeshedding would be haggling over the styling of the Who Are We page of your promotional website.
[1] Like many, many nouns based on programming blogs from the last twenty years.
I have asked questions on repositories, more times than I have fingers. I have created pull requests that fix problems I've had, fewer times than I have fingers. I can think of twice those have yielded positive results: one time I received a clear answer to a question which solved my problem; another time a pull request was rejected with an explanation. (It was a fair enough reason: my change would have broken a different use-case I hadn't considered. I used my code fix locally - on a personal project - until I stopped needing that project.)
Far, far, far more often than that I have seen my questions already asked, or pull requests already created, with no answer or merge forthcoming. I'm not intimidated by the process, but have come to think of it (on GitHub, at least) as fairly pointless, and it's been ages since I've bothered. (I've also come to avoid using GitHub projects with a single developer, and /or without a really active and recent update history.)
I understand why "I've made the code public; I don't owe anyone anything else; fork it if you don't like it" is a prevailing attitude amongst GitHub project creators. I also think it obviates the original premise of GitHub - to create collaborative communities of developers and users - to the platform's detriment. It's not surprising (but still disappointing) that people are looking to other platforms for the community-development (in both senses) that GitHub could, and was intended to, support.
For true collaboration, maybe other, smaller forges where developers are more likely to have something in common would be more useful.
Sample size n = 1, but I saw a lot more engagement on my projects when I was hosting mattermost helpdesks for people to join and ask their questions. Unfortunately I had to shut them down because turns out having random individuals ping you on your phone about an issue that is well documented gets very draining.
So definitely a double-edged sword.
For example, the Eclipse Foundation often reminds users that bug reports are valuable contributions [1].
This can come in almost any form. A message on the project's Discord channel. A tweet or toot or other short-form message. A screenshot. A gist. A public GitHub repo, ideally with a descriptive README. A YouTube or TikTok video.
Anything like this is SO valuable for a project:
1. It shows people actually using the thing, which is motivational for the developers and also provides social proof to other people considering trying it out
2. It provides feedback. Just seeing what people are building helps show which features matter the most, and often highlights other things like what features were less obvious.
3. It's just nice. Seeing people use my stuff is why I build it. That's motivational again, but I said it twice because it's so important.
I know projects have to protect themself, but creating an account, or entering an email address or filling out a captcha is friction
maybe enter comment in this form and click to submit feedback.
Side note: Unfortunately, it seems like development has slowed down. I see some activity in the mailing lists, but there hasn't been a "What's cooking" post in ages, nor have I noticed any real changes in a while. @drewdevault @emersion what's going on?
I'm in this group (I'm a Materials/Chem eng). We have recently started using media wiki internally for all sorts of documentation related things it has taken off very quickly.
Over the years there has been other solutions pushed onto us like confluence and sharepoint those never really gained any traction.
Having plugins enabled (like math equation editor) is important - Engineering documentation involves Math equations. The wiki lets you use markup like this "\frac{dC}{dO} = \frac{10}{\alpha+\frac{\beta}{([C]-C_{min})^{DC}}}" but also has visual editor.
Twenty years ago, while using a really cool open source project [written by ESL programmers], I emailed the team and offered my own English revisions to their initial documentation attempts.
Even today [without any further contributions], I'm one of ten people in the "special thanks to" section of their project, which has 100m+ downloads to date, and has updates from hundreds of contributors.
I'm not sure why "I'm so special" [to still be thanked], but I do list this under the copyediting section of my resumé [because the software is well-known].
Perhaps a little cynically, but partly based on similar credits on software I maintain: because the current maintainers aren't quite sure what you did any more, and don't want to cause a problem by removing your name.
This reminds me to write the user guide for Neural Amp Modeller. It's definitely at this inflection point and the docs need some love!
The "secret" I've learned is to not only build the project but pave the road so that it's ridiculously easy for someone to adopt it. This means top notch documentations with screenshot and links or scripts that automate the task of setting it up. It probably doubles the work involved but it's way better than coding something up and no one using it.
It makes the lives of Tech Writers, PMs, and engineers so much easier, and enables the community around your software to get more involved and feel like they made an impact
I used to be rather critical about the identity groups approach some projects got into – we're all in the same project after all – but truth is that it's very important for open-source software to attract people that don't think of themselves as hardcore hackers because without that more diverse skill set, a project is just a proverbial tree falling in the forest.
And this is for a standard POSIX utility! Docs are not really needed for those, right?
Well, apparently yes. Although what they praise is my documentation for developers in case I get hit by a bus.
You never know what will make people love your project.
Most open source software has none of that. If you want it to be popular, and sit around smelling your own farts because of how many GitHub Stars your project has, then all that's great. Absolutely unnecessary to make open source that people will use.
Just keep committing, be easy to contact, make it stupid easy for people to contribute, and rapidly iterate on contributions (do not let PRs and issues sit for months or wait months to reply to an e-mail). Mailing lists, chat rooms and forums are all good ways to allow other people to solve problems ad-hoc. Avoid anything that attracts spam.
Personally I find "corporate" open source very annoying. There's often 3 different websites and the docs are buried somewhere deep. Yeah you have a great mascot and splash page, but I'm an actual developer trying to solve an actual problem. When I do find the docs website, the docs I want aren't even on the website, they're somewhere in the repo. The README doesn't tell me where, though, it's just another splash page that doesn't even link to the docs website. Oh, I need to jump through 15 hoops to join your private Slack to ask you a question? Oh, I need to sign up for your weird private Jira instance to submit a bug? Sign away my life with this weird contributor agreement? Screw it, i'll use a different project.
The binary option I think of is not needing any documentation like for the one click jailbreaks means that it probably doesn't need much documentation.
Definitely prefer the GitHub pages that assume you don't know how to install and makes it stress free versus something like sway and configuration, do people end up with Manjaro instead.
The reason why Blender is on a trajectory to very slowly take over the industry and Gimp isn't is because Blender has a community of non-coding artists who are on good terms with the dev team and who talk about the product, build tutorials, and generally make it accessible. The shift in how people thought about and talked about Blender is in no small part influenced by people throwing tutorials on Youtube saying "check out this cool thing I made in Blender, here's how you do it."
Similarly, the reason why Mastodon is eclipsing other Twitter competitors like BlueSky and why it's more successful than arguably much better federated protocols like Matrix is because a bunch of non-coders showed up on Mastodon and turned it into a community (with all the good and bad that entailed).
I have so many issues with ActivityPub, it is not the protocol I would have preferred to win the federation debate. I don't want to badmouth Mastodon, it's a huge achievement and I would in no way do a better job building it -- but my point is Mastodon can have no concept of mobile identities or homeserver separation, and lack support for E2EE, and be lagging on moderation tools, and be arguably not fantastic about handling accidental DOS attacks on smaller instances, and it just does not matter at all, because they got a community to show up that likes them and that is enthusiastic and that helps with all the non-code stuff and actively goes out and evangelizes them and says "oh, join my instance, I'll show you how to set up filters and who to follow", and so... that's it, that ends up mattering more; because of that community involvement ActivityPub is now getting federation support from Wordpress and Threads.
----
Getting actual adoption of Open Source products is about more than code. If someone is showing up on the Linux forums and helping randos solve tech problems, that person is contributing just as much as someone who writes code for the kernel. And not just contributing to the person you're replying to, you're also averting a distracting issue on a Github repo, you're making the community feel friendly, you're making someone on the fence think, "actually, I could give this Linux thing a try because if I get confused even if I feel like I'm being stupid somebody will jump in and be happy that I'm here and will try to help me". You're taking care of a support issue so that a moderator or another helper or an overworked community manager that has seen hundreds of identical comments no longer needs to worry about it.
It is a valuable contribution to help others use Free/Libre software, to write documentation, to be public about your usage of Open Source software and to talk about the things you make with it, to brainstorm ideas and give feedback on features, and even just to cheer on developers, donate money, and to get excited about releases and excited about the things they're doing.
Even the bikeshedding that happens on platforms like Mastodon -- while it's good to have tiered systems of feedback that shield developers from getting harassed by thoughtless ideas or suggestions, it also helps Mastodon a lot to have a community of people who are constantly thinking, "hey, we should do X, we should do Y, Z is an issue we need to address." Filtering that into useful feedback is just triaging.
Others have pointed out, just documentation alone is a huge boon for getting people to actually use software. But going beyond that, I feel like increasingly I can predict what the health of a project is going to be in a few years based just on, "is there an enthusiastic community of non-programmers who are participating in the development process?"
What about documentations and other assets that can be code too? What about outdated assets?
Whenever I encounter these kind of discussions, it looks like someone’s trying to reinvent formal specs.
So big no. The most important part and the “secret” to open source success is open source code.