Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Post History

75%
+4 −0
Q&A What is a reasonable minimum for making a FOSS project inviting to contributors?

I don't actually know the answer to this, but I'll post a provisional one while we wait for someone wiser than me to chime in. I think this is a small subset of the real answer. Don't forget the...

posted 2mo ago by matthewsnyder‭

Answer
#1: Initial revision by user avatar matthewsnyder‭ · 2024-03-23T23:18:08Z (about 2 months ago)
I don't actually know the answer to this, but I'll post a provisional one while we wait for someone wiser than me to chime in. I think this is a small subset of the real answer.

1. **Don't forget the license.** Make sure it's clear that it's FOSS. Code without a license on a public repo is, by default, collectively copyrighted by the authors. It is illegal to use, redistribute or modify it (even for PRs back upstream) without the explicit permission of **each** author. You have to include a license to make it clear this is not the case.
2. **Lay out the process.** Have a clear `CONTRIBUTING.md` doc. Explain exactly how people should format and submit PRs, what requirements you have (eg. tests pass, formatted with XYZ style), what turnaround they can expect for a response, and how fussy you plan to be before they get accepted. If you'll require any legal stuff like a CLA, say it clearly and link to the form.
3. **Don't be too picky.** You're not Sr. Eng. Manager at FANG where people get paid 500k/year to suit your every whim. Try to require only those things which are absolutely necessary. Clean up minor things yourself, like formatting.
4. **Automate requirements.** Tests, linters, format checkers... If it's automated, people can get the code up to snuff on their own, without waiting for you to check it manually and respond with feedback. Aim for zero manual review (even though it's probably unattainable) - "if tests pass, I will probably accept your PR" (and write tests accordingly).
5. **Lay out the roadmap.** Make sure it's easy for people to see what features are missing, what they would look like if added, which ones you're working on and which ones are deep in the backlog. Github is now adding a lot of project management tools like tickets and project boards - use those. Populate the issue tracker with specific, well-described issues and make sure they are tagged/categorized properly.
6. **Clean out the tumbleweeds.** Don't ever go too long without having some kind of *action* on the project. Update issues, rewrite docs, refactor, something. When someone looks at the project repo, they should be able to quickly and easily locate evidence that you are alive and kicking, and haven't passed away months ago leaving your script to auto-approve dependabot PRs and that's all. Find some excuse to publish something new every few days, to keep the momentum going.
7. **Up-to-date documentation is mandatory.** It's okay if you are looking for help writing documentation (you said so in the contributor guidelines, and linked to the specific documentation tickets, right?) but you still need to provide the foundation. At a bare minimum, there should be a readme providing an overview of what the project is for, build/install instructions that work, basic usage examples. Periodically, spin up a VM or similar fresh env, and try going through the readme like a new user would, to catch any steps you forgot or that became obsolete.
8. **Avoid arcane technologies/languages/techniques (or not).** Try to make the code look as normal as you can (without unduly compromising the project). Where possible, don't use obscure languages or technologies that few people will know or want to learn. Don't do things in a weird way that nobody else does. Use a standard coding style. The flipside of this is that sometimes, communities around very niche tools can have a lot more enthusiasm for contributing, so keep this in mind.
9. **If you are willing to teach, say so.** Novice programmers who are just getting started have a lot of interest in and reasons for becoming FOSS contributors, but they will need to be taught. If you are able to do this, make it clear how they can get started.
10. **Advertise.** Post periodic updates about your project on communities where it's appropriate: Reddit, hackernews, lobsters, soylent, hacktoberfest, forums for the language you use, here... Obviously check that it's not against the rules to do so.

As I said, this is at best a guess. [I don't actually know why](https://software.codidact.com/posts/291132) and I'd love to see someone post a more authoritative answer.

Also, the above is a somewhat extreme version, written from the point of view that you really do want to maximize your odds of getting contributions. Certain things (3, 4, 8) can potentially conflict with the integrity of the project. Others (2, 4, 5, 6, 7, 10) are laborious. I'd say that *overall*, it is *reasonable* to expect a serious FOSS maintainer to follow all of these, but they might use their judgement to make an occasional exception if there's good reason.