A small request for help

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! :wink: 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. :sunglasses:

  • 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… :wink: 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.

11 Likes

Thank you @calmh for showing how to help. You forgot the important point: how can we buy the dev team coffee? :coffee:

I’ll start some work on a download page when I can. And try to help with documentation.

Is it a good idea to have some of the basic documentation on the Website? For new users? Or should all documentation stay on the wiki?

Also, is it a possibility to run the website on Github Pages Jekyll. So updates to the website happen immediately upon push to repository? This makes it much easier to approve updates, just review, and merge! :wink:

1 Like

I would put all the documentation in the WiKi, cause there’s a wiki for :wink: On the website I would only put some basic infomation, what syncthing is all about (so far it’s not about the money :wink: )

Dutch translation is already done I see now (I prefer for myself english, so didn’t see it yet)

Isn’t that a bit dangerous? Before you know it it’s not the way you had in mind to go forward :wink:

Big changes are always better presented as a series of smaller ones, with discussion in between. You don’t want to file a ten thousand line pull request in one go and then be told that the underlying principle should have been done differently, for sure…

Anyway that last paragraph in the post isn’t the most thought through. I’m just trying to answer the old question of “can I pay you to work more on Syncthing” with the usual “no, but maybe you can pay someone else”. :wink:

The Wiki should be the authoritative source. That doesn’t mean we can’t display the docs in other places too - for example we already bundle a PDF of the getting started guide in the downloads. Maybe we could mirror the getting started guide (etc) to the main web page, if a link doesn’t cut it for whatever reason.

That’s already the case.

Well, it’s not hosted by Github any more because I wanted to do HTTPS, but it is instant-updated on push to master. So anyone with push access can update the web page, it’s just a matter of approving the pull request. It’s not currently run through Jekyll, but it could be if we wanted that functionality.

1 Like

Ok good. The wiki will be easier to use for beginner users with some improved navigation added. As well as new articles aimed at “syncthing for grandparents” :wink:

Ok perfect. At this point, I think Jekyll is an unnecessary build step. It makes sense to use Jekyll on Github Pages because it auto-builds for you… but how the repo is now works just fine for me!

1 Like

I would like to add that all of these points are also true for the Community Contributions (eg GUI wrappers).

If you don’t know what to improve in Syncthing, or prefer to use Python/Java/C#, have a look at these projects :wink:

2 Likes

Indeed, what @Nutomic says. I added a sentence about this above as well to make it clearer.

I moved 3 posts to a new topic: Documentation/wiki improvements