What Technologies Is Google Wave Using? - google-wave

What are the technologies employed in building Google Wave?
Edit: I have moved and amalgamated the answers into an answer below, rather than here in the question where they were.

Real-time editing - some kind of Ajax/Comet for server side calls.
Version-control.
Built in Google Web Toolkit (GWT).
GWT involves Java, Javascript, CSS, HTML.
Custom built protocol. Wave protocol.
Uses the xmmp standard
Rich text-editor.
Language translation.
Google Gears, for drag and drop (of files) functionality. Trying to get it into the HTML5 spec.

It's using HTML5 for the interface and XMPP (Jabber's protocol) for the communication stuff.

The revolutionary part is Operational Transform. Based on the Jupiter collaborative system.
You may like to watch this video: Google I/O 2009 - Google Wave Under the hood

I believe Google Wave is built on HTML5.

I understand that they use an Extension to the Jabber protocol for the federated wave servers.
The realtime editing is based on an algorithm sometimes called jupiter algorithm and described in this paper. More informations can be found on http://www.waveprotocol.org/whitepapers

Related

Current support status of WebRTC in Codename One and AntMedia usage

Is there any information, updates, or documentation regarding Codename One's WebRTC support? There was a mention of it months ago in this comment on Stack Overflow (AntMedia Native Interface issues), but then I haven't heard anything more about it.
For the time being, I'm supporting live streaming on AntMedia via native interfaces that do live streaming with RMTP, as on my own I couldn't find a way to support WebRTC in Codename One. Unfortunately I realized just today that the RMTP support on Android doesn't work anymore (I don't know why, in the past months it worked)... anyway I've always considered RMTP as a temporary workaround, maybe this trouble is a good opportunity to switch to WebRTC.
I've seen that Steve has quietly created this cn1lib, which has not been announced (maybe because the work is not yet finished?) nor is it present among the extensions that can be installed via Codename One's Control Center:
https://github.com/shannah/CN1WebRTC
I found the documentation here:
https://shannah.github.io/CN1WebRTC/javadoc/
but comparing this javadoc with the documentation provided by AntMedia I just don't understand what I have to do, as AntMedia provides its own SDKs for Android and iOS, provides documentation to use them, but I don't understand how I can use in their place the cn1lib made by Steve. Obviously porting their SDKs is not easy, otherwise I would have already done it as the first option. In any case, the AntMedia server should be independent from the SDKs used, as it should use standard protocols, if I understand correctly.
Specifically, I have a server running AntMedia Enterprise Edition 2.1.0, whose documentation on WebRTC support is here:
https://github.com/ant-media/Ant-Media-Server/wiki
Thank you
I haven't used AntMedia Server, so my following comment is based on 10 minutes looking through their documentation.
It looks like they provide their own API that is distinct from the standard WebRTC APIs. The Codename One WebRTC lib is built on the standard WebRTC APIs. I think that the best route, if you want to use AntMediaServer's APIs is to create native interface wrappers for it.
It is also possible and likely that you can just use the Ant Media Server and then use the standard WebRTC API to connect to it. If this is the case, then you would be able to use the cn1lib with it. However, their documentation only seems to show how to use their custom API for the client.

Titanium mobile

I have just briefly looked at this as a possible technology to use for a mobile app I have ini mind but can any one tell me do I need to be paying a support subscription to use the GWT-RPC jar. I briefly looked at an RPC tutorial and this is the impression I get?
You can develop and distribute Titanium for free. You don't need to pay or to subscribe for anything.
Only if you want support or using special features (ACS Cloud Services, Modules) you'll need to pay.

Toolkit options to write a crossplatform mobile app in 2012?

