So, are you on Facebook?

This post is entirely inspired by David Ascher’s talk on “Messaging with Mozilla Values” at the Mozilla summit, and is also a result of me deciding not to simply let blog posts sit as drafts forever (looks like I haven’t made a post in a while!)

It’s been a couple of months since I deleted my facebook account. It wasn’t an impulse decision, and I had been mulling over it for a while before actually going through with it. I don’t really miss it, which I suppose, is a good thing. As a technology enthusiast however, I do want to keep up with what the biggest social network in the world is up to. Create an alias you say? While signing up for one, I noticed that the form very strongly notes that one is to use their “real name only”. Interesting. I’m just going to wait and see if they decide that I am a fake person.

All that is well and good, but my conversations with new and interesting young people I meet almost always ends with “are you on facebook?”. My response is usually met with either mild surprise or a sliver of disappointment. I quickly explain that it doesn’t mean they can’t get in touch with me but that leads to a look that I’ve come to interpret as “yeah right”, also known as “ugh, email”. Which explains why my personal inbox only contains messages from my mom, the British lottery council and my very wealthy friends in Nigeria.

This leads us to the burning question of why “standard” messaging protocols like SMTP have failed (or rather failed to evolve) to capture the interest of this generation. As Chris Beard very succinctly put, if you had said we’d be using a single Internet based service to communicate with each other in the 90s we’d have thought you were crazy, simply because we were just finished with the nightmare that was AOL. Yet, only a couple of decades later it seems we’re at a full circle.

Hypothetically speaking, if Google had decided that Gmail could only be used to send messages to other Gmail users, would it have gained as much traction as it did? Yet, millions of Facebook users seem to miss the absurdity in the fact that they can’t use the service to talk to anybody who is not a member of the network. If users fail to recognize this simple drawback, it must mean that playing the ‘privacy’ trumpet or the ‘centralized control’ horn is just wasted effort.

What can we as computer scientists do about the situation (or does the situation even need our attention)? David very rightly points out that the last thing on our minds should be to ask users to stop doing things they absolutely love. I enjoyed facebook. A lot. There is a reason (actually several) for why the service is so popular. It certainly seems to me that understanding the basics of why such a service is a grand success is an interesting exercise in itself.

So, are you on facebook? What do you love about it? What do you think could be better? Do you see initiatives like diaspora succeeding?

Go: Why I ♥ Google

Christmas came early this year.

Glenda2Go

Today, Google announced their new open source systems programming language: Go. I’m super excited about this, we all have been wondering what Rob Pike has been upto since he joined the big G, and now we know. Not just that, but Ken Thomson, Robert Griesemer, Ian Taylor and Russ Cox were all involved in the project, with Ken doing what he does best, writing compilers in lightning speed ;) If that isn’t a list of heavyweight respectable computer scientists, I don’t know what is!

I think Go is poised to be the dominant systems programming language of the future. Go has nailed almost every aspect of a systems language, though some would say I’m biased. Go has been strongly influenced by Oberon, CSP languages like Limbo, and the standard libraries have tantalizing similarities to Plan 9. We’ve had Limbo and Plan 9 for a while now (more than a decade), but this is where my real love for Google begins to bubble, they took something awesome but unpopular and gave it a push to the masses. There are very few companies in the world who would attract the talent to do this, and even fewer who would open source the results. The attention Go has been getting is just mind blowing. Pike had been doing amazing work at Bell-Labs for quite a while, but none of it even got an inkling of the publicity Go is currently getting.

Google was what Pike needed to prove Utah2000 wrong.

I know one thing for sure, I’ll definitely be using my Plan 9 virtual machine a lot less; now that I can write clean concurrent programs that don’t make my head hurt, both in Linux and OS X. And GCC, I’m not shedding any tears while I bid you goodbye.

On another note, Google also announced today that they’ll be sponsoring free WiFi at a whole bunch of US airports this holiday season. For all its faults, Google definitely seems to be doing the right thing. For how long, it remains to be seen, but so far I’d say their track record has been better than excellent.

UPDATE: John Gruber points out that “judging from the copyright statements, [Go is] not an official Google project”. Could this be a result of the famous 20% time scheme?

Identity on the web is broken

The mere presence of systems like OpenID, Facebook Connect and a host of other identity services on the web today is attestation to the fact.

Authentication should be a feature of the protocol, not something that relies on hacks like cookies. 99% of websites today rely on cookies for authentication for their websites, besides offering custom registration and login pages. This means the browser, as the user’s agent, has no clue of what is going on. A user is forced to manually track myriads of accounts, remember passwords for each of them, and remember what personal information each of them holds. Sure, part of the problem is solved by using password managers (like the one in-built into Firefox, or external programs like 1Password), but even these programs rely on heuristic algorithms to determine if something looks like a login credential or not. There’s no explicit way for web pages to tell your browser: “This is a login form, please fill in details of the user’s identity here” or “These pages are privileged, please give me the user’s identity”. Why is that?

Actually, there is such a mechanism: HTTP based Authentication has been a feature present since HTTP/1.0, but only 1% of sites actually use it. The reason for that is purely cosmetic, most browsers display a very bland modal dialog when it encounters a page that requires HTTP Auth, and sites are unable to customize that interaction. So, the technically right way to do things sucks from a user experience perspective, and websites started adopting alternate means. Someone discovered they could use cookies to store session information on the client, and the whole situation exploded ever since. As a programmer, I feel very sad when I think about the fact that instead of fixing the problem in HTTP/1.1, web-based authentication took the route it did and led to the mess we are in today.

