PyGoWave Relaunch
Hello World!
I, p2k, main developer of PyGoWave, am currently rebuilding this project from the ground. I have decided this step, because I want to change the JavaScript Framework to SproutCore for a far better user experience and because the existing data structures cannot be used efficiently in combination with the Federation Protocol.
Therefore I renamed the original project to "pygowave-legacy", which is no longer maintained, and created a new repository with the old name.
Please delete your old forks or also rename them to "pygowave-legacy" and create a new fork of this project to keep up. All other references to the wiki entries or other files might also be invalid now, please take care of that.
The plans
Backend
- The Django backend will be dropped; only Twisted is used from now on
- Orbited will be kept as Comet-Framework for the Web Client
- The data models will be completely redesigned to fit the Federation Protocol requirements; all data will be XML documents
- There will also be an Erlang port of the RPC server as before
- For persistency, plain XML files, SQL databases and CouchDB will be supported
Protocols
- There will be means to convert operations and snapshots of waves for use with several protocols via a modular approach
- The old PyGoWave protocol will be replaced by the official Wave Data Protocol with a small extension to allow subscribing to events and for receiving letter-by-letter updates (this will be called "PyGoWave Simple Data Protocol")
- The official Wave Robot Protocol will be fully supported at a later point
- For clients other than the Web Client, there will be a bigger extension to the Wave Data Protocol which allows the reception of XML-operations (called "PyGoWave Extended Data Protocol")
- The client APIs, which will be available for lots of programming languages and platforms, will also come in two tastes: simple and extended
- The extended API features both raw XML data manipulation as well as wrapped Wave/Wavelet/Blip models driven by the PyGoWave Extended Data Protocol
- The simple API features Wave/Wavelet/Blip models only and uses the PyGoWave Simple Data Protocol
Frontend / Web Client
- The complete Web Client will be written with SproutCore, a versatile JavaScript framework which allows to write desktop-quality GUI applications directly in JavaScript
- The pure JavaScript code of Orbited will be ported to SproutCore as well as the STOMP protocol which is still used as underlying transport for message bundles
- The new frontend tries to mimic the behavior of the official Wave web frontend as good as possible (or even better)
Code sharing
- A new sub-project will be spawned to automatically convert the python code of the core algorithms to a number of other programming languages resp. frameworks just like PyCow
- In detail, the PyGoWave APIs will be available for: Python, JavaScript/SC, C++/Qt, ObjC/NeXT, C#/.NET, Java, PHP, Erlang and possibly others at a later point
- This converter will only translate a small subset of Python, though