Software above the level of one device

I’ve been catching up with some podcasts, and in particular LUGRadio (The Diva Cup), wherein they finally catch up with Tim O’Reilly – who has been saying for years that we’re in the middle of a paradigm shift (and this audio of one variation of his talk)

Tim points out that we’re so enamoured with open source at the OpenOffice v. MS Office, what’s the next killer app level that we’re missing the bigger picture – Google makes everyone a Linux user, and Flickr, Yahoo, Amazon, etc mean that we’re all PHP, MySQL, Perl, and god know what else users, whether we realise it or not.

Which is great but the other angle, that all these Web2.0 companies borrow is that they rely on our participation – our data – to make themselves better. Google uses our links (amongst other things) to decide which results are better, Amazon has no more functionality than Barnes and Noble but it has an order of magnitude more review, lists, comments, which is why it’s so much better and so on. And as Tim is so good at doing he coined a catchphrase – he called this phenomena an ‘Architecture of Participation’.

But all this came with a warning and a plea – the warning was that these are proprietary services, that potentially have locked up our data, and he pleaded for a open source definition for the ‘Internet operating system’. He points out that the source code to Amazon, Flickr, or Google, while it might be interesting, isn’t very useful – you can’t re-create Amazon with just the code, you need the suply chain, and all the user contributed data that makes it valuable. But that is our data, and we need something like the GPL (or MPL, or MIT, etc), that guarantees our access to it – as Tim points out open source behaviour happens quite naturally (even inside proprietary companies) all a licence does is formalise a particular architecture of participation.

An this is kind of what Jono, Ade, Aq, and Adam (guest presenter) were discussing, in their own way, as to whether web apps were any good or not.

The killer line in Tim’s essay/talk is the quote, written in 2003, by David Stutz

Useful software written above the level of the single device will command high margins for a long time to come.

The example Tim uses is iTunes music store. It’s a web service delivered through a desktop client that syncs to a portable media player. I’ve heard it’s relatively sucessful.

Meanwhile Luis and Dave Neary have been ganging up on OOo and trying to encourage them to think different rather than chase the taillights.

A while ago Google buys Writely and we all know that GDrive is coming (and that S3 is already here).

Wouldn’t it be good if we could get some of that on the desktop: imagine a mashup of Abiword, gobby, gnome-vfs, beagle, and (the as yet nonexistant) Ajax-abiword-writely (a better product name would be needed, let’s just call it Jabiword), which means I could;

  • fire up abiword and start writing some document
  • save that document onto some storage in the sky – whether it’s GDrive, S3 or just some space on my webhost
  • start collaborating, in real time, on that document with a colleague working at an interent cafe through Jabiword
  • easily include pictures from my harddisk, flickr, Gallery, Riya (or where-ever), definitions from wikipedia, a quote from a blog, etc

What if we could mash-in iFolder so that the document was available offline too?

Now that would be Web2.0, and as Cartman would say that would “Kick ass!”.

But this is my concern – that the current free software desktops are so busy chasing, and overtaking, the taillights that they are missing the real opportunities (you can argue the merits of my particular idea, but there’s loads more, and better, ideas out there I’m sure).

As Luis points out on a slightly different angle – we’ve (subconciously) re-created the silos of the proprietary desktop, where email, im, voip, blogs, etc don’t relate to each other – which is crazy, since our code, our file formats, our bug databases, our mailing list are all open. One of the killer features of GAIM is that incorporates all the disparate IM silos into one app – let’s extend that to every form of communication, let’s endevour to have software above the level of one silo.

We’ve inherited the silo mentality from the proprietary software culture, and we need to get rid of it, and we need to listen to someone who used to live in the proprietary world when they tell us about software above the level of one device (or silo or service).

Moving up the Advocacy Hierachy

There’s a great post over at the Creating Passionate Users blog about the Knowledge hierachy. I’m going to gratuitously steal the pictures (which are Attribution-Non-Commercial licenced so I’m OK)