However, I must also state that HTTP authentication doesn’t solve the entire problem – there is still the issue of users having to create an account for every site they want to be part of. This is because there existed no protocols to federate and provide decentralized authentication. That is, until OpenID and OAuth came about. Now we’re at this exciting juncture, and the browser is in a unique position to use these tools together to provide the user with an experience that is secure and easy to use. Every architect will agree that it is indeed a fun challenge to use the state of identity on the web today and make it into something awesome.

This is precisely what the Mozilla Labs team has been thinking about for a while now. Sometime ago, we added support for automagic one-click OpenID logins to Weave. We plan to spin that “feature” out into it’s own extension and build on it, something we call “Weave Identity“, part of the broader “Open Identity” initiative by the Labs. “Weave Sync“, the original extension, will just focus on the synchronization parts so we can tackle these two different problems separately.

So, how exactly are we planning on doing this? Take a look at an initial version of a document describing an in-browser “Account Manager“. We’ve also put up a WEP (which expands to Weave Enhancement Proposal, by the way) describing the raw form of a specification for automatic actions on websites, such as user registration or password changes.

Keep in mind that all of this is in its very early stages (pre-alpha); but that also means it’s a great opportunity for the community to get involved! What are your thoughts on Open Identity? Use the discussion tab on any of those Wiki pages, start a thread on the Mozilla Labs group, or simply leave a comment on this blog entry, and chip in – we’d love to hear from you!

Labs Night: Openness and Competition

Last night, Joseph Smarr from Plaxo was our guest speaker and he talked about how the “web is going social”, and how the “social web is going open”. We discussed all the elements that make up the social web today: identity providers, social web providers and content aggregators, and how each of  them are leveraging open standards and protocols such as OpenID and OAuth to create better experiences for their users. Check out his slides here.

This talk was a nice prelude to some interesting discussion about the role that the browser can play in handling the user’s data and identity on their behalf. Very relevant to this was also the recent experimentation by Weave on identity in the browser, and Myk gave us a demo of the auto-sign-in features.

Labs Night is also a chance for everybody to talk about cool stuff they’ve been working on, so Brandon gave us an update on what’s new in Ubiquity 0.5. There’s some really neat stuff in there: Ubiquity is possibly one of the first pieces of software that perform truly internationalized natural language parsing (0.5 rolls out with support for Japanese and Danish). Do check out this blog post for a detailed discussion of the features in 0.5.

I followed with an update on some of the work I’ve been doing with Jetpack – namely providing the capability for “jetpacks” to record audio. The code to enable this is checked into the repository, but you’ll have to wait until a release later this month if you’re not feeling brave enough to build the extension from source to play around with it. I was especially interested to know the kinds of applications that might be possible with this capability, so you if you have any ideas, I’d love to hear them. Myk also gave us a demo of the new streamlined way of subscribing to feeds using Snowl, check out this release announcement for more details on what’s new with the message reader you know you want to use!

Paul Tarjan from the Searchmonkey team at Yahoo! gave us some really cool demos demonstrating Searchmonkey Objects and YQL. I’m especially excited about YQL because it can make some of the back-end ubiquity code really simple and efficient. Incidentally, the Bing team was here at Mozilla just a couple of days ago and they also demoed some features similar to Searchmonkey Objects, albeit restricted to video and snippets of data for now.

Search is starting to feel exciting again, a sentiment similar to one we feel in the browser space today. There’s a lot of innovation in the area outside of the big daddy, and it is indeed heartening to see that major players in the web are beginning to recognize the importance of openness and competition :)

Labs Nights are monthly events, so we look forward to seeing you sometime in July to discuss more cool stuff that everyone’s been working on!

The Summer of Code is here again!

It’s that time of the year. Google is, yet again, sponsoring students to write some awesome open source code this summer. If you’re a student, and you’d like to make some money contributing to some of the most well known and exciting open source software projects out there, you’d be missing out on a lot by not applying.

If you’re wondering about what the best way to get started is, check out this great advice page. All projects have also been tagged by programming language and field in this delicious profile. You can also search for ideas here.

I’m going to be mentoring for Mozilla, Glendix (under the Plan 9 Umbrella) and Gentoo this year. Get in touch if you’re interested in any of those ideas :)

The window for applications opens in a few hours. Good luck everyone!

Ghosts I-IV (and the best music of 08)

I was going through Last.FM’s Best Music of 2008 charts when I came across Nine Inch Nails’ album Ghosts I-IV. What really caught my eye was not that it was 4th in the top albums chart, but that the music was licensed under the Creative Commons Attribution-Non Commerical-Share Alike license!

In addition to the slew of albums available under similar licenses on Jamendo, it is heartening to see more mainstream music opting for this method of distribution – even Radiohead experimented with it not long ago.

The best way for us to fight the RIAA is by encouraging this type of music distribution, which directly pays the artist. Let’s not forget that associations like the RIAA are chiefly responsible for several draconian laws that plague our society today, and are also the primary driving force behind DRM technologies. Gone are the days where you need large amounts of money to produce and distribute your work of art. As I said earlier, the whole point of technology is to make things cheaper, faster and better for everyone involved, cutting out the middle-man wherever possible.

This holiday season, play your part by going and buying DRM-free music directly from the artist. It’s the least we can do to show that this open form of distribution actually works. My recommendations: Ghosts I-IV and The Raghu Dixit Project. Or sample music from Magnatune and then buy tracks that you like! Alternatively, pick out music from Jamendo and then donate to artists of your liking. A meal at your favorite fast-food restaraunt is all you have to sacrifice for the act :)

Follow

Get every new post delivered to your Inbox.