Tuesday, April 22, 2008

Why do we bother with Linux? Also, UIA status, and Twitter revisited...

The Question

My good friend Aaron is a PhD student in Geology at Penn State. We've known each other since we were toddlers, and connect on many levels. He uses Matlab and god knows what other crazy software to write molecular simulations for his experiments, but he's not the same kind of geek as I am. After reading about Banshee on my last blog, he comments:
I really like reading your blog. I click on all the links and feel like I'm learning something. I do have one question though. When you are working to create these programs for Linux does it ever feel like you are reinventing the wheel? It seems like a lot of time and effort is spent creating linux versions of programs that already exist. Sure there are a few new features that are neat but the bulk of the work seems like recreation. I'm totally missing the point here right?
I've been thinking about this for a few days now. I'm not going to waste time arguing specifics about Banshee, bringing up examples of truly new and unique software on Linux, or explaining how even when we are reinventing the wheel, it is a worthwhile and fulfilling endeavor. Instead, in the spirit of Passover, I will address the general question, "four children" style:

So, why do I spend so much time working on Linux, when a no-cost proprietary solution may already be available?

The free software zealot says: "I will not use software unless it is free (as in freedom). Whether or not a proprietary solution exists is irrelevant; I have problems I need to solve, and if there is no free software that solves it I will create a new project. It is simply unacceptable to sacrifice my freedom for the sake of convenience. As Benjamin Franklin said, 'Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety.'"

The pragmatic user or programmer says: "It is in my best interest to use free software. If I find a bug or wish there was a certain feature, I can talk directly with developers about it, pay somebody to fix it, or fix it myself. I don't have to wait until it's in the best interest of some corporation. I don't have to be afraid of being stuck with unsupported abandonware."

The young developer says: "Reinventing the wheel is half the fun of writing software! Even if there *is* an existing free software project that mostly does what I want, I'll probably start one from scratch because then I can do it *my* way. If it's useful to others, then that's great, too. Duplication is par for the course in the software world; after all, weren't there plenty of media players before iTunes, and aren't there still? If there are multiple operating systems, applications, or web sites that appear to serve the same need, then you just need to look closer to understand what niche each is for."

The user who does not understand enough to know the difference says: "My friend/child/administrator set up my computer with Linux. If popular software isn't available on Linux, I'm usually lucky enough to find a suitable free alternative. I get free updates and no weird restrictions on how I can use my computer."

My own answer is a mix of those. Sure, sometimes when I'm writing code that could literally be copy/pasted from some Microsoft engineer's workstation, it's a bit frustrating. It's frustrating that other companies rarely see fit to release their code. But in reality, most code that I write isn't like that at all. It's written to solve a specific, unique problem, and when I solve that problem I feel fulfilled. Using and writing free software gives me warm fuzzies. And as a developer and demanding user, it is very important to me to have access to source code, so that I can fix bugs and add features I care about. Nobody at Apple ever cared about the problems I had using iTunes to burn CDs (every version and OS), and I couldn't do anything about it. That's the opposite of feeling warm and fuzzy.

I'd be interested to see how other developers answer this question, though.

Yay, UIA

Andres has started adding support for firing ATK events, so now we can see Windows Forms appear and disappear, as expected, in Accerciser. It's been fun working with him on this...I get the feeling we'd be a good pair for XP, if he wasn't on the other side of the globe. :-P I've written a lot of unit tests against Microsoft's classes and fixed ours to match that behavior.

This week I'll be continuing with that, and probably working with Andres to expand our event support. I'm excited to be able to send and receive standard window and button events. But I guess I'm easily excited?

Yes, Twitter

