Friday, July 02, 2010

Diaspora: the $200k scam on free software

After a month of work, its bluntly clear the community has been scammed for $200k.

Four NYU students posted a video and solicited funding on the kickstarter website, promising to build an open source, pro-privacy alternative to Facebook. The community response was astonishing. Its too bad the people pledging didn't research these students, for example, checking to see if they have Ohloh pages with their past contributions to other projects.

The first and most severe, after a month of work, they have posted that they have running code but will not allow the community (including the people who paid for it) to view until its "complete". This is commonly referred to as the Cathedral model. People have invested a great deal of trust in them to develop the code they have promised to, the least they could offer is read only access to their VCS. Instead they posted a video demonstrating it, which poses the second problem.

Their claim to use the "latest and greatest in web standards" fell flat on its face in their choice of method to post their video. Instead of using HTML/5 <video>, which they could have even used Ogg with the Cortado java player as fallback for MSIE and Safari, they used a flash player. Perhaps they don't realize Flash is not a web standard, or that HTML/5 has built-in video support, in either case its a really bad sign.

The most blunt demonstration of their lack of skill and commitment is in their use of websockets. At this point, websockets is still in heavy draft state with the few browsers/servers implementing it all running a slightly different, incompatible variants, none of which will be the final draft which is (at least) months off. Moreso, they propose to implement chat and gaming over their own websockets-based protocol rather than using existing standards such as XMPP.

XMPP is being used by a wide number of social network services already including Google, Livejournal, and Facebook. Its an established, widely implemented standard recognized by the IETF and the community at large for federated, real-time exchange of chat and presence (status). Beyond chat, XMPP has support for PubSub, Data Forms, and Ad-Hoc Commands. There is virtually nothing Facebook, or Diaspora, aims to accomplish that cannot be implemented using these existing standards.

What these four students are building is lock-in, if they finish at all. Instead of replacing the walled gardens of Facebook and other proprietary social network sites, they aim to build a network of little sites running the same software, only able to federate with each other, and only able to be extended with their custom APIs. These sites will not federate with other distributed social network efforts being built such as movim and concordance.

Hopefully the community will learn a lesson from this. Pledge money to experienced developers with demonstratable code, not charismatic students pledging to work on free software only if they're paid to do it.

Monday, June 28, 2010

Using Android without Google (part 1)

As magicfab on identi.ca requested, I'm starting a journal of my experience using Android without Google's proprietary apps.

I own an HTC Eris phone which originally came with Android 1.5. A few months ago a firmware was released by a 3rd party which allows users to gain root on their phone (about time) and I've been experimenting with this since. My primary interests were removing HTC's "Sense" UI so I could use a different soft keyboard and removing the backdoors HTC, Verizon, and Google installed in the phone.

After some disturbing problems with the VanillaDroid firmware, I switched to CyanogenEris 3.0 last week. Not only did this new build not come with HTC's Sense, thanks to Google hitting them with a threatening DMCA letter, the firmware came without Google's apps either. This includes GMail, GTalk, Google Maps and Market.

Everything works on the firmware except for USB tethering (which is a feature of the firmware). I started by using the browser to download the Barcode Scanner and then used that to install other apps via QR code:
The Foursquare app I was previously using refuses to install (likely because it depends on Google Maps app) and I haven't figured out how to install the dvorak keyboard add-on to soft keyboard.

I have the standard Android Contacts app, but without Google it does not sync to my Google contacts. I plan to remove my contacts from Google and write a small app that provides ContactsProvider2 via XMPP in an effort to decentralize and federate contact syncing.

