I'm not sure where the best place to post this is, so I posted it here. I figured that it matches the topic. This is pasted from my blog post:
<http://danopia.net/posts/12> You can check my instance of Sails out at <http://wave.danopia.net/> (provided it's up ;) and my GitHub project is at <http://github.com/ danopia/ruby-on-sails>. Any comments, here or on the blog, are appreciated. --------------------------------------------------- Ruby on Sails is a project that I started about a week ago (10/19/2009). It is a homebrew Google Wave provider. The short history of the project has had many setbacks, including IRB dropping characters when I paste in packets, me having to write a custom Ruby ProtoBuffer parser, and a few rewrites of old code that already was old and badly designed (in a week-old project that was written from scratch!). Some highlights of the project: 1. The communication between the provider and any "clients" (aka servers that interact directly with true clients, such as the Rails app) is done with DRb. Sails doesn't contain more than 10 lines of code concerned with connections to the provider and sending data out. 2. It has a reusable ProtoBuffer class that can be used by any Ruby project needing to parse/encode Google ProtoBuffers. (This code will probably be packaged into a gem when I get the time.) 3. The package includes a little telnet server that just dumps the list of waves to the terminal, along with the complete history. Although this is probably broken right now due to my switch to a new Playback Class last night for history, it shows how easy it is to interact with a Sails server. 4. Federation! Yes, that's right, it's federated. Not without its bugs, though. As of this post, it could successfully receive deltas from FedOne, ask for the full history of a wave, show the wave in a WebUI, and send signed deltas back the remote FedOne to apply. It also successfully hosted a wave that remote FedOnes could work with, but this broke recently and even a rollback of my Sails repo didn't fix it. I heard that it's an issue with the latest FedOne mercurial commits. 5. Short, or at least shorter than FedOne. The main file is 865 lines (including blanks/comments) as of this post; the code that interacts with XMPP is <400 lines; all the logic from the WebUI is 75 lines. The little Telnet server is 50 lines, 15 of which actually involve printing the wave list to the console. 6. Accounts: This is why it uses the Authlogic gem and SQLite. When you log in, though, the WebUI lists EVERY wave, not just yours. This is on purpose. It would be a lot more boring otherwise. 7. YAML configuration file, which can even store wave "fixtures" that are parsed into the provider on startup. 8. Not written by Google. This project is done by a single high- schooler in his off-time between homework. It shows that you really don't need a few hundred people to write a provider. Also, as far as I can tell, this is the only non-Google-written server that has semi-working federation. Pygowave isn't federated yet, which is why I can say that. If some other federated third-party server exists, feel free to cite it in a comment. I'd like to play with it. Finally, you can check my instance of Sails out at http://wave.danopia.net/ (provided it's up ;) and my GitHub project is at http://github.com/danopia/ruby-on-sails. If you are testing federation, please note that the server is currently configged to use @wave.danopia.net. It would be interesting to see what happens when one adds an @danopia.net to their wave, unless it just accepts it without any errors. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Wave Protocol" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/wave-protocol?hl=en -~----------~----~----~----~------~----~------~--~---