I think in advocacy we as a community, and me in particular, have a tendency to get stuck in the Data, Information, and Knowledge levels. We’re constantly bombarding people with facts about FOSS. Who’s adoping it (Hey Google is built on FOSS), how much faster / leaner it is (Samba can handle 8x as many clients on the same hardware), how many companies rely on it (70% of the web is delivered on Apache), but we could all do with some reminding to help people develop Understanding and Wisdom – something I need to develop in myself before I start on other people.

Being arrogant I think I understand FOSS development, community, and technology pretty well, and feel OK trying to pass on that knowledge to other people. Being humble I definately need to work on the wisdom, or the bit in parenthesis: systems thinking. I think this is a pretty powerful angle for advocacy that may not involve much talking about FOSS.

Most people are using proprietary software don’t do so on the basis of taking in a load of Information and Knowledge and developing a clear Understanding of the differences and pros and cons of Proprietary v. FOSS and then deriving a reational, clearly thought out decision that Proprietary is best. They use and end up getting locked up in proprietary solutions because that’s the model of thinking that we all end up getting trapped in; by the vendors, the marketing, the press, our experience, and a sea of Data, Information, and Knowledge.

I love a Windows v. Linux v. Mac OS X v. Solaris debate just as much as the next Linux loving advocate but we have to realise that it’s totally irrelevant. IT strategy driven by OS choice is ridiculous – it’s like letting the design of a building be defined by your choice of concrete for the foundation – instead, I think, most architects design the building first then pick the best concrete in terms of price, performance, environmental impact, or even colour. But they don’t start with the concrete, the door handles or the carpet.

If we have confidence in FOSS as good solutions to IT problems then we can feel confident advocating sensible systems level thinking knowing that open source solutions naturally fit in. To get to that kind of systems level thinking we need to break out of the arguments that we get guided into by the architecture of the past. The only beneficiary in a Windows v. Linux debate is Microsoft because it implicitly re-enforces the wrong thinking that operating system choice is important, or needs to be the root decision in an IT strategy.

It will require changing the way round we think about things. For a non-IT example, listen to this clip from the Clean Products Panel at the Bridging the Gap Conference. To summerise;

  • GM used to buy bucketloads of chemical from a wide variety of vendors and (badly) manage the chemicals themselves. Their vendors profit motive is ‘How do we sell more chemicals to GM’
  • GM eventually turned this around and said to a chemical company, you manage and be responsible for all the chemicals from the minute they come onto site, to the minute they leave, and we’ll pay you $X per car we produce. Now the profit motive is how can we use less chemicals, and how can we be more efficient.
  • Results in a 30% reduction in chemical use and a 30% savings for GM.

This change wasn’t acheived by comparing one chemical to another, or one storage container to another, but by changing the procurement system to encourage the results they desire.

Architecting an IT system where client OS choice is irrelevant is probably going to be difficult but it’s going to force you into some decisions that will pay back big in the long term. Like being able to hold you OS vendor to ransom rather than the other way around (or just getting rid of the idea of OS vendor all together – spend the money on stuff that’s important instead).

I haven’t yet done enough thinking on this level to know what are the key tatics in this approach, or what even some of the key points to keep in mind are. There are some I can think of;

  • small pieces loosely joined
  • open standards and protocols (or at least something with an open implementation)
  • look at the problem first not the (potential) solutions
  • simplify
  • agile development

These are just catchphrases or barely sketched out half ideas in my head, but this is the wisdom I seek, and hope to pass on in my advocacy.

Simple

I’ve finally decided what to talk about at LUGRadio Live. I’d like to expand on Stephen O’Grady’s ideas around lesscode, simplicity, and php – see the presentation he gave at the Zend conference. I didn’t hear the talk, just read the slides, and contributed a small amount to the discussion on lesscode. In my talk I want to expand the theme to open source and life in general. Warning this is a bit of a rambling post while I sort my ideas for the talk.