I found the web version of GMail superior to the old app, though I do miss the Google Maps app (there are various OpenStreetMaps alternatives but they don't have the same features). The biggest thing I miss is the GTalk app, though its pitiful as far as XMPP clients go and we should be able to do a lot better.

Most importantly, my phone is now 99% free software with only a few of HTC's drivers left to be reverse engineered. Even for an advertising company Google is really stretching the truth when they call Android "open source" - but it should be an attainable goal.

Sunday, June 27, 2010

concordance progress

While dredging through framework API design, its sometimes difficult to sense how close you are to finish. Tonight the Concordance "pure Python" redesign reached a critical point - being able to add an extension and respond to an XMPP <iq> stanza:

>>> import concordance
>>> import concordance.extensions.ping
>>> s = concordance.Service('host')
>>> s.append(concordance.extensions.ping.Ping)
>>> import xml.etree.ElementTree as et
>>> st = et.fromstring('<iq from="arc@host" id="f00" to="host" type="get"><ping xmlns="urn:xmpp:ping" /></iq>')
>>> s.stream(st)
<iq from="host" id="f00" to="arc@host" type="result" />
>>>

That's a correct response to an XMPP Ping request, one of the simplest XMPP extensions. Many of these basic extensions will be combined into a single extension module and a ready-made Service class, this is just proof that it works.

Wednesday, June 16, 2010

Concordance stickers ordered

Concordance-XMPP Logo
I just ordered 1000 2" x 2" vinyl laptop stickers with the Concordance logo on white. They should arrive by the end of the month. Contributors can send me their mailing address to receive one along with one of the new Python 3 stickers from the PSF.

New PySoy stickers will be made as soon as we have a new logo.

Sunday, June 06, 2010

Happy 4th Birthday, PySoy

On this day, June 6th 2006, the PySoy Project was born.

We've come a long way from the small homebrew Pyrex-based game engine we started from. We've built a solid development team, spun off numerous related projects, contributed hundreds of bug reports and patches for libraries and applications, and grown close to the Python, Gnome, and XMPP communities.

Currently halfway through our most ambitious endeavour yet, moving our codebase to the GObject model and preparing the engine and related projects for cloud gaming, there's a bright future ahead for this tiny project. While its sometimes frustrating that we're still not to 1.0 release, looking back to what we started from four years ago its clear we've made tremendous progress.

Here's to another exciting year!

Thursday, May 27, 2010

A killer Android app

I've been running the Vanilladroid firmware for my HTC Eris for a few weeks now. Beside the phone spontaneously rebooting itself every few hours, its run great, and with built in wifi tethering.

Tonight it proved potentially fatal for one young man. While walking home it appeared like I interupted a mugging near HacDC. The victim was being kicked by a man who ran away as I got closer. He was laying sprawled out on the concrete, face right on the sidewalk and shirt ripped off. I pulled out my phone, hit the icon for Dialer One (which comes with Vanilladroid), dialed 911, dial key, and... nothing. Dial key again, nothing. Checked, it says 911 in the number box, but the app isn't dialing it. I closed the app and tried again, notta. I can't believe it would refuse to dial 911 so I hard reset the phone and try again, still the dialer just sits there as I press the dial key.

I finally had to go on the web, look up the number for Dc Police, and have them transfer me to 911.

I take partial blame for not looking into this app and switching it out sooner. Hopefully Google removes it before someone dies while trying to call for help.

Friday, May 21, 2010

praise for Gnome's GIO

We've been (finally) getting Concordance's C code refactored into a standalone XMPP server called GNation.

Concordance used a good deal of GLib code already, but we've gone a bit further in using the GIO library for managing sockets and connections. In doing so, we were able to reduce roughly 160 lines of code for opening and monitoring listening sockets into 12 and I suspect further reductions as we continue. All of the IPv4 vs IPv6 support was cleanly abstracted, adding a socket listener to the MainLoop was done automatically, and the GIO documentation was of the same high quality we've come to expect from GLib.

Major thanks to the hard work that has gone into this!

Wednesday, May 19, 2010

How free is Google's VP8 (WebM)?

Thank you Google for using your wealth to purchase On2 corporation and release VP8 to the world. However, there appears to be one glaring flaw in the patent license you offer which makes it incompatible with free software licensing: it appears to only cover the VP8 bitstream itself, not improvements to it made by the community.

When On2 previously released VP3.2 to the Xiph foundation and the world, the patent license explicitly included derivatives (improvements) to VP3.2 including Ogg Theora. This was a critical step in transitioning the proprietary VP3.2 codec to the open codec Theora is today.

On2's "VP" codecs included little extensibility, why should they as On2's revenue stream depended on releasing (and offering a new license for) a new improved codec version every year or two. You cannot use their VP5 codec to decode VP6, you need to get a VP6 codec for that. In contrast, Vorbis is ten years old now and is still being improved on.

The large body of work undertaken primarily by Tim and Ralph at Xiph before Theora 1.0 could be released was extending the bitstream in a losslessly upgradable manner from VP3.2 to include the fields necessary to continually improve Theora over the next decade and beyond. You can see this by playing a VP3.2 video next to a Theora 1.1 video, and even more so in the Theora 1.2-beta9 comparisons, and they've barely scratched the surface still.

For comparison, On2 corporation's patent license for VP3.2 can be found in the Theora license file vs Google's VP8 bitstream license. As I'm not a lawyer, I would love to hear SFLC's evaluation of this in their next Oggcast.

Tuesday, May 18, 2010

stability, always a few versions behind

Several of our projects use waf and Vala, which I normally have nothing but good things to say about, but this is an exception. At the moment, we're stuck working with outdated versions of both.

Tonight I tried upgrading from Waf 1.5.10 to 1.5.16 and was unable to get any of our packages to build with it. As it turns out, it doesn't seem to like glib (maybe the "-" or number in the package name?) and fails to record its cflags and libs to pass to gcc during building. If 1.5.10 didn't have a few annoying bugs of its own or if we could patch and "compile" 1.5.10 we'd be fine, but even this version we had to use the "binary" (compressed Python script) from their website as we couldn't get a Python 3 version to build from source.

Despite all this, it is very nice to have a small, clean build system that both supports Genie and runs on Python 3. The small workarounds we've had to do are worth the savings in headache and frustration autotools/scons/etc would cause us.

With Vala, apparently nobody did even a casual check to ensure the Genie parser was still working properly before releasing valac 0.8.0 (now up to 0.8.1), and a basic example from the language's frontpage (command line argument parsing) compiles but fails to link. For now, we're all forced to stick with valac 0.7.10 until the problem is solved or someone suggests a workaround. Its unfortunate a few of our devs run Ubuntu 10.04 which doesn't offer valac 0.7.x as a package.

Good news is I'm almost finished debugging expat.vapi (Expat bindings for Vala/Genie) and David is sprinting ahead with xml config file parsing with it. By this weekend we could have XMPP routing with the new server being branched off from Concordance-XMPP.

Saturday, May 15, 2010

dusting off pyogg2

I've started work on updating an old CMS I worked on between 2002-2005 that includes a non-linear Ogg editor and Icecast stream queue management. Part of this is updating the CMS to Python 3, including pyogg2 which it uses.

Since I no longer have working ssh keys for committing to svn.xiph.org, I copied the pyogg2 repository to hg.concordance-xmpp.org and resumed the work I left off in 2005. Pyogg2 was in fairly stable shape but lacked documentation, utilities for working with common codecs, and only had a few examples to learn it with. I'm already given its build system a major cleanup (now just "setup.py build" like any other Python package) and almost finished the Python 3 PyModule code.

I have a lot more work to do on this; the CMS needs to be updated for modern web standards (HTML/5), the homebrew MySQL ORM with SQLAlchemy, and changing from the old CGI Apache configuration setup to CherryPy.