I've been experimenting with twitter, because it turns out people I care about are using it in non-masturbatory ways. I'm looking for a better client that I can read on *my* time (instead of being IM'd whenever a friend updates). Gtwitter isn't getting updates for some reason and Twitux requires newer GNOME libraries. If I start checking for new tweets more than twice a day I'll have to do something about this...


Mario Carrion said...

Have you ever tried twitterfox? It's a firefox add-on, you can configure it to get tweets up to 30 minutes. I like it.


Rusty said...

Not a developer (at least not actively) but would also point out that many of us are curious about the internal workings of the software we use.

A chemist well knows how valent and co-valent bonding works at the atomic and molecular levels, but how does matlab implement a model that provides that level of detail when given a formula for a molecule? Do the rules in place break down at the same places that the bonds do in chemistry, or do they break in entirely different ways? The obvious answer is to test with known qualities and compare against reality, but that may not tell you if a breakdown in a hypothetical molecule tested in matlab will reflect the chemistry in real life.

And as long as the tool has been tested to reflect reality within the parameters it's been given and allowed to work within, all is probably good. However if you want to test something outside of the limitations of Matlab, you're stuck with simulating a smaller portion, or waiting for the capabilities of Matlab to be improved in the next version, presuming that it's developers have time to develop that ability.

An open/free alternative, such as scilab (possibly) will have the option of allowing a user to look at what's failing, and write specifications that provide for new capabilities, and possibly add functionality. If the current developers are unable to allocate time to work on implementing those specs, the user can look at the source code and potentially learn how to make those improvements him or herself. A patch to provide that functionality or to implement the spec can be attached to the spec as an example, or even as a complete fix that may be adopted by the application developer or team, or may provide an incentive to look at the spec and perhaps come up with a cleaner implementation, possibly better.

And beyond submitting bug reports, and possibly reverse engineering the proprietary tool, there really isn't much you can do to make what could be significant strides in proprietary software. I'll grant that even in the proprietary world, there are some really great developers, some more responsive than others to issues. But in some cases, even they are hamstrung by decisions elsewhere within the company. See the several stories regarding Creative's decision to provide reduced functionality based on the OS, rather than on the end product.

Re: Twitter, I've been getting updates through gtwitter, but there have been back end problems at Twitter that have affected a fairly large number of people. Primary complaint being that tweets sent are not showing up until some unspecified amount of time later.

You may also want to look at blt if you do command line work.

A potentially better solution would be a daemon running and collecting tweets, then when you go to pull up the list (twice a day or so) you could see a log of the tweets, perhaps in a web page, with the option of responding to any particular tweet by clicking on the sender, or following embeded links by opening them. (I would recommend a "target=new" in the link, but that's just my thoughts.)

Even though I have IM notifications turned on, I'm not seeing them in Jabber, otherwise I would suggest a quick jabber agent to be the daemon, that 'loggs' all tweets, and a php or python script that imports the log, parsing it into a table as a web page, or within a custom app for that. Obviously it could be perl, c#, or any of a large number of other languages.

Sandy said...

Mario! TwitterFox is pretty sweet! Thanks man. Lets me go back in time a bit, too.

Ethan Anderson said...

I suffer no restrictions. FOSS gives me complete and total independence from /everything/.

Igor said...


I started that weeks ago, the API is very cool the client not so cool and|or finished.

Anonymous said...

I write free software because it solves a problem. The problem I'm trying to solve may be that I need the functionality, or the problem may even just be that I need to learn about and understand the technology.

Windows or Macintosh software rarely solves my problems even if superficially it appears to have the same functionality. For example, F-Spot is still less functional than iPhoto, but the fact that it runs on the same Linux machine as all the other stuff I use makes it more functional for me.

In different words, cloning something for Linux is useful in its own right because it makes it work in the environment I use day-to-day. And I don't switch to Windows because there is a lot of functionality I don't get on Windows and a lot of things that don't work well on Windows (not to mention the cost).

Anonymous said...

The way I see it, sometimes duplicating software is just something in the way of awesomeness ahead. It's like going through a irritatingly long process of creating base samples for chemicals that you want to experiment on.
Once you have these samples ready, then the fun begins. FOSS lets you look at something and say "Hmmm... I wonder if I could change that", and then go out and try. That's my explanation for Compiz Fusion's enormous success.
IMHO, the question is why would a non-developer swtich? I'd say so that he can be a receptacle for awesomeness.

Anonymous said...

Twitter.com provide RSS-feeds, which is perfect for those of us which want to catch up a few times a day... :)

Anonymous said...

give mitter a try ;)

