Pulse: a new beginning
17th November, 2014 —
We’ll always have Munich
A few weeks ago, I got to spend a lovely day in Munich with Jakob Borg, author of Syncthing. I updated Jakob on how we were using Syncthing at Ind.ie (it’s what powers Heartbeat and is at the heart of the Ind.ie platform).
I remember telling him: “I know you didn’t ask for this, but this wonderful engine you’ve created as a hobby is going to one day power a new web.”
To cut a long story short, after discussing it in detail, Jakob and I decided that Ind.ie should take stewardship of the Syncthing project and rebrand it as Pulse. As part of this, Ind.ie would hire a full time person to help Jakob with this work and Jakob could continue doing what he loves: working on his baby. As part of the change, we also moved the license from MIT to GNU GPL so no one could close it off in the future and decline to share their improvements.
Unfortunately, changing an existing culture is hard.
Instead of working on what he loves, Jakob’s had to spend time answering questions about Ind.ie. This is not fair on him. He’s an awesome guy and, although he supports us fully in what we want to achieve, he’s made it clear that this is our fight, not his, and he has other things on his plate. In the same vein, it’s become clear to me that we need to have complete control over what is the core of our platform.
As such, we had a very amicable talk with Jakob and agreed the best thing to do would be to tackle this issue with a slightly different approach that should make everyone happy.
So, from today, Pulse is now an officially-sanctioned fork of Syncthing.
Twice the fun
Syncthing will go back to being Syncthing and developed out in the open. Make sure you also read Jakob’s post on it. This way, Jakob and the community can evolve Syncthing as they’ve always done. We’ll be tracking the changes and incorporating the ones that make sense for Ind.ie into Pulse. In the same vein, we will be improving Pulse also and, of course, those changes will be available to the Syncthing project.
The separation means that we can concentrate on rapidly improving Pulse in line with the needs of the Ind.ie platform. It’s our hope that the Syncthing project can make use of those improvements also. We are starting by devoting an excellent full-time developer to Pulse and tackling some of the bigger issues around it.
To underscore our commitment to Pulse, and given that our crowdfunding campaign is progressing on target, it is my pleasure to announce that George MacRorie is in the process of joining our team to work full-time on Pulse.
George spent the last week forking Syncthing in the evenings (in what I can only describe as a heroic effort) after working full days at his current job. He’s done an amazing job with it and this is only the beginning. We are going to do great things together.
Here are the highlights of the fork:
- The source is now indepedently hosted on source.small-tech.org
- We have our own release process that uses our Jenkins server
- Binary downloads are hosted at download.ind.ie/#!/pulse/.
- We’ve issued the initial release of Pulse, version 0.1.0, which corresponds to Syncthing version 0.10.5.
- We have our own Pulse discovery server, running at discovery.ind.ie
- As part of the process, we Dockerised the discovery server and we hope the Syncthing folks also find it useful. George has written a blog post describing it.
Basically, Pulse is now a fully independent project.
Right now, very little is different in terms of functionality:
- We have turned off the opt-in analytical data collection option until we’ve had a chance to review it in detail.
In terms of development process, we use a focussed, design-led process. We will, however, be taking part in the Syncthing forums and be accessible to the community from there.
The combination of the two approaches, working on the same problem, should provide some fruitful results and benefit one another with their positive aspects while hopefully compensating for the negative aspects of the other.
In our near-term roadmap, we are going to be tackling the following issues:
- Getting rid of restarts on configuration changes.
- Implementing limited permissions in repositories
- Event/streaming interface for detecting file changes (instead of polling)
- Support for encrypted nodes.
Onwards and upwards
While this wasn’t our original plan, I actually believe we’re at a better place than we were a week ago. Pulse is now totally within our control and we can quickly iterate on the important features using a design-led process with a full-time developer at the helm.
I also hope that the Syncthing project will benefit from our improvements and we look forward to working closely with them and staying compatible with the Block Exchange Protocol.