It has been nearly a year since I released EasySync. During that time, I've had a chance to talk with and help a lot of FileMaker developers with EasySync in particular, and sync in general.
Here are a few things to think about when you "think sync."
Do you really need sync?
This is the first question that I ask prospects that come to me wanting sync solutions, or support for EasySync. And do you know what? It turns out that most of them don't really need sync after all.
If you do a little digging, you'll find that most of the time mobile users do have access to a reliable internet connection. Therefore, using a hosted solution that is accessed via FileMaker Go over a WiFi or cellular connection to FileMaker Server might very well be the way to go. Why go through all of the trouble of setting up sync if there's really no need for it?
Only sync what is necessary.
EasySync does make it very easy to add sync to an existing solution. However, you really need to think through what you're trying to accomplish before you integrate it. And, I would argue, that holds true for just about any sync solution that you decide to go with - even if you "roll your own."
A number of developers have come to me after trying a "just set it up and sync" approach. They've given no thought as to what really needs to be synced. And rather than taking the time to think things through, they try to sync everything. Every table. Every field. Every record.
Sometimes that works. If you have a simple database, with a nice clean design, and a reasonable volume of data in it (whatever that means), then you might be able to get away with this.
But if you're trying to sync a solution that has "60 tables ranging in size from 10 fields up to 874 fields although the majority fall below 150 fields per table, and approximately 50 tables require sync capability" (a real scenario that was posted to the EasySync forum) then you're probably going to run into issues. And again, you'll likely run into this regardless of whether you use EasySync or any other sync solution.
So before you wire up EasySync, take the time to set some goals. And do what you need to do in order to make sync work efficiently for you. Only sync what you really need to sync.
Another scenario that I've heard over and over again is that when doing an initial sync the process takes a very long time. Well, of course it will - unless you've made an effort to pre-load data into the mobile solution. Doing so will eliminate the need for EasySync to have to do a large, time consuming initial sync.
Encourage users to sync frequently.
The more frequently that users sync, the less data needs to be pushed and pulled. It's that simple. If a user can sync every few hours, encourage them to do so.
EasySync is transactional, and it can handle common issues such as dropped connections, user interruptions during sync ("I'll just play a game of Angry Birds while the sync is running"), and so on. EasySync usually recovers quite nicely from those scenarios.
However, keep in mind that if a user interrupts the sync process, or their connection goes down during a sync, then the sync process has to start from the beginning. It does this to ensure that no data has been lost in the "push" to the server, and nothing has been missed in the "pull" from the server.
Take the time to educate users about how sync works, and explain to them that they should try to let the sync process complete whenever possible.
EasySync is open source (as in free), and people obviously find that aspect of it to be very attractive. You may be saving a significant amount of money by using it.
But that doesn't mean that you should "cheap out" on the other aspects of your solutions. Don't use EasySync if you host your solution with FileMaker Pro. (Yes, I know it can be done). Spend the money to do it right. Use FileMaker Server. Either spend the money to setup a server, or use a FileMaker database hosting company.
Also, don't "cheap out" on the mobile devices. You might be able to get away with using a four year old iPod Touch, but don't be surprised if you run into issues.
EasySync is FileMaker.
At its core, EasySync is really just a bunch of FileMaker scripts. There's nothing magical about EasySync. No plugin. No voodoo. No Jedi mind tricks going on.
So if you're having a problem with EasySync, try to debug it just like you would any other FileMaker solution. Run the script debugger. Walk through a sync. Take notes, and make observations.
This also means that EasySync is subject to the same limitations and the same bugs that every other FileMaker solution will encounter. For example, there are known issues when Base64 encoding and decoding secure containers. It's a "FileMaker" issue - not an EasySync issue or bug. There is nothing that I, or any other developer, can do it about.
EasySync isn't "broken."
I can't tell you how frustrating it has been to get messages and see the posts that claim that EasySync is "broken" and "doesn't work." It does work, and there are plenty of developers out there that have successfully implemented it.
If EasySync isn't working for you, then you've done something wrong. That sounds harsh, but its the truth. You might have setup a relationship incorrectly. Maybe you've missed one of the required "ES" fields. Maybe the table occurrence names in the mobile and hosted databases are slightly different. Double and triple check everything.
I hope these thoughts and ideas will help you to think differently about sync and how you're implementing it (or planning to). Best of luck!