Many open source projects have been successful in part because of an approach which includes lesscode and simplicity. Before we look at some examples it’s woth pointing out that there are two sides to software development, the developer, and, for want of a less derogatory term, the user. Simplicity and lesscode apply in both realms but in different ways.

To quote what I said to Stephen at the time;

 

I think there are two intermingled sides to simplicity and lesscode – the user side and the developer side. To me the whole thing is about chosing languages, methods, approachs, frameworks, etc that make life better and easier for both parties. By making the job of the developer easier they can focus on making things better / easier for the user.

I would say that TV recording is real world practical example of simple and lesscode ideas for the user side.

Ask the audience how many people in their family know how to set the timer of a video recorder (you could ask how many of them know how to use a video recorder but if it’s a room full of programmers the chances are they do, and were hassled by family members to set it up). Recording a TV programme when you wheren’t in is/was a nightmare with a VCR – quite apart from the setting of the timer, labeling the tape, remembering where you put it, remembering that you even recorded that show (how many people have found a tape during a tidy up and thought – wow, I don’t remember recording that).

With a PVR (Tivo, Sky+, MythTV) it’s as simple and user centred as: find the program in the EPG (or search for something you’re interested in) and press the record button. Finding the recorded shows is simple as well. There is no doubt that more could be done to make PVR’s even more simple and lesscode, but the contrast between the VCR forcing you to be a part time programmer and librarian, and the PVR which allows you to find what you want and record it. It’s is slightly unfair to the designers of VCR’s since their wasn’t the infrastructure in the late 70’s / early 80’s to do this sort of thing.

 

Anyway let’s look at some examples from Open Source;

  • Gnome: In the 2.X series the project took a bold move to create a HIG, to simplify to interface, and choose sensible defaults rather than a million config options, and make things Just Work.
  • Ruby on Rails: In Web0.0 we used to do crazy things like create dynamic webistes in C, or BASH, or even perl. PHP made Web1.0 easy, simple, lesscode. What PHP did for Web 1.0, RoR does for Web2.0
  • Firefox: Do I really need to explain? Mozilla was fine technically, but the jewel lost in the muck was the Gecko engine, it just needed a simple, Just Works browser around it.
  • Ubuntu: SuSe is 5 cd’s or 1 double sided DVD (and has been for years), RedHat 9.0 was, if I remember, 3 CD’s, now Fedora is 4 CD’s or a DVD, Mandrake, I can’t remember but I’m sure was a few CD’s. Ubuntu, when it started was one CD, only came with Gnome, and only had one of every type of app, and aimed to make everyting Just Work. Even now each flavour is just one CD (Ubuntu, Kubuntu, Xubuntu, Edubuntu, etc).

Those are easy observations to start with, but the real question is how to stay simple or even what do we mean by simple (as was discussed on tecosystems). To me simple or lesscode is not simply a checkbox – it’s a state of mind, and aesthetic, somethings that’s hard to quantify but easy to spot when it’s missing.

So with that said the hard part is how to keep the simplicity as a project goes forward, how to regulate the desire to keep simple with the need for more features and more code.

I think web development gives us some clues here. As I mentioned above, all web stuff was simple to begin with – simple static html. As we became comfortable with website we wanted more, we wanted to make our lives as webmasters/developers easier. So we used the tools we knew, whether C, BASH, or Perl, and hacked up CGI scripts to process forms, and as more features were demanded the more complex and unweildy they got.

Then along came PHP which at first simply was a collection of C routines for CGI scripts (at least if I remember correctly), and later evovled into a neat little scripting language that made web scripting simple, easy, and lesscode. All the little things like processing GET and POST variable, dealing with cookies, connecting to databases, etc, etc. This was especially appealing compared to the other prevailing method at the time – Java applets (poor old Java keeps on having to play the enemy in these stories) which were just insanely complex things to build – whcih is why they were the weapon of choice for most enterprises. PHP’s lesscode aesthetic was to build the simplest wrapper around the functionality and then get out of the way.

