Fixing the 949 problem with Fipes
As said in a previous post, I'm working on a neat project called Fipes, a no-hassle web application to share files with your friends. What makes Fipes different from other projects like Dropbox, Box or even Open Source solutions like SparkleShare and Syncany, is that Fipes is privacy-friendly and simpler.
The initial idea was to allow anyone to share files by sharing a link. Whereas there are a lot of web applications offering this service, they often ask you to create an account. Moreover, to share files you need to upload them to their server, which can be a problem when you feel that your data or your privacy is sensitive. For example, think of all the business-related data dropbox could access.
So what I wanted was something that was easy to use, yet still respectful of my privacy. That's why I came up with these simple goals:
- Provide a small web application.
- Should be easy to install, to launch and to use.
- Should not keep any sensitive data about you or your files.
- Being free as in freedom, in other words free software.
To this end, Fipes takes a radical approach at the technical level.
How does it work?
The workflow is easy to grasp:
- Choose a file you want to share
- Ask the server to generate a public link
- Give the link to your friends
The fun part is that, until someone uses the link you gave them, the file is not uploaded to the server. When choosing a file, you register it on the server but your browser does not send any file data.
As Fipes does not want to keep any file data, once the server receives the chunks it forwards them to the downloader.
On the downloader side, the file is retrieved via a simple chunked response.
Here is a little recap with a sequence diagram:
Further explanations and what's next
What the Fipes model implies is that the user experience is synchronous. If you quit the page, your files are not available anymore. So you will need to leave the page open until your friends have gotten the whole file.
Another side effect of the « lazy upload » technique is that you don't have to wait for the whole file to be uploaded to share it with your friends.
There is still more work to do on Fipes to achieve these goals, but I hope it will be useful to others. In the next weeks I'll work on some of the next features, like the support of download resuming or a https version for the online instance. However the most important parts will be UI related as the current version is not fully understandable.
As Fipes is a free software, any contribution is of course very welcome. :)