Showing posts with label freedom 0. Show all posts
Showing posts with label freedom 0. Show all posts

Console Hacking

Several news outlets are reporting that the PS3 has been compromised. What strikes me as odd is that most of the time, the people doing the hacking have no interest in piracy (at least, that's their claim). Instead, their motives seem to be towards allowing home-brew app creation. This is a noble goal, and one that will surely become more and more popular, as we start moving away from passive entertainment towards a more participatory model.


My question is this: Why do console manufacturers still struggle to prevent home-brew projects? The time spent trying to prevent these sorts of exploits must be incredible, and so far, none of them have succeeded.

Personally, I'd love a console that allowed me to run whatever code I want on it - imagine the uses! MythTV running on an XBox? Awesome!

On Idealism and creating your career

I enjoy working with open source software - I guess that comes as no surprise to those of you who know me. There are many reasons why I'm drawn to the open source model, including the following:

  • I like making stuff, and have the skills to do so - It's getting easier too. Application developers are realizing that making it easy for their users to extend and customize their products can only be a good thing. KDE 4.0 does this very well - you can write many simple KDE extensions in a language of your choice. Of course there are more ways to extend an application than by programming - but that's hat I'm good at.
  • Most of the time, I enjoy the community. Like any community, there are always going to be your garden variety blockheads, who seem to live for the sole purpose of making every one else's lives difficult. The open nature of an open source community makes it harder to deal with these people, but I guess that's the price you pay for freedom. On the other hand, where else can you mingle with thousands of industry experts for free? It's like being at a huge tech conference twenty four hours a day for free!
  • Open != unprofitable. Many open source projects have gone on to be the basis for a successful business model. Sure, it's harder to make truck loads of cash by treating your customers poorly, but it is possible to grow a successful business by releasing open source software. The list of companies is huge - Trolltech springs to mind - they've just been bought by Nokia for some vast sum of money, so they must be doing something right.
  • Finally, I enjoy the fact that there are no boundaries. If you have an idea for a piece of software, you can make it. There are no closed protocols to get in the way, there are no commercial pressures forcing you to take shortcuts; you are free to write your software as you wish. If you feel that writing a product that consumes massive amounts of memory and randomly crashes is a good idea - go ahead. The measure of success will be how many users use your software.
    Another point here is that this openness and strong competition leads to some very careful planning of software features. Take KDE 4 for example. Some very intelligent people have sat down together and thought about the best new features they need to make KDE even better. Don't believe me? See Aaron Seigio's KDE4 release keynote speech; it'll knock your socks off.
In some ways, that last point leads to a kind of Darwinian evolution amongst software packages. Good packages survive because they're popular, and thus more developers work on them. Bad packages languish and die. Sometimes packages are forked and sometimes packages are merged. This seething "package soup" has given us a very rich mix of packages to choose from. I can name a dozen web browsers, at least fifteen email clients, and twenty text editors off the top of my head. They're all slightly different, but they're all good software. Some might argue that we're spoiled for choice, but that's another blog post for another day!

Working as a volunteer on an open source project takes skill, commitment and determination. There are very few external motivating factors. If the project you're working on doesn't interest you, chances are you won't complete the work. The reward at the end of the tunnel is the gratitude of your fellow developers and users; not to mention some new skills you can take to your next project.

I've been involved in open source software for the last 10 years in one way or another. In that time I've picked up many skills that I can be proud of. Unfortunately, in my professional life, these skills aren't recognized by my peers - and understandably so. I have no formal qualification in the subject area, they've never seen me apply my skills in a practical manner, there may even be a lack of understanding that it's possible to gain new skills outside professional development or formal qualifications.

Which brings me to the point of this post. I want the open attitudes of the open source world to migrate to the commercial software development world. I want to have an "anything is possible" attitude towards our commercial products. We've already seen time and time again how products that started out as garden-shed projects with this open attitude have merged into multi-billion dollar products. Why can't we replicate that in a real business?

Obviously these Utopian ideals need to be tempered with the reality of running a business, but I refuse to believe that the two trains of thought are mutually exclusive. I encourage any of the readers of this blog to try to develop an "anything is possible" attitude towards product development. If you set your mind to achieve greatness, it'll happen. Why settle for anything less?


I realize that this may sound a little naive - but that's the whole point. Naivety isn't something to be ashamed of, that idealism is what makes us great; our ability to see the world as it should be, and strive to meet that distant goal is (as far as I'm concerned) fundamental to what makes us human.

Yes, we DO care!

Jeff Atwood writes a brilliant blog over at coding horror. My only gripe is that he's a .NET kinda guy - which is fine, most of the time. However, his recent post, entitled "Why Doesn't Anyone Give a Crap About Freedom Zero?" seems a little short sighted. For those of you who have never heard of freedom 0, It's one of the four freedoms that the free software foundation have set out to protect. The FSF define it as:

The freedom to run the program, for any purpose.


I don't have a problem with Jeff's love of .NET and microsoft in general, but when you post a blog with a title like that, it sidelines and marginalises everyone who does care.

Jeff - there are many of us who do care about Freedom 0 - and the other three. Take some time out of your busy schedule to investigate Linux and the BSDs. You'll find a community full of bright, innovative developers who all want to make a better computing platform.

This brings me to my second point. Okay, so this is probably really obvious to the rest of you, but I had a sudden realization the other day. It went something like this:

The reason why there are so many technically brilliant innovations found only in open source platforms (Yes, I genuinely believe that to be true) is that the pressures of software development aren't there. Commercial software vendors are always struggling to maintain a balance between allocating time to develop new features, maintain existing features, test / QA the product, and get it out the door. I don't believe that there's a single software product that was 100% complete when it was shipped. That's the nature of commercial software development. Too often the "right" way of doing things is sacrificed for a cheaper, faster way of doing things.

On the one hand this means that deadlines and schedules are met (everyone gets paid), but on the other hand the software quality is lacking. In an open source project however, there are no commercial pressures at all. Developers are left to their own devices to code what they want. Package maintainers are allowed to choose their own schedule - and who better to choose that balance between release frequency and code quality than the programmers who know the product best?


The more I look into the KDE project the more I realize that I'm right. There are some truly brilliant bits of code in there; It's a pity that they're never appreciated by the general public.