Fast forward until the last 18 months and the whole IT community is gradually coming round to the PHP point of view for web development (not just using PHP but Python etc as well) – but our desire for functionality has grown and grown, and now there’s this whole Web2.0/Ajax thing and our PHP is starting to creak.This isn’t meant to be some death knell for PHP – there’s still loads for demand, and need, for Web1.0 sites, and of course it’s not impossible to do Web2.0 stuff in PHP.

Aside. In the mean time the Java camp abandoned applets and start writing servlets and JSP, and gradually trying to make web development in Java as much like PHP as is possible within the constraints of Java. Also PHP the language has gradually developed and added more sophistication and become as much like Java is is possible with the constraints of PHP – so you end up with PHP Enabler for Sun Java System Web Server and OTN: PHP Developer Center. If I wanted to wind people up I would say the PHP is increasingly Java-lite, i.e. Java with all the annoying strictness and verbosity taken out. But I’d mean it as a compliment to both 😉

Along comes Ruby on Rails, with it’s aesthetic of making things beautiful and easy for the programmer (with the trade off that you need to things the RoR way). DHH and the rest have soaked up the last 10 years of web development, including Ajax, and commoditised it – Object-Relational mapping, form handling, javascript integration, templating, extensions, MVC, etc, we have all that, and it’s easy.

This changes the metric of the landscape – imagine a world where the distance between everything and me is 1. From my point of view everything in this world is spread on a sphere of radius 1 around me. Everything is equally easy to get to so I can now think,in fact I have to think, what I really want. RoR doesn’t quite make the web development metric like this, but it moves towards it. Getting Real might mean having less features, you have a much more equal choice between which features you want and which you can drop – it becomes less about what’s easy / hard for the developers, and more about what’s right for the users (which is how it should be).

So after all this rambling we seem to arrive at a pattern;

  1. Develop new things frantically
  2. Reach a point where it all becomes a bit too complex and unweildly
  3. Look for someone or a group of people who use a different metric to measure things, who cut away the complexity and make things simple
  4. Repeat and rinse (remembering that the people or technologies in step 3 will probably be different than the last time around)

Looking the examples above they all have this kind of pattern.

  • Gnome in the 1.X series was frantically trying to build out the desktop and continued development, along with the UI, was getting complex and crufty. With 2.0 they changed the way they measure development: introduced the 6 month release cycle, and the HIG, and the whole route they’re on now.
  • The Mozilla Suite was a giant complex beast and was difficult to add even simple features too. Then Firefox changed the game, simplified the UI, but also with the plugin system, made adding simple features simple (and made it simple to keep stuff out of the core).
  • Ubuntu. It used to be that distributions struggled to fill a CD, and we were just glad any kind of hardware worked, let alone Just Work. Everyone was focused on making the installer as easy as possible, and catering to server admins, who were comfortable with all the complexity, and including all the open source goodness that there was. Ubuntu changed the metric; fit the best most useful stuff on one CD, and work hard to make sure that everything Just Works. FOSS for ordinary people.

So to try and answer one of my questions: it might not be possible for a single application, project, or development tool to stay simple. It might be that it has to submit to entropy and get more complex until the next wave of application, project, or development paradigm comes along and changes the metric.

Anyway those are my initial ideas – now I need to think a bit more and squeeze this all into a 15 minute talk. Simple.

Rant in a-major

In preparation for my trip to Boston I bought a headset to use with my laptop so I could phone home using Gizmo (short review: It worked really well, as good or better than Skype on my last US trip).

I wasn’t particularly paying attention and ended up buying a Plantronics usb headset – I naively assumed it was a regular headset with audio jacks plus a usb sound card with audio in/out to plug the headset into. While I didn’t need the usb bit for my laptop I thought it would be a useful thing to have. Turns out it is a straight through usb device meaning you can’t separate the headset or plug any other audio device into the usb soundcard.

