Developing on the BitTorrent Sync API? Our developer evangelist is here to work with you.
I’m constantly impressed by the variety and depth of Sync API projects out in the wild and aim to highlight some of these projects going forward. If you are working on or have built something awesome using the Sync API – tell me about it! Do you know a a great Sync API developer that you’d like to see interviewed here? Let me know!
Aaron: Tell us about the Sync Linux GUI in your own words
Leo: I was very excited, when I got knowledge of the upcoming alpha test of BitTorrent Sync. Since my IT infrastructure is very heterogeneous, Linux support played an important role for me. When I got my first alpha version of BitTorrent Sync, my first project was to provide all the “glue” needed to deploy BitTorrent Sync as a background service on Linux servers in a well-defined way. This first project had a huge success but the user feedback revealed that there was also a relevant group of people using Linux machines as regular desktop computers. This was the starting point of a new project aimed to provide a user friendly solution for that. The first approach was a distribution package containing only a handful of scripts that managed dedicated instances of BitTorrent Sync for every user on the target system. This package was significantly improved when Mark Johnson published his first release of “btsyncindicator”, a small desktop applet, that displayed an activity indicator, showed the status of the syncing folders and connected peers and allowed to copy the secret of each folder in the clipboard from the indicator menu. Nevertheless Linux users still did not have a fully featured GUI like Windows or Mac users. With the release of the Sync API, I started to think about the possibility to fill this gap. The Sync Linux GUI is the result of this work: it tries to resemble as much as possible the original GUI available only on Windows and Mac trying to provide the same features (if possible), the same convenience in installation, the same user experience and the same support for multiple interface languages.
Aaron: How’d you get here and how’d you get started as a developer?
Leo: I think that my fascination for computers was born in 1971 when I saw my first episode of Star Trek 😉 But it took 10 more years to put my hands for the first time on a real computer (it was an Apple II in a ham radio shop). After one year of nagging my parents I was the proud owner of a Commodore 64 and first taught myself the Basic language and then the 6502 Assembler. Since in good old times people with programming skills were very rare, after a few months I discovered that I could earn some money by writing software. This was the beginning of my professional career. The first project was quite interesting and it had a sort of funny aftertaste. Its name was NecroGest 1.0 a software able to manage the electrical infrastructure of more than 90 cemeteries of the province of Lucca. Electrical infrastructure in a cemetery?!?! Yes! Italian tombs are beautiful marmoreal structures and on each of them there is at least one elaborate artistic grave candle powered by electricity. And the relatives of the deceased have to pay an annual fee for maintenance and power. NecroGest managed the entire business process including the printing of the absolutely non-standard sized Italian national mail money transfer vouchers (“Bollettino Postale”) on Star’s SG-15 dot matrix printers.
Aaron: Any tips for people looking to build on the Sync API?
Leo: The Sync API is well-documented and you can always test it without the need to write any code making it very simple to design your application. Using the tool curl (that is available by default on many Linux/Unix/BSD based systems) you can test API calls from the command line:
curl -u admin:secretpassword ‘http://10.65.0.16:8888/api?
You can test every method from the command line and you can design and test the data flow of your application before having written the first line of code. Isn’t that great?
When designing your application, you should also make sure not to flood the Sync API with an endless number of calls in a short time. This is obvious in any interprocess communication design, but it’s quite easy to forget it during development. When collecting status information, like the Sync GUI for Linux does, it is a good approach to measure the processing time of API calls and dynamically adapt the update frequency of status displays.
Aaron: What’s next for the desktop GUI and what other projects have you got going on with the Sync API?
Leo: In the next days I’m going to publish a very small maintenance release of the Sync GUI with additional language support and a few small improvements in usability like support for Sync URLs (e.g.: btsync://SECRET) and more possibilities to copy secrets to the clipboard. It would be really nice to provide also installation packages and repositories for additional Linux distributions (especially RPM based) but since all my infrastructure is based on Debian derived Linuxes, it’s not so easy since I have no practical experience with Fedora/Centos/RHEL. Some support from the community would be really appreciated. There is still a series of features in the official Windows/Mac GUI that are not available in the Linux GUI: one-time secrets and detailed transfer status monitoring, but the current API has no suitable methods for doing that, so I’m really eager to see, what’s coming next from the Sync developers.
Aaron: What is the vision for the desktop GUI and what problems does it solve?
Leo: The vision is very simple: BitTorrent Sync should be as easy to use on Linux as on any other operating system. I believe that BitTorrent Sync is a great tool that improves everybody’s life without sacrificing his privacy. The availability of such a tool on any relevant platform is a key factor for its success. If my Linux Sync GUI supports that success, I’m happy.
Aaron: What has the response been so far?
Leo: The response was overwhelming. I got a lot of positive and constructive feedback in the forum and this pushed me to improve and extend the project from day to day. Two months ago I wrote some lines of code for tracking the download figures from the repositories (See http://www.yeasoft.com/
Aaron: How can the Sync community help you? What input do you need?
Leo: As I mentioned previously, I’m still hoping to find someone who’s willing to collaborate in creating packages for other Linux distributions since there is a certain user demand for that. We should also never forget, that the localisation of the Sync GUI was completely community-driven and still relies on the voluntary work of many people. And obviously I’m happy about any suggestion and idea that helps improve the software.