FAQ

How does the synchronisation work?

There are three main operations:

  • synchronising the “log”, which contains information about who did what when. This is done automatically.
  • “announcing”: Means you declare this file or note for done and as the newest version
  • “pulling”: You get the newest version.
Checking whether a file was correctly transferred or whether it was edited locally is done by hashing. If you have a locally modified file from an older version, this is called a conflict. It can be solved by announcing the local file, or by pulling the remote file (thereby overriding the local edit). Or you can leave it in conflict.
If you have better names, please let us know.

It makes backups and keeps old versions, right?

No. You do it. Not Jake’s business.

IIRC, old versions are moved to the trash. One could write a module to hand a version over to a backup tool though.

Why and how is it secure?

XMPP has TLS encryption to and from the server. On the server however the traffic is visible (which is why companies might want to set up their own server). A additional encryption would be nice. Jake also has the feature to negotiate peer-to-peer file transfers directly over sockets, which of course only works if the computers can reach each other directly. This could be improved by ICE or other NAT-traversal methods.

Unfortunately, these direct transfers are not encrypted (yet). An AES encryption would be very easy to add.

I want to start hacking Jake! What are bits to enhance for interested developers?

See above. Also: Interface stuff. Everything that bothers you. If you are not a programmer, you could write an introduction on how to use it. Ask if you need any help: Johannes Buchner (xmpp: J13R@jabber.fsinf.at)

I’d like to see sharing of network resources. What that would do is tunnel local network services through XMPP and allow other users to use them. For example: Printer, file server, mail account … Technically it would be the same as ssh tunnels, but it could get a very intuitive GUI: Services available next to the user name, adding services with scanning the network for computers or a host for services (i.e. no port numbers if not necessary).

The definite guide for interested developers is at http://dev.jakeapp.com/documents/3. Every information should either be there, linked from there or added there :-) .

What are bits in the source that could interest developers?

I think those are pretty cool:

  • Folder Watcher (in fss): Watches a folder for changes
  • Folder Abstraction (in fss): Addressing files uniquely in a folder across operating systems
  • Content Adressing and retrieval using Request/Response (ics): A framework that allows addressing of content (can be files by file names), their retrieval and progress. Any underlying system (XMPP, Sockets, ICQ, …) could be implemented. Any type of content and visualization of progress can be done.
  • Cool interface (in gui): Responsive, well designed, feels native. Doesn’t look like the typical Swing app.

Does it use Peer-to-peer transfers like Bittorrent?

Not at the moment, because: Communication so far works mainly over the XMPP protocol. Since that goes over the server,  asking for parts from multiple sources would be pointless.

However, there is a interface that allows adding other transfer options (like sockets). These are tried in a specified order until one works. So you can add a bittorrent alike protocol: splitting files into 1MB pieces and requesting them from multiple hosts. The negotiation (who has what) would be done in XMPP.

If I’m online with Jake, can others chat with me? What happens to incoming messages, are they lost?

Jake is not intended to be a chat client. Use a jabber/XMPP chat client next to it.

If you are only online with Jake, others will see you as online. However, Jake is only registered at the server to receive Jake-type messages, not normal chat messages. Thus the chat messages will be queued on the server just like if you were offline. And you will get them when you go online with a chat client.

Leave comments with interesting questions ;-)

Not so interesting questions:

I am so 1337 and this is lamer than my patched git server!!1

Remember that you are not the target audience. But you are welcome to use the tool and bring forward suggestions.

Does it install a XMPP server?

No. You shouldn’t install one unless you know what you are doing.

I put in a 10GB folder and it didn’t transfer within 10 seconds!

*facepalm*

Leave comments with interesting questions ;-)
  1. #1 by Andy Yates on June 28th, 2009

    Hi Johannes

    In the FAQ, the word ‘wether’ should be ‘whether’.

  2. #2 by pqs on June 28th, 2009

    If I have Jake open with my usual XMPP account, for example, Google Talk, people will see me as if I were online? What happens if the chat with me? I won’t notice form jake! Can’t this pose some problems?

  3. #3 by johannes on June 28th, 2009

    @Andy, pgs: thanks. Updated it.

  4. #4 by pqs on June 28th, 2009

    Another question.

    Is it possible to sync two different computers using the very same xmpp account? This is, a project with only one collaborator, synced between two computers.

  5. #5 by johannes on June 28th, 2009

    Hmm … probably not with the same project. But you can use the same account for multiple projects (one XMPP resource is used per project). Otherwise, how would you address computer A or computer B if they completely look the same?

  6. #6 by pqs on June 28th, 2009

    I don’t know, but many people would like to sync two different computers belonging to the same person.

    In fact, what I like from jake is that it does not need a server to store the data. That’s its best feature.

    Now I use Dropbox to sync stuff like linux config files, documents, etc., and I’d like to change it to Jake, as I don’t want my data to be in Amazons S3 or any other cloud service.

    Dropbox allows to sync data of one user between several computers (office and home, for example), and to sync folders between different users (me and my wife).

    Jake would be much more useful if it could do both things. Now it only allows me to sync one project from one of my computers with my wife.

    But I don’t know how this should be done. I’m a user, not a programmer. I’m sorry.

  7. #7 by Lee on June 28th, 2009

    Question – could you use this to update a file on a server based in the same office as well as a file on a different pc/mac and a copy onto a FTP server?
    I use fling for part of this process, but need to keep the files updated over 3 pc’s and 2 mac’s as well as a copy to the ftp and this appears to be a more versatile solution
    Thanks

  8. #8 by johannes on June 29th, 2009

    @pgs: Create another jabber account for the other person/computer. It is free and done within seconds. You can even do it within Jake.

    @Lee: You can check the checkbox so that it fetches files automatically ones they become known. Or you could try the “JakeCommander”. It is a console tool to access the project that was especially useful for debugging. Could need some hacking to adapt to your needs. Otherwise maybe sitecopy or rsync can help.

  9. #9 by Frank on July 12th, 2009

    I’d love to see some more and larger screenshots before installing. Thanks.

(will not be published)