Share the Knowledge!

July 12, 2013 – The final release 1.0.0 of SynoBox is now here. Check it out at the link below.

Implementing a “full” DropBox Client to the extent that the ape supports it (that other than efficiency is almost everything) in a NAS Appliance, in this case a Synology NAS with firmware DSM 4.0 and up. The requirements of “firmware” are due to the underlying Linux libraries and configurations on this particular NAS and just for the version of Phyton, packaging and compiling of the required binaries and libraries that abstract the User from the need to have any technical knowledge beyond the Web Management Interface.

Synobox, although a fully working client, is still an alpha and aims to propose a Dropbox client for NAS Synology, as it hasn’t yet proposed by Dropbox. It uses Phyton and the Dropbox REST API, that allows to interact with Dropbox, in a similar way than the Dropbox client does Windows, Linux and OSX. Be aware that it is not developed nor maintained by Dropbox, and is distributed AS-IS

The Home of the Proyect is hosted at http://synobox.fr.nf/ and the code (versioning and forks) is hosted on Bitbucket https://bitbucket.org/polandj/synobox/overview and while they move everything to the Home of the Proyect you will temporarily find developers’ documentation and technical Issues.

Developed and Maintained by Jonathan Poland & Christian Bourgeois who hold the Copyright (c) 2012 to the Code.

Share the Knowledge!

Helpful(2) Unhelpful(0)
  • Original Source: http://synobox.fr.nf/story/

    THE STORY BEHIND SYNOBOX by Christian, aka momiji

    It’s been more than a year since I started this project, and I want to share my experience.

    I started working on the SynoBox project in early september 2012, and released the first alpha version on january 17th, 2013.

    The current release is approaching 1.0.0 after more than 15 alpha releases and some temporary release candidates.

    The origins, I’ve been using DropBox mainly on my MsWindows Desktop, and on my iPhone. I consider myself as an advanced DropBox user.

    For example, since the files I need to share are located on different folders throughout my desktop hard drive, and I don’t want to move all of them to the DropBox folder, the one that is synced with the cloud, I found my way around it by creating NTFS junctions (sort of unix soft links), so I can sync to Dropbox files located anywhere on any of my drives, like C: or D:. This was the easiest way I could find.

    Later, after I bought my NAS, with witch I was very please, it was exactly what I needed, at home, to store all my files.

    I eventually started using CloudStation, but it lacked some sync features that I really needed: Selective Sync (the ability to choose what folders to sync in each device), and also I couldn’t find any way to create soft links on my NAS.

    That’s why I started looking for a DropBox client for my NAS (a Synology), and finally found SynoBox that’ve been created by Jonathan Poland and was hosted on bitbucket.org.

    The development phase: The application core, as I started analysing existing code, was far from being completed, but contained the core features that allowed me to carry on with the project (the DropBox SDK was already integrated, with code to synchronize folders).

    That was very important as I didn’t knew Python programming then, and even if I had coded a lot on it before, it’s always easier to enhance and fix existing code than starting from scratch.

    Thanks to Jonathan who shared the Bitbucket Depository, I could start writing code, slowly at first, afterward more rapidly, I started adding all the features I had in mind.

    The GUI Development: Because the core is coded in python, the GUI needed to be in the same language. I’m no expert in Synology Development, but I found the easiest way to start was CGI, and after fixing typical unicode issues, I built all the GUI using some other frameworks that were familiar like jQuery and Bootstrap.

    But as time passed by and the core got more and more complex, the loading time of the GUI on my NAS increased to a point it was reaching 4 seconds, which, IMHO, makes it unusable.

    So I started to look for alternatives, like web frameworks, but they all require too much rework, and I wanted to keep existing CGI scripts as people probably had much faster NAS equipment than mine.

    I finally decided to code it on WSGI, a very simple implementation available for python, while keeping it compatible with CGI with a minimum of recoding.

    The Python Runtime: During development, I realized that that I needed a better unicode support , than the one supported by python 2.7. Then I was using the version available in the SPKSRC repository, cause Synology didn’t officially supported it.

    Surfing on the Internet, I finally found that version 3.3 could fit my requirements, then I verified that it actually did on my Virtual Ubuntu, I use for development. It took me a wile and a lot of work to have a build ready for my NAS (that uses a 88f6281 architecture), then for every other architectures, one after the other. It now works on all Synology architectures, and again thanks to the SPKSRC framework.

    The web site: I naturally started on Bitbucket where Jonathan hosted his code was, but found it limited in terms of page theming, and the automation of uploads of new versions. The latter was quite annoying as I needed to upload one file per architecture, which grew to 10 at that time.

    So once again, after some research, I decided to use WordPress for my blog and found my first free hosting platform at 000webhost.com. But of course, free hosting was too limited, and the up time wasn’t that good, so I moved to another free hosting at byethost.com, and after testing it for a month, I finally opted for to pay for the hosting.

    The synobox.fr.nf domain name is provided by azote.org, a french association, that allows creation of free subdomains like .fr.nf.

    The donate button is provided by Paypal, which I just had discovered as it was the first time I ever use it!

    The things learned: From technical perspective, I learned python, how to bootstrap, the DropBox API and WordPress. This’s my very first “Open Source” project, sharing with people other than myself.

    It may seem easy, but it’s not: it takes quite a lot of time, and it demands your best at all times in order to keep it working and preventing bugs on new releases.

    I learned how difficult it is to write documentation in a second language, but I think I’ve been able to produce something at least understandable.

    The future: I will actively continue developing new features and fixing bugs 🙁 , until I’m bored or I don’t need it anymore.

    I hope you’ll enjoy it.

    – Christian, aka momiji

    The donors: Special thanks to all of you: Vladimir, Wim, Nicolas, Patrick, Stanley, Romain, Roman, Lukas and Herman.