Applications And Platforms, An Another Face Of Internet And Why I Hate Groove
Groove is perhaps one of the finest example of technology in recent times which has tons of potential and no vision. If you ask Groove what their product is, they will probably reply with something like this: “it’s a program that allows people to work together on files, projects, meetings and so on.“. And that underlines their severe lack of vision and plain immaturity which otherwise could have changed the face of the Internet. What it could have been is this: A platform that allows developers to build applications that could work online or offline with automatic real-time database and file replication. There is a huge difference between creating an application and a platform. To put it in perspective, imagine Microsoft developers betting most of their time and energy to create vast variety of end user applications and paying little or no attention in producing well documented APIs, solid development tools and nurturing, supporting and enticing developer community to enable them to create applications. Would Microsoft have gone that way it would have become another Apple. And computers would still be privately manufactured expensive white boxes fancied by richies.
Why I like FireFox so much? If I was using it out of the box and without downloading any extensions, I would have dumped it in trash can right away. Without extentions support, it’s not that powerful and cool out of the box as those guys would have like you to believe. But enter the hundreds of cool extensions made by other people, and FireFox is suddenly the most appealing and powerful browser to me. FireFox extension API has essentially became a platform.
If you want to create a fast spreading powerful software, the bottom line is simple: Through people the plateform and thou shalt built apps upon it. Invest more in platform, not applications. Groove hasn’t learned this lesson.
Actually, they are learning. They have VS.Net integration with GTK now, managed wrappers for lot of things, Developer Tools division, more then zero documentation and (are you ready?) even a book! But when you look at all these, you immediately realize that this effort to make Groove as a platform is more like an afterthought, a low priority, a low budget corporate “hobby” project and definitely an unfocused one. Before GTK came out some hardcore people were still trying to figure out how to use capabilities of Groove even if they had to use JavaScript APIs without documentation! And lot of them even then built cool apps. Imagine what if a real developer friendly platform was available wide open? How many applications would be built upon it? How many people would have downloaded Groove just to use those apps?
So exactly how does Groove fails to deliver to developers? To start with, they are extremely reluctant to change, re-designing, re-factoring, modernizing and rewriting their aged stuff. Their original core engine C++ code and API design is beyond the edge of being outdated and that’s an understatement to fully describe the troubles with it. Groove APIs are exposed through COM and has a massive surface area combined with no documentation for much of the part. It’s bloated, broken and even not fully implemented in many cases. In latest version 3.0 they have changed their UI makeup (and file share performance) but they are still dragging along ancient under the hood code. Compare that to Microsoft rewriting and renewing their massive operating systems every 5 years or so.
Current development aids for Groove aren’t just enough. Even if you are using VS.Net integration, lots of things needed for real world apps would require you to modify proprietary files in obscure places under the direction of support people. To publish a Groove tool there is 20+ step procedurewith warnings signs: don’t screw up here. For anything more then “hello world” app, you would have no choice but to sign up with Groove as their partner and hire their super expensive consulting and support services (which on many instances just comes back with replies “we never thought you might want to do that with Groove. Sorry, that’s not possible.”). Groove doesn’t realise that the worst way to make money for them would be by squeezing the developer and proding them away for ever. And I’m not talking about launching rockets with Groove, but things as trivial as programmatically hiding left pan is simply not possible. And yes, they have the largest surface area API I’ve seen anywhere, including Windows. They haven’t reused almost anything: everything from files, data, installation - you name it - they have their own proprietary APIs that you need to learn from the scratch (I’d spent tons of time and energy to have them support standard ADO.Net instead of their properitory data API and we used it in our project but unfortunetely they have pulled it out from Groove 3.0). I wouldn’t say those guys at Groove are uncompetitive (I’d been to their office for couple of days worth of meetings and those guys were smart and cool), it’s just bloated outdated design that they have to live with and work with. What a waste of an outstanding concept…
There is lot more to it. Groove isn’t good and inviting to developers. Besides terrible “partner only access” schemes, you will also get recommendations to use their expensive personal training classes (I’d been to the one which was a week long). Can you imagine if FireFox didn’t fully document their APIs and asked you to sign up for their really expensive training if you’d wanted to make extentions for their browser? On most instances you would also end up hiring their “per hour” support and consulting staff to actually solve your problems that comes dozen a dime in real-world Groove development. I think several companies like IBM, Apple and Oracle workes just in this way and Microsoft is the only one to actually get developers on their side, give them nice tools and make things easily and freely accessible to them.
Several bad unrealistic decisions made during Groove’s inceptions are still stuck with it even after almost a decade. For instance, Groove’s replicated store is maintained in the encrypted XML files rather then real relational database powerhouse. Those designers wanted plateform independence and they screwed up (such types of failures are becoming so common they deserve a name: “Cross-Plateform Wanna Be Failure Pattern”). Results? Groove sucks at scalability. In my experience, put more then 15 people in a space or more then 10,000 rows in “database” and you will be soon thinking about uninstalling Groove. Yet another example of carrying over ancient design misshapes is that the entire Groove engine works only from inside their proprietary “Transreceiver”. You can’t build your own EXE and consume those API from outside (actually you can at very limited extent but it’s so ugly even some internal gurus don’t want you to try that).
So what Groove could have been if they weren’t what they have become? Well, they could have given a birth to thousands of applications that could work either online and offline and anywhere. These vast variety of apps would have almost magical capability to synchronize their data with other people and computers. If you look beyond, it’s a whole new form of Internet and here is a highlight of what I mean: You won’t need a webserver to host your website. You could have just created a “space”, listed it somewhere and allowed open anonymous invitations to let anybody find it and browse it. So Internet would mostly become the collection of spaces hosted on individual computers instead of collection of web servers. It’s far more advanced then client-server model of current Internet and far beyond then traditional file-sharing P2P apps. In that form of Internet, there truely can not be any censorship. You can have your private television station and serve your content to millions of users through distributed P2P network without a need for expensive webservers and requiring huge bandwidth. Same would happen to audio communication that is currently being done by Skype: you get standard P2P plateform to build VoIP and PodCast servers. Traditional websites would have major facelift: HTML would have been replaced by interactive GUI tools that runs in space running under a secured account. Webistes are no more just HTTPs but are fully functional interactive GUI applications. So you see, lots of software you see around - everything from Kazaa to SETI distributed computing screensavers to Freenet to BitTorrent to Skype - are just specific instances of this technology. All of these applications are screaming for common P2P plateform and because there is none, each have their own quick and dirty homegrown one. If Groove concept was done right, it could have been this universal peer-to-peer computing plateform to do all of these in clear homogeneous way and there would have been an avalanche of next generation P2P applications. And that’s why I hate Groove for making it not happen.