Anonymous said...

i just found twitux on Ubuntu Hardy Hearon repository :)

Anonymous said...

I never had the feeling that most GNU/Linux developers really care for the user. They care a technical problem that interests them, but they are usually not interested in making something beautiful or useful.

GNU/Linux in general is still painful to use, no matter what incarnation or distribution you chose. There still is always at least one system component that does not work, and many of the applications for it are either broken or lack important functionality.

Users don't care for the availability of the source code or the possibility of messing around with the core of the software that they are using. They need to get a job done; software is a tool for them, not something self-sufficient.

GNU/Linux and its culture are perfect for geeks and people who are happy with messing around with a system - but who are no actually really trying to create something -with- it.

The other issue with most of the dominating culture behind or in GNU/Linux is the mentality of cloning already existing software. Where's the innovation in that? Especially in the Open Source world developers have the chance to create something NEW --without-- the need to maintain compatibility with legacy user interfaces and interaction models. But that chance is never taken.

Apple is an extremely proprietary company with a sometimes almost intolerable business model, but at least these guys know how to develop new interfaces and interaction models. And even Microsoft has shown innovation in their products, albeit at a much lower rate than its competition.

But when I look at GNU/Linux, I mostly see unimaginative copies of commercial software or useless eye candy at best -- on top of a system that after all those years still has unbelievable problems with supporting multiple monitors out of the box or accessing encrypted wireless LANs (which both are no-brainers nowadays on commercial systems).

My personal killer application is Apple Aperture. There are competing products on the market, but in my opinion they plainly suck compared to Aperture's feature-set and workflow. You can only write such a software if you actually care for your user base and their needs. As a digital photographer, you simply don't care for the source code or if the software is free in any way. You want the best and most efficient tool for the job at hand. A photographer's job here is to develop his pictures and sort the good ones out. When you shoot thousands of pictures during just one session, you won't use amateur software, especially not when you work with RAW formats.

Photographers are just ONE target group GNU/Linux software coders just don't understand or care for. You could go on with webdesigners (Flash, anyone?), videographers (where's Final Cut Studio?) or musicians (where are the Open Source versions of Propellerhead Reason, Logic Studio or Ableton Live?) or professional writers (where are Scrivener, Mellel, Montage and Final Draft ? And no, OpenOffice does NOT count, and neither would Microsoft Office or iWork).

You will find the very same situation in almost any other profession -- except for software developers and system administrators. Since those are basically the only real users of GNU/Linux, naturally plenty of software exists for them.

The problem is that such software probably is completely boring to write and it simply is no fun to write something after the specification and requirements of others. Why would one write a software for photographers when you are not shooting photos yourself? Why would you want to write music software when you are not a musician? Why would you write software for a medical doctor when you are not a physician yourself?

Well, people usually do these things because they get paid for it and make a living with developing and selling such a product. Since selling Open Source software is almost an impossible thing to do, you already know why Adobe, Ableton and Propellerhead do not even try to port their software to GNU/Linux (to which distribution, by the way?) - people probably wouldn't buy it in the first place, because it is not "free" (where, let us be honest for a second here, most folks only care for 'free as in beer').

I do not know if the GNU/Linux community, if it even exists as an identifiable group and not just as a cluster of individuals who all have their own interests, can overcome that situation and mature GNU/Linux into a platform that will be really useful for USERS.

I tend to believe that 'users' and the GNU/Linux 'community' do not go well with each other and that they are located at the opposite ends of a spectrum. The 'community' makes GNU/Linux what it is, and that 'community' is not made of users, but of technical geeks who are interested in bytes and pixels, but not in the printed word or picture.

As long as that does not change, user-oriented software will remain the domain of proprietary, commercial entities.

Anonymous said...

Those are some good reasons. :) It's always nice to see someone preaching the Free Software gospel.