I'm currently investigating the alternatives for crossplatform development for Android and iPhone (Windows 8 could be a nice addition). The app is basically a "map with an asociated app", and certainly not a game.
Searching here I see many outdated advice and tools from 2010/2011, but since then Apple has changed their policies and surely new things have appeared.
My current list and light research (might have facts wrong) is:
Monotouch/Monodroid: .NET (Mono) framework. Create "native" apps on both platforms. Requires rebuilding UI code (or similar things).
Appcelerator: Javascript framework to compile native apps.
Corona: Similar to Appcelerator.
Phonegap: Similar idea, but looks like it uses a wrapper to appify HTML5 content
SenchaTouch: Another HTML5 based platform.
Wink: Yet another HTML5 toolkit.
XVLM: Android to ObjC compiler, probably creating ugly iOS apps.
Unity3D: For games only.
Moai: For games only.
So, there are three main ideas, with some frameworks implementing each, it seems to me:
Have an abstraction layer over native iOS/Android code and build for each platform using the provided layer. (Monotouch, Unity3D)
Use HTML5 (coding in Javascript) and some kind of wrapper to "appify" the web content. (PhoneGap,Sencha,Wink)
Code using a framework that will output as a compilation pass (or similar) a native app for each supported platform (Moai, XVLM,Appcelerator,Corona)
The questions:
Is there a fourth idea I haven't yet found?
Is there any blatant mistake in my research for any of the specified frameworks?
Is there any known problem for map integration with any of these ideas or specific frameworks?
Only a partial answer:
Ad 2. Appcelerator / Titanium is more than just HTML5. I read this pretty extensive comparison between PhoneGap and Titanium the other day on Hackers News. I found it very informative. The link points to the HN comments, the link to the actual article is at the top.
My main experience is with Mono for Android and MonoTouch, so I can't personally speak much to the other options. I personally find it to be the best option there is, as it allows you to share a large amount of your code across the platforms (even extending to non-mobile platforms if you stick with .NET), while still allowing for a 100% native UI, which is extremely important. If you're looking for resources on getting started, I have this video which discusses approaches and libraries for sharing a lot of code across platforms, and also this book which covers the same thing, but also expands to talk about how to do things like store data, use maps, access the network, etc.
I also want to mention MonoGame, which is absent from your list. MonoGame is an open source XNA implementation that sits on top of Mono to allow you to target iOS/Android/Max OS X.
From what I have experienced, if you want to have a native app go Mono, if you don't need native go PhoneGap. Native is best of the UI is very important, ie games or fairly graphical apps. But from business type app, CRUD, Phone gap works well.

Silverlight client web application to connect to Lync 2010 online

I'm searching for a way to build a silverlight client web application that connect toLync 2010 Online with audio, video, files and whiteboard features. Could anyone recommend some documentation?
This won't be easy... You could implement IM and presence fairly simply, but there is no support in Silverlight or the Lync APIs for the real-time AV protocols needed to support Audio and Video - it's a similiar story with sharing and whiteboarding.
Unless you have the time on your hands and are willing to attempt this without support/documentation, i'd recommend against it.
Edit: Have you taken a look at the web app and attendee client? The web app is the closest I think to what you want to achieve - I think you'd find it very difficult to improve on this.
If you think this is the right answer, please mark it as accepted, to help anyone else browsing the question. Thanks!

Guidelines for LBS Mobile application development

i need some help!, i am planning to develop such LBS Mobile Application which find nearest things based on gps data from mobile.
1.what are the best free and (preferably) open source technologies for development?.
2.What programming language to use for development of such application?.
3.what are the points to be considered?
I need the general overview of the requirements for planning, I was interested in having a general understanding of the data, tools, and frameworks required to accomplish the job.
The future proof way to write your application is using Web technologies.
Iphone and Android devices already support the W3C Geolocation API, with more on the way.
I recommend you take a look at a sample http://geo.webvm.net/ to get you started.
On Symbian phones, you can access location information via C++, java (when JSR-256 is implemented) and probably python.
You might also want to look into the Qt runtime as that is the new technology to use for Symbian development.
To start with Symbian application development, start with the Fundation's developer wiki
Both StackOverflow and Forum Nokia contain information about how to use JSR-256.
Relevant plug: There is whole chapter on LBS in Quick Recipes on Symbian OS.

Resources