Despite the disappointment I thought I’d give it a go. Good news; the usb audio device is autodetected and drivers loaded (btw this is all on Ubuntu Breezy) and this is what happens when you plug it in;

audio-device-detected.png

This is good, but it all starts to go a little downhill from here. Click on ‘Open audio preferences’ and you get;

sound-pref.png

So I select ‘Plantronics headset’ and I should be done right? Well not quite – I’ve shortened the actual path to getting everything working that I took, but this is what I need to do. Before we go on however it should be pointed out that the popup dialogue says ‘Open audio preferences’ however if you want to find that again (maybe to switch back to the internal sound card for example), then it’s actually in System->Preferences->Sound – not mention of ‘audio’ (See ubuntu bug #40532). Anyway, that aside, the next things is to now right click on your volume control and select ‘Open volume control’ – just reread that ‘right click volume control select open volume control’ – see Bug #339280. Anyway you right click on volume control and select ‘Open volumen control’

open-volume-control.png

which get’s you to this dialogue.

volume-control.png

So now we need to select the correct sound card from the menu (as show above). Also I needed to the then unmute the microphone (ok I messed up I don’t have a screenshot for that). Right we’re getting somewhere now, however things are still not going to work, now we need to goto System->Preferences->Multimedia Systems Selector

pref-multimedia.png

and then change the settings to use Alsa mixer,

multimedia-selector-sink.png

both on output and input,

multimedia-selector.png

I presume the problem is ESD controlling the audio device and not allowing Gizmo access to it and Gizmo not knowing how to interact with ESD. Also you have to kill ESD. Not sure what exactly is going on and don’t know where to file bugs about that. Anyway now things should work a bit better.

Of course the first audio app you start will hog the soundcard since dmix (direct mixing) isn’t enabled in ALSA by default (at least as far as I can tell) so don’t think about trying to listen to music in rhythmbox or banshee and take calls on Gizmo or Ekiga without creating an /etc/asound.conf or ~/.asoundrc file and that just makes my head hurt. Any ALSA gurus want to help me out here (I’d like dmix on my main soundcard and the usb headset if possible)?

FUDCon

Note: I’m not a fan of retro blogging but I had started this in Boston, but ran out of time or energy to complete it.

On thursday at the end of Linuxworld I found out that yesterday (friday) there was FUDCon so I decided to go along and find out what was going on. There was an interesting array of talks, from Eclipse to MythTV and OLPC to OpenCourseWare.

One of the most interesting was Chris Blizzard talking about the software side of the olpc project. Chris was at great pains to explain the context for the software and the design decisions they were making. One of the thoughts that stuck with me is that package management in Linux is still broken (rpm, deb, apt, yum, all of them) – one of the great things about Free software is that we can all share, but if Chris has something useful on his laptop, he can’t easily send it to my laptop so I can use it. I think there are some really interesting ideas kicking around the olpc software project, that if they materialise could have a good effect on regular linux distributions and desktops. However, they are on an insane timescale, and they don’t even have developer boards yet (they should be coming in the next few weeks). The machines are due for delivery sometime in Q1 2007 – and as Chris pointed out, they can make no assumptions about the availability of broadband access so the thing has to be more or less done and working by the time it ships, since in the field upgrades might not happen all that frequently.

The other very interesting talk was from Anne Margulies who is the Executive Director of MIT’s OpenCourseWare. I think perhaps, coming from an open source background I hadn’t fully understood what an undertaking, and how revolutionairy OCW is. To completely open up all the course matierials for a prestigious university like MIT was quite a brave and bold move, but one that has paid massive, tangible, dividends for MIT. And now it’s just the start of a revolution, as other universities are starting their own OCW programs (although many other Ivy League institutions still dismiss OCW as marketing or insignificant).

Anne pointed out some of the amazing unanticipated outcomes of OCW; Students now choose MIT because they can “see through” their entire course, and this enables a much better choice of course, staff in different faculties that depend on each other (e.g. Physics course that requires a Maths course) can see and understand each others terminology, and refer students back to previous courses notes, staff working in seemingly unrelated fields finding commonalities in their materials and inspiring new collaborations.

Unfortunately all through the day I had a headache developing and was generally feeling worse and worse, so after Anne’s talk I headed straight to a pharmacy (or what Americans call a drug store), and got some painkillers. This helped a little but I felt worse and worse and ended up crashing in my hotel room for about 18 hours straight. I woke up Saturday evening still with headache but feeling a lot more human. Weird. Anyway Sunday I did get to look around Boston common and the surrounding area after I checked out and before my plane left.

09-04-06_1345
09-04-06_1309
09-04-06_1311
09-04-06_1327

There was a Greek parade down Boylston, which was a curious site to see. All the churches and Greek schools and Greek Business associations, and a lot of marching bands (Greek or otherwise) all paraded down the street. Unfortunately I’d left my camera in my bag in the hotel, so all I had was the camera in my phone. Thinking about it, it’s probably the same resolution and the first digital camera I bought in 2000.

Linuxworld day 3

I meant to write something last night but after getting back to the Hotel I completely crashed – it might be just be another effect of jetlag, or just a random meltdown.

So yesterday started with Bill Hilf’s keynote. The big announcement was port25

Port 25 is open. The people, insights, and analysis from the Microsoft Open Source Software Lab. Send us your feedback and ideas. We want to hear from you.

The rest of the keynote was ok – most of it was similar to his presentation last year but with more cast studies and strategy fleshed out. He also outlined the the new free price of Virtual Server and the official support of some Linux distributions, and the open standard of the virtual machine file format.

I don’t doubt that Bill is a genuine guy and that he’s genuinely leading the change in attitude to open-source within Microsoft. The problem is that Microsoft is a big beast and you end up with statements such as Steve Ballmer won’t rule out attacking Linux with patents. So there are bits of Microsoft that ‘get’ open-source and still very high up bits that don’t. It makes me think that there is one of two strategies going on at Microsoft;

  • they see the writing on the wall and are just milking every last drop out of the proprietary model while they can.
  • they simply refuse to accept anything other than the proprietary model and they’ll fight tooth and nail, and use any tatic to protect their business model.

The truth is probably somewhere inbetween.

After the keynote I went to the talk on OpenOffice.org by the inimitable Michale Meeks. Not sure everyone in the audience appreciated the dry, self depricating, British humour, but I did. Everyone else was just interested in the beast that is OpenOffice.org. Good to hear that Sun have listened to the community and swithced to a 3 month release cycle for bug fixes and non-major features. Lots of encouraging work going on in the OOo project, hopefully now they can start to attract more developers.

Finally I went to the talk on Asterisk by Mark Spencer. It’s refreshing to see someone at the head of an open-source company that is still a geek (meant as the highest form of praise). Some interesting case studies: a school were the teacher takes register through the phones system then parents are phoned if their child isn’t in school, more than a few cities entirely run on asterisk. Good to hear that they are intergrating Google’s Jingle as another VOIP protocol.

After that I headed back down to the show floor and subjected myself to the tllts experience.

paul_llts

After checking that Scott was doing OK on the Gnome booth, and failing to snag him some free headphones from Fujiitsu (they’d runout), I helped the tllts guys packup and then headed into Boston with them, Jeremy and Robin fromLinuxQuestions to find some food and drink.

It’s always risky to generalise but all the (true) community people I’ve met, Luis, Chris, and Scott on the Gnome booth, Toshok from the Mono booth, the KDE guys, Jeremy, Robin and the tllts guys (LincDannAllan, and Pat) have all been genuinely nice people all doing their best to promote and develop Linux and open-source software. Plus the tllts crew said they would hunt me down if I didn’t say something nice about them.

After food the guys dived into some shops to get presents for their families and then suprised me buy getting me a patriot hat and little plastic figures (in the plastic bag I’m holding).

paul_patriot