The essential argument is that the FSF does too much preaching about what people shouldn’t do, without offering constructive alternatives.
Archive for the ‘FSF/GNU’ Category
I suspect many of you will remember Apple’s adverts a few years back, with the tagline Think Different.
Not think better. Not think world-changing. Think different.
What does “different” mean from the point of view of a user or developer? Different file formats. Different systems. Things that don’t interact. A hundred different bugs in every application. Just ask a web developer what they think about different browser implementations.
Developers get faced with choices between different systems all the time. Why should I use system A instead of system B? Does system A do something that system B doesn’t do, and do I care about that something? If so, then this is an excellent reason to use system A. Perhaps system A does the same thing as system B in every regard that matters to me, but does it better. This is still a good reason to use system A, providing I haven’t already invested heavily in system B.
But “different” isn’t better automatically. From the point of view of a commercial entity, “different” is generally worse by default. “Different” costs money. Is it worth it? You have to justify that, justify why different is better in this case.
In light of this, I have a question for you, the contributing community of KDE. What makes KDE better? What makes it world-changing?
Doing something revolutionary
Let’s make this a bit more specific. Most immediately I’m interested in what KDE has to offer the software industry at large. What is KDE pioneering that would make a company that has historically based it’s business model on web applications built on Microsoft technology, but is now branching into open source because it’s not afraid to follow interesting trends, sit up and pay attention? Consider a target audience of someone who thinks the time of the WIMP interface is over, but that the iPhone is a testament to the ingenuity of graphical designers and not software engineers (and software engineering is what we’re interested in here). Consider the trend towards service-based computing. Consider Google’s dominance.
Think about seamless integration of mobile devices, of reading something at your computer, then having to rush off and getting it onto your iPhone/eeePC/PDA/portable toaster with almost no interaction required. Think of the problem of sifting through the cruft of the intarwebs (cat captions and all) to find that useful nugget of information. Think of how your life revolves around trust networks (who do you ask for advice?), but how poor computers are at duplicating that. In short, think of the unsolved problems in computing.
Is the semantic desktop (cf Nepomuk) a bold leap into the future of computing? If so, how?
Is JOLIE integration into the desktop layer where it’s at? Why?
Will Plasma revolutionise the way we interact with small form-factor devices?
What problems are KDE solving that haven’t been solved before?
Remember, we’re thinking here about why people who’ve never heard of KDE and see Linux as a server OS should be interested in what we’re doing. We’re thinking about why budding young developers who don’t care about the GNU software libre philosophy but just want to work on an exciting, intellectually challenging and world-changing project might jump at the chance to get involved with KDE.
Doing something better
Secondly, why should people (again, who don’t care about the KDE desktop) use our development framework? What makes us better?
Perhaps Eigen is the matrix library to end all matrix libraries?
What can Akonadi offer the world beyond the kdepim module?
How will Plasma make the hoards adore your application?
In what way are KComponents the light side to COM and CORBA’s dark side?
Why should you embed Marble into your application?
How is KDE solving the problems that developers care about in a better way than they have been solved before?
I’m fully convinced that KDE is awesome. I care about software freedoms, and KDE is free. I care about frameworks and APIs, and Qt/KDE beats the competition easily in that regard. But I want to be able to evangelise KDE to other developers who don’t care about these things, and I don’t have the knowledge to do so.
Post your responses in the comments, or put them straight down on my Techbase page. I will try to collate everything there.
Being a hacker, the part of free and open-source software that really appeals to me is being able to tinker. This is why I use Arch Linux rather than its more polished compatriots. But I’m also interested in the way volunteer communities largely composed of hoobyists and enthusiasts can be leveraged to solve problems that are normally very expensive.
Even after only working in the software industry for a couple of months, I can already see how writing software is an expensive business for companies like Microsoft. Developers’ time is not cheap, and it takes a lot of time to produce a product of any complexity.
But you only have to look at Linux or KDE or GNU to see the levels of complexity that can be reached by people working essentially for free. Sure, there are people being paid to work on all of those areas, but even then the fruits of their labour are being given away for free. They can’t even do what Qt Software does and simultaneously sell a commercial version and give away a free one, because they don’t own the copyright to the whole codebase and hence can’t dual-license it.
All this is why I was interested to read about how the ideas of open source are being applied to hardware. It’s a fascinating read for anyone interested in the mechanics and economies of open source.
I’ve been a Linux user, on and off, for some eight years now. My system has been single-boot Linux for between four and five years. And I contribute to one of the biggest user-visible projects in the free software world, KDE. So, how did I get here?
To start at the beginning, the first computer I remember was my mother’s BBC Micro B. My parents only actually threw that out about a year ago. It was like a large keyboard, with a flat block at the back that contained the actual processor and so forth. And what was essentially a small TV screen for a monitor. It had a word processor (which was my mum’s use for it), BBC BASIC (my first, disappointing and short-lived, foray into programming) and an amazing collection of games, including one called Wizalong that involved two witches on a see-saw. All this on a few giant, low-capacity floppy discs (5 1/4″, I believe).
From there we went straight to an IBM 486 with Windows 3.1. It was a whole 33MHz! Here we got the magic new 3 1/2″ floppy drive with a whole 1.44Mb storage. It had pictures, icons and WYSIWYG office applications. But no Wizalong. So, as an 8-year-old (or there abouts) the box it came in was far more entertaining.
The last shop/factory-built PC we got was a Pentium I 166MHz machine with Windows 95. A fancy new interface, and even some games (I think my favourite that came with the computer was Gizmos and Gadgets). I still remember that the odd game involved exiting to DOS in order to run it. And running just about any game involved, for the best experience, using the task manager to terminate everything but explorer.exe and rundll32.exe.
Now, there were a few forays into other machines and systems here. I bought a Commodore 64 for £5 at a sale, which had one of the best games I’ve ever played on it: Paper Boy. But my interest in that machine soon waned, helped along by the tapes only loading about one time in four.
School had two main types of machine. The computer club used RM Nimbuses, hooked up to a Winchester server via coaxial cable. These had such classic games (you don’t think we did anything else on them, did you?) as Sopwith Camel, Star Wars and Tea Shop (which, if you set the price of a cup of tea to over about 50p, would complain that “not even British Rail charge that much!”).
IT lessons were on Apple Mac LCIIIs. These were essentially typing lessons in Mavis Beacon, and the occasional use of ClarisWorks (one of the best office suites I’ve used, except for the lack of tables). These were networked via AppleTalk in order to share printers. This meant, of course, that the curious among us could poke around other people’s computers, although there wasn’t much to do on them.
There were other odd machines around. Design Technology had an Archimedes. The library had a couple of 386 machines and a PowerPC, and later got an iMac. When the new PC network came in (with Windows 2000, I think), the LC IIIs and 386s went out the window (or, rather, on the skip), although the others lived on. A few of the LC III machines even survived the cull, making their way into technology classrooms. After that, of course, IT lessons turned into internet fests (a twin 128K ISDN line serving the entire school), although we were supposed to be learning the joys (!) of Microsoft Office. Ironically, the new network manager for the Windows network was a complete Mac geek.
Meanwhile, at home, my dad had built a machine himself, with me watching, and after that I was hooked and took over playing with machines. I’ve built every computer for me and my family since (with the exception of my laptop). Those were the days of memory at £1 per megabyte (dropping quickly to 50p), computer fairs, computer magazines and dubiously acquired software. We went through a whirlwind of Windows 98 SE (crap), Windows ME (flashier crap), Windows 2000 (half-decent), Windows XP (two-minute log-on times) and back to Windows 2000.
My brief obsession with computer magazines led to a stack of freeware on the CDs on the front (this was in the days when we had AOL dialup with 19.2, 33.6 and finally 56K modems, so downloading this stuff wasn’t reasonable). One of these came with Corel Linux, which I briefly installed and didn’t get on with. But this whole Linux thing had me intrigued. Along came Redhat (5? 6?) on another magazine cover, and I tried that. No dice. It was complicated, and not in a fun way.
Then I found Linux From Scratch. I was at 6th form at the time, and I downloaded the necessary packages in Computing (Delphi and Object-Pascal ftw), loaded them onto a memory stick and took them home (where we were still on dialup, although no longer with AOL). I was hooked. My curiosity with how things work is pretty much insatiable, and here I could build up an entire operating system myself. What was there not to like?
Well, the maintenance for one thing. I was, and still am, a bleeding-edge-junkie and it was hard working keeping up with new versions. I tried DIY-Linux, but that was still a lot of work. Eventually I settled on Gentoo. Once at university (with a second-hand IBM Thinkpad with 128Mb RAM and a 900MHz processor, but more importantly a 10Mb link to the internet), I would go out to lectures leaving emerge running. And come back to find some part of the build had broken because of some problem that apparently only occurred with my particular choice of USE flags (which had taken me most of a day to decide on).
In the holidays, where I had two machines (my laptop and my desktop), I tried OpenBSD, NetBSD and FreeBSD. I liked the philosophy of OpenBSD (yeah, I’m a bit of security nut), but GNU did a damn good job on their tools, and the BSD ones had little quirks that I didn’t like.
I suppose I should point out that at this time I was a console junkie. Mutt, MPD and e-Links were my applications of choice. I would occasionally boot up X with WindowMaker if I needed something graphical, like a website with pictures. But the console was my realm. By this time I’d discovered the magic of 6 VTs (it took me a long time to learn that CTRL+ALT+F[1-6] did useful things). GPM did what I wanted with copy and paste. I even dallied with screen, although it struggled with a couple of programs like e-Links.
By second year, I had ditched the laptop (except as a useful spare computer) and taken my desktop to university with a shiny new LCD monitor. I decided that living on VTs was too much, and instead wanted something graphical. But what to choose? My minimalist side said XFCE, or Fluxbox, or just stick with WindowMaker. But I didn’t just want something for me. I wanted to impress people. I had the Linux bug, and even if I couldn’t outright convert people, I didn’t want them to dismiss it. So I wanted something pretty. But something that would satisfy the control freak side of me. To my mind, only KDE fit that bill. So on it went.
This led me to a world of graphical interfaces. A world containing the best file-browser image gallery plugin (Gwenview’s slideshow view). A world containing Amarok (well, after I’d weaned myself off MPD) and KMail (as powerful as Mutt, but nicer looking). A world of a slightly tacky plasticy look-and-feel. Oh, well, you can’t have everything, right?
Gentoo didn’t satisfy me, though. Those compile times. The build failures. What was I to do about it? Time for some more distro-shopping.
Ubuntu was the new kid on the block. It wasn’t bare-bones enough for me. I want to fiddle. If I wanted to point-and-click, I’d get a Mac. I want to poke things in /etc, and not find unrelated stuff breaks because some magic system configuration thingy. Hell, that’s why we all hate the Windows registry, right? The same went for most other distros. OpenSUSE is very nice (I’ve put it on my parents’ backup computer), but not my cup of tea.
But I found something amazing. Arch. It’s basically my perfect distribution. No waiting around for things to compile (well, unless you want something relatively obscure). Bare-bones, sort-yourself-out configuration, although most things work out of the box. I find there’s something slightly distasteful about BSD init scripts (although they’re better than System V ones), but that’s a rant for another time. Oh, and Arch has a fantasticly simple package manager and build system. And my discovery of yaourt has made package administration doubly easy.
So, I have my perfect distro, and a damn good desktop. What next? Well, I decided I wanted to hack on KDE. I’d picked up C from poking at various things over the years, but KDE’s architecture and object-orientated design using a real OO language (one of my Gnomie friends asked “who doesn’t love GObject?” Well, wjt, that would be me) was one of the reasons I chose it in the first place. Programs should be beautiful, right? C++ may not be beautiful, but it beats C any day of the week.
I chose Christmas 2006 to start delving into the world of KDE developers, beginning with the dot and Aaron Seigo’s blog. I found the planet soon after. KDE 4 development was in full swing, so I learned C++ and a bit of Qt 4, and dove in to the EBN, wading through the issues it picked up with KDElibs code. Seeing the numbers go down and knowing you did it is great, and it’s a nice way in for a newcomer.
Shortly after, aseigo’s Plasma project got under way, so I jumped in there. And recently, I started doing a bit of Amarok bugfixing, having been led there by my attempts to get my Now Playing Plasma data engine to work with it.
So, that’s a bit of personal history about how I got to where I am. I’m hooked on UNIX, hooked on Linux, hooked on Free Software. I’m hooked on KDE, and not letting go any time soon.