1) Who are you ?
My name is Franck Lefevre. I am one of the offsync project managers. You can reach me at francklefevre@users.sourceforge.net.
As writing doc for offsync is not my only work, don't worry if I don't reply immediately.

2) What is the quickest method to evaluate offsync

I suggest taking a desktop version: it will be quicker to install, as you will not be initially required to get a connected PDA.
* Install this browser somewhere on a system connected to your LAN;
* Download the offsync's doc package;
* Unzip wherever you like;
* Open the file OffSync-HowtoInstall.htm and follow the offsync's installation procedure.


3) What is offsync ?

The goal of the offsync project is to offer a free, open source system to create, in a single entity, sets of documents retrieved from the network.
Making these documents locally available allows to use them from handheld devices without needing to be permanently on-line. This is essential for professional users as they need to be able to access applications even when their device is not connected.
offsync contains:
* the specification of a stream that can be conveyed over HTTP. Other transport protocols may be used, but because HTTP is widely available on today's connected devices, it is the primary one made available. In many cases, this approach allows the user and the developer to get rid of the nasty "conduits", which are so device-dependant, hard to maintain and inefficient when used over the Internet.
* an implementation of a Java module able to fetch documents from the network, to eventually analyze their content in order to find the linked documents that they are referencing and to apply the same process to these referenced documents. The document's content analysis is available or not depending on the document type and the module used. For instance, the current offsync module analyzes only WML, but is able to fetch and store any kind of content, such as PNG images or java byte code.
* an implementation of an interface to the above-defined module. This interface may be something like a Web site, a WML site or a Java applet...


4) What are the advantages of a web-centric model ?

For us, the Web-centric world relies on a few fundamentals:
* the web-centric model uses documents that are all available via HTTP with a simple URL;
* the web-centric model uses resources that may contain links to other resources, allowing one of them to access all the others by following the links
* the web-centric model allows a user-agent (ie. a browser) to collect resources without having to know their nature and semantics at download time. These will be resolved just-in-time by the relevant user-element.
The web-centric model is very efficient and reliable for network applications. This is best exemplified by the success of Internet and intranet applications. This model appears to be even more efficient when used on handheld or embedded devices. However, this introduces new constraints that are not handled by current systems.
These constraints, which are specific to the wireless environment, are:
* the networking conditions : mobile networks' general lack of coverage make connections far less reliable than in the office world. Mobile applications must be able to deal with off-line conditions.
* the device variety : the office world is populated with homogeneous systems (how many different OSs do you use ?). The handheld and embedded devices use OSs and hardware that differ.


5) Why does offsync use WML ?

The primary implementation of the offsync modules is able to handle many streams, but only WML pages are analyzed today. While it is easy to understand that analyzing Java byte code to know the links that it may contain is a hard task to achieve, one could wonder why we did not decide to deal with HTML first.
The answer is rather simple: when used by a talented developer, WML is more effective for writing mobile applications. It allows to create almost everything HTML allows. The few exception pertain to things that should not be used in a mobile application running on a limited device, such as frames...
Nevertheless we are working to handle WML2 and XHTML Basic, which are the future of WML1...


6) What kind of browser can be use as client for offsync caches ?

An offsync stream can be used by virtually any kind of open browser. One could even write an application that would dispatch offsync records in order to make them browsable by a regular browser.
An offsync file could also be used as a kind of file system for a micro-server...
The browser we prefer to use to leverage offsync is Wapaka, because we consider it as the best Java programmable micro-browser to run professional applications. For additional information, you can reach Digital Airways' dedicated Web site at http://www.wapaka.com/.


7) What should I do if I want to import several sites in a single shot ?

Remember the basic rules of the web-centric model : just create a page including a link to all the sites you wish to import!


8) How many sugars do you like in your coffee ?

None, but a piece of chocolate is always welcome.


9) Looks exciting! How can I help ?

Why don't you join the offsync team ? The project is housed at SourceForge (http://www.source.forge.net/)
First visit the project page (http://off-sync.sourceforge.net/), create your SourceForge account and then drop us an e-mail.


10) May I sell offsync to my customers?

