4. The API portability Looking backward (2) The API had been designed to be portable since the beginning. Client Sync APIs OS and native data access
5.
6.
7.
8.
9. The how (1) Current status (3) SyncML Server (choose your favorite open source one) Sync Engine Sync Source Back End
10. The how (2) Current status (4) Sync Engine Sync Source Server Authentication OK What changed? Changes Client changes Server changes .. Black magic. . Apply changes Result Result
11.
12.
13.
14.
15.
16. Data model into the API Looking forward (3) PIMItem ContactItem EventItem TaskItem Standard format parsers and formatters PIMSyncSource BackEnd Interface (client code)
17.
18. The wrapping route Looking forward (5) With STL support With QT support And if no good containers are available, we can revert to the ones we have today (safety net) Template <T> Funambol::list<T> { std::list<T> stlList; void append(<T> item) { stlList.append(item); } } Template <T> Funambol::list<T> { QList<T> qtList; append(<T> item) { qtList.append(item); } }