After my last post about Android, I want to highlight some of the best things about the modding community. Thanks to the Google Android Open Source Project, projects like Cyanogenmod provide for an alternative operating system image for many Android devices. In the case of the AT&T Captivate, the latest official OS is Android 2.3 Gingerbread. A "stable" CM7 exists that is also based on Android 2.3; however, a more recent build exists, CM version 9, based on the latest Android 4 (Ice Cream Sandwich, or ICS). When I upgraded from stock Samsung OS to CM7, the functionality of my device was far better than the original OS. Upgrading CM7 to CM9 was even a bigger upgrade, like night and day, and despite being labeled an "experimental" build, it's been far more stable than CM7. With the Samsung OS I would lose wifi and cell all the time, on CM7 I did not but the phone would lock up and I had to reboot it. Since CM9 I have had no problems at all.
Open platforms require respect. Open platforms provide freedom and with freedom comes the responsibility to not abuse that power. When that power is abused, respect is lost and then instead of a innovative collaboration between OEM and community, it becomes more like a battle, as with iOS. Do we really want to encourage OEMs to take Android down the path of locked down OS builds, underground modding, paying for the privilege just to make an app subject to arbitrary rules and delays from a app store resulting from a forced monopoly?
I believe that a few recent posts by xda-developers and Engadget crossed that line of respect. Recently, a leaked firmware for the new Samsung Galaxy S3 became available online. Shortly after, an XDA user ripped all of the proprietary apps off the image, including S-Voice, a direct competetor to Apple's Siri, and posted them in a thread called S-Voice and ALL I9300 goodies (Get whatever you want). This was then highlighted as front page news "Samsung S Voice Ripped for the World to Enjoy", and covered on Engadget. Samsung then blocks clients not on S3 with a simple check of the phone's model name, something trivial to workaround technically but a clear sign (in my opinion) that Samsung did not want this happening. Shortly afterwards, a cracked copy surfaces that sends S3's model code regardless where it is installed, "fixing" the issue. XDA praises this achievement again on the front page as S Voice Back Again, the XDA Way. People rip apps/ROMs/proprietary functionality all the time, but some aspects of this particularly bothered me:
I have been experimenting with GWT using a RESTful (jersey server) backend as its data source. When deploying both my application and the backend to the same server this worked great, but once the server side was finished I wanted to deploy it to Tomcat on my Amazon EC2 instance, and continue debugging the application using GWT's Developer mode. This, unfortunately, does not work, due to Same Origin Policy restrictions of virtually all browsers.
The most standard way of circumventing the Same Origin Policy is to use Json with Padding, or JSONP. The technique in a nutshell is that the server returns a JavaScript function call. The client thas prepared for this by creating this function in the DOM of the current page in the browser. The client tells the server "The name of the function is xyzzy" by sending in a query parameter, usually named "callback." This post shows some ways around this issue.