offsync is made available under the BSD License. This means that you can do whatever you like with it. You can integrate it in your own code, you can sell it or use it for free, you can build a server around it, you can extend it as you like...
Several application servers' publishers are working to embed it in their commercial products. Read the "license" to know more about the BSD license.


11) What about copyright for the content I download to create caches?

Clearly you should be careful if you use offsync to grab third-party content and store it on a PDA. Offsync is best used for internal content. For instance, creating a cache version of product information for a salesperson.


12) I don't want to deploy offsync on my own server and I just want to use the service to create my personal caches. Is there a public site available?

Yes. You'll find it at http://www.mycgiserver.com/~offsync


13) What kind of guarantee can you offer regarding the quality of this product?

Absolutely none. Please read the license to know more about it. This is open source code: bring your own guarantee !


14) Do you plan to make a commercial product from offsync?

After consulting everybody here, it seems that we will never make a commercial product out of offsync.
The commercialization if such a product makes sense when associated to an application server, and we do not plan to write one: we work on the client side.
If you are looking for a professional integration service, ask your usual IT service company: they might have the skills to do that.


15) I found a bug in offsync. Who should I advise?

The project is housed at SourceForge (http://www.source.forge.net/)
First visit the project page (http://off-sync.sourceforge.net).
There you will be able to read the current bug list. If the one you have discovered is not yet known, you will find the right tool to let us know.


16) Don't you know that similar commercial packages cost 1000s of US$?

Are you certain that they are similar?
Aren't they using one conduit per platform?
Aren't they using proprietary protocols?
Are they really able to deal non-dedicated sites?


17) I saw an ad about a commercial application server including offsync. Should I buy it ?

If you are looking for a professional application with real guaranties and a full professional support : YES.


18) How do you make money from offsync?

We don't make any money from offsync. We made too much money with WAP, so we are in social work now...


19) What does an offsync HTTP stream look like?

An offsync file is called a "cache". The way it is actually stored in the client device depends on the browser and the device used, but the HTTP stream MUST be conform to the following specifications.
Typically, this structure allows a client user-agent to download a potentially huge cache without having to store it all in its memory. A cache is made of a set of records, and each record can be handled individually at download time. Each record contains 3 fields:
* field 1 : it contains 5 ASCII digits.
- The first two digits define the version number of the stream protocol.
- The current version is 00.
- The last three digits depend on the version used.
- For version 00, they can be whatever you like. They are often used to number the records, but this is not mandatory.
* field 2 : contains five ASCII digits coding - as an ASCII string - the actual length of the record's payload.
* field 3 : the payload. Its content depends on the records concerned.

A) The first record (= number 0) contains information about the file itself. It's made of tagged text strings and contains the following fields :
- version : the file format's version. The current one is 1.1.
- name : contains the name of the document. This name is the one shown to the user within a file browser.
- password : information about the encryption keys used in the file. It depends on the encryption system used. When no encryption is used, its value is 'none'.
- encrypted : information about the encryption scheme used in the file. It depends on the encryption system used. When no encryption is used, its value may be 'none'.
- type : contains the cache's type (document, folder or application)
- icon : name of the icon that must be used for this file within a document browser. If it is not defined, the one used will be deducted from the cache's type.
- create_date : contains the GMT date of the cache creation. Its format is YYYYMMDDHHMISS (Year, Month, Day, Hour, Minute, Second).
- editor : name of the user that has been identified while creating this cache.
- abstract : a text describing the cache's content.

B) The next record (= odd number) contains information about the following record. It's made of tagged text string and contains the following fields :
- version : the record format's version. The current one is 1.1.
- url : URL of the document
- type : MIME type of the document
- valid_date : validity date ( YYYYMMDDHHMISS GMT)
- modif_flag : tells whether the document has been modified while browsing.
- rights : a set of 3 ASCII digits (ex: 100) defining the "read", "write" and "execute" rights.
- browse_flag : tells whether the document has already been browsed or not.
- encrypted : information about the encryption scheme used in the file. It depends on the encryption system used. When no encryption is used, its value may be 'none'.

The way these fields are actually used depends on the using agent. The producer is supposed to use its best effort to set as many fields as possible.

C) The next record (= even numbers excluding nil) contains the actual data that has been described in the previous record.