Syncthing has grown vastly the last year. The number of users has grown from essentially nobody to likely tens of thousands. We’ve added features and fixed bugs like never before. But we’re far from done - there are missing blocks of functionality, but most of all there are a lot of rough annoying edges. We’re also a small team of people working on our free time. But you can help!
Yes, you! Everyone is welcome, regardless of skill set, location, language, gender, …
But I don’t know how to program!
You don’t need to! There’s plenty to do that involves no programming at all and is just as valuable, if not more. Here are some areas and ideas.
-
Improving the documentation. This needs communication skills and empathy with the user. Especially the getting started guide is subpar by now as it’s old, a little outdated and written by a tech… It’s also the first thing a new user lays her eyes on, possibly. Bad combination. There’s a lot more that’s undocumented or badly documented. Perhaps you have tips and tricks you’d like to contribute, or a “how to” for a specific situation that’s not completely straightforward. Maybe you’re from a country where reading and writing English is less common and would like to help by translating some documentation into your native language.
-
Answering questions and helping out in the forum. A lot of you already do this. It’s highly appreciated and it helps both new and old users get over hurdles.
-
Vetting and answering new Github issues. We try to give bug reports some kind of prompt response as thanks for taking the time to file it,but sometimes we don’t have the time or energy. You’d think this is all about programming, but in many cases it’s more a question of weeding out the duplicates and extracting the required information from the reporter. In other words, this is much like hanging out in the forum, except the thread starters are sometimes more annoyed.
-
Improve the web site. This may be a little more technical, knowing HTML is necessary, but still. The “download” section isn’t as friendly as it could be and the design is arguably outdated. Each small improvement, be it a clarification, a typo change or an improved illustration is welcomed.
-
If you’re involved in maintaining a distribution or operating system, adding native packages for Syncthing is a help. If so, please let us know that you’re doing it - both so that others can find the effort, and so that we can be in touch for information about security issues etc.
-
Lastly, you can help by translating Syncthing into your native language, or improving an already existing translation.
I can program, but not Go.
Go is a really small and practical language, and quite easy to learn. There are great resources online and setting up the build environment is quite straightforward. There’s no need to absorb everything at once and we’re a friendly bunch when reviewing pull requests, especially those from new contributors.
Just getting in there and looking through the code (the main entry point is here, and the protocol package is separate) is helpful. Perhaps start by finding a typo or an incorrect comment, then something that can be rewritten a little simpler. No pull request is too small if it leads in the right direction. When you gain experience and confidence, perhaps look at something in the list of outstanding issues. Many of them are smaller bite sized projects that just no one has gotten around to yet.
Also, there are other subprojects you can contribute to! For example the Android app (Java) and the GTK desktop integration (Python)!
I can’t do any of that, but I have lots of money.
Neat! Unfortunately, for the current core team at least, we already have full time jobs and adding more money into the mix doesn’t strictly help. Of course, everyone has a price… Seriously though, if you perhaps run a company or department that uses Syncthing and has developers, consider letting them contribute to the project on some small percentage of their time as a thank you. If you have specific requirements that are not being addressed, consider hiring an internt or a student to work on it? Aid, pointers and mentorship as time allows are all available here.