Free download:

Software Wars, the Movie

Soundtrack for the book:


If you enjoyed the free download, a donation of the cost of a newspaper would be appreciated.



The best book explaining free market economics:

The best explanation of how we can build a space elevator in 10 years:


Book explaining a political solution to our economic problems:


Dissent on Gnome's Javascript decision

Yesterday I read a blog post / announcement about how Gnome is moving to Javascript and I wanted to write some feedback.

It is great that they are trying to use a garbage-collected language for as much code as possible. For a component-based shell UI, Javascript is surely better than C, C++, or Java. I realize they started down this road towards Javascript years ago, but I think it is worth re-considering whether they are on the right path.

With big decisions, it is nice to have a paper trail. I can find no supporting documentation backing up the decision other than one blog post written after the fact, which doesn’t give very much information.

It appears the decision was made in a meeting. It is great to have meetings to discuss things, and it is great to make decisions in meetings, but oftentimes the best results are about moving the decision-making process forward, not actually committing to big things. Even if there were many in that room, there are surely facts they didn’t have, and other interested parties who were not there. There is the risk of “tyranny” by a self-selected cabal. Hopefully the decision wasn’t made at a bar 😉

I believe the best choice for Gnome is Python, not because the language is necessarily a lot better than Javascript, but because it is already close to the standard scripting language of the Linux desktop. My Mint-Debian repository has 1809 Python packages, and only 301 for Javascript. (Vala has 68.) Was data like this taken into account during the decision-making process? Without a paper trail, there is no way to validate the analysis or circulate it for feedback. There are many reasons to use Python, but the most important is that it is already so popular on the free desktop. The best reason to use Javascript is if you plan on running inside a web browser. Anyone writing code for the Linux desktop and not constrained to a web browser can do better.

To be clear, some of the reasoning is explained. Here are my responses:

1. Our language of choice needs to be dynamic and high level.

Python and many languages fit that description.

Next, it says:

2. There is already momentum in the GNOME Project for JavaScript — it’s used in GNOME Shell and GNOME Documents.

Unfortunately, that is not really much of a reason. In fact, it could be perpetuating a bad plan with this logic.

Next:

3. There’s a lot of work going into the language to make it especially fast, embeddable, and framework-agnostic.

Every language works to make itself fast. There are lots of efforts to make Python fast such as Cython and PyPy, and as many Gnome libraries will remain in C, this is hardly an issue even with the standard CPython implementation.

I’m not sure what the benefit of being embeddable is for a desktop UI. And Python is embeddable as well, inside apps like LibreOffice. I don’t undertand what the benefit of being framework-agnostic is. Every language needs libraries, and a rich set of libraries is a good thing.

4. JavaScript is increasingly being seen as a first class desktop programming language — it us being used in Windows 8, mobile platforms, and for local web applications.

Aren’t Windows 8, mobile, and local web applications supposed to be a worse experience than a Linux desktop? I imagine living exclusively in any of those platforms and shudder at the thought. They also aren’t planning on sharing code with any of those groups. Please don’t try to convince people the Gnome future is bright by using those three examples!

There is another post by John (J5) Palmieri who appears to be a fan of Python but who nevertheless endorses Javascript for Gnome. In it, he says that Python has a lot of baggage. Unfortunately, he doesn’t describe or link to a document describing what he’s talking about. In addition, it is important to weigh the good (the existing libraries and free software programmers) against the baggage. Every language has some baggage. For example, there is a book called Javascript: The Good Parts, which says something about Javascript’s. Furthermore, Python is setup to evolve and periodically break backward compatibility via things like the Python 2.x / 3.x branches. Can Javascript ever remove its cruft?

My day job is trying to finish a movie (trailer) endorsing Python as part of math literacy. Changing how math is taught to children could take a generation. But if Gnome get going now, they will be ready, and hopefully also be better than Gnome 2.x by then 😉 (I’m stuck in MATE. I believe the decision to remove Gnome 2.x is as good an idea as LibreOffice removing DOC import. This decision can be revisited also, but given how long ago it was made, I’m sure people are tired of the topic, so I will end here.)

Update: Some suggest that Javascript is more popular than Python as being a reason. Google trends show that Javascript popularity is dropping dramatically and the two are close today. Furthermore, most of those people are building random websites, not writing code that ships in Debian. And as pointed out in the comments, a recent TIOBE survey shows Python as more popular than Javascript. Python is also replacing Java in introductory CS classes.

Open Letter to fellow ex-Microsoftie Steven Sinofsky

Congratulations on leaving Microsoft. Unless you have bills to pay, you won’t regret it. I left at the end of 2004, and have since studied a vast and amazing — but still flawed — world of computing out there.

For example, I discovered that we should already have cars that (optionally) drive us around and computers that talk to us. And that Linux on the desktop is powerful and rich but failing because of several strategic mistakes. Google claims to be a friend of Linux and free software, but most of their interesting AI code is locked up. Programming should be a part of basic math literacy for every child. The biotechnology world is proprietary like Microsoft, which is stunting progress in new medicines and safer devices.

The most important lesson is that the free software world outside Microsoft is much bigger and richer. No matter what aspect of technology you want to work on, there are codebases and communities out there. Even the large companies who write proprietary software like Amazon, Apple, Facebook, and Twitter use free software as their base. So you first find out what you want to work on, and then you find the existing codebases and communities to join. In some cases, the are multiple, so you need to decide which best meets your needs.

The good news is that there are already millions of smart people working on any aspect of technology you’d like to work on. That is important because now that you have left Microsoft, you greatly lose the ability to control your own destiny using their technology.

When I first left Microsoft, I took on a consulting job helping a team build a website which used Microsoft Passport as the authentication mechanism. However, as I ran into problems, even Google wasn’t able to help because the knowledge and ability I needed to fix my problems was locked up behind the Microsoft firewalls. Fixing a problem in proprietary software can sometimes feel like performing witchcraft — you have to try lots of random incantations because you can’t know what is really going on. In the free software world, the code, buglists, specs, discussions, etc. are public, and anyone is welcome to contribute. A warning though, it can be like herding cats.

I read you have a Microsoft Surface. I recommend getting another machine and installing Mint-Debian Linux. You’ve probably heard of Ubuntu, but Debian is the 1000-person team that provides the rock Ubuntu builds upon. Mint is a very popular re-spin that adds mp3 playback and other features that have patent risks and can’t be part of the free Debian system. The Windows app store is a Potemkin village compared to what Linux offers. I remember you have a Unix background, I recommend refreshing your knowledge of the command line and reading some new books. I felt like a stranger in a strange land for the first couple of months, but it became perfectly comfortable to me, and has numerous advantages such that now I am as interested in using Windows as I am in using DOS.

I don’t recommend you bother with Apple. They have a proprietary walled garden even smaller than Microsoft’s. If you find a problem with Apple’s technology, your best option is to wait. If you find a problem anywhere in the free software world, you can file a bug, talk to a person, (usually) find a workaround, write some code, hire someone — or wait.

The other nice thing about this global community is that you don’t have to go anywhere to join. You can write code in your pajamas from Seattle and send it to Linus Torvalds in Portland who works from home in his. The Linux kernel alone has 3,000 programmers, scattered all over the earth, some of whom live in countries that are officially at war with each other.

Enjoy your new-found freedom. I have written a book about much of this you can read for free. It contains many things I didn’t know until I left. There are many news sites to learn about what is going on in Linux. I personally use LinuxHomePage, but every community has blog aggregators

Mike Conlon on the Apache OpenOffice fork

The comment below was made on my blog, but it was so good, I’ve turned it into a post. It was written by Mike Conlon, who has written papers about forks in software.

It’s obvious that many of your correspondents either haven’t read your article [about the reasons against the Apache OpenOffice fork] or don’t understand it. However, I want to comment on forking.

First of all, the ability to fork is good. However, not all forks are good. Forking occurs when one set of parties in a development project develops serious objections to the direction the project is going. Once the fork occurs, usually the vast majority of the community choose one tine of the fork, and the other one withers.

Example: Remember XFree86? The leadership of the project became very unresponsive to community requests, to the point that many community members were complaining, and new contributors felt unwelcome. It actually forked into several tines, but soon most of the community settled on the X.org fork, which has thrived, while XFree86 went nowhere after the fork.

Sun was rather unresponsive to the OpenOffice.org community. Many potential contributors wouldn’t join the project because they would have been required to deed ownership of their code to Sun. But for whatever reason or reasons, the OpenOffice.org development community never grew to anything like the size of other open-source projects of similar scope. Then Oracle bought Sun, and many in the community simply didn’t trust Oracle to lead an open-source project properly. Sun was bad. Oracle was intolerable. The result was the LibreOffice fork.

LibreOffice appears to be thriving, while there seems to be little happening in Apache OpenOffice.org, other than press releases. This is a sign of a good fork. As some have commented, There is some instability in recent releases, but I also see the RIGHT THING™ where I didn’t see it before. (E.g., when you click on the change-the-font-size drop-down list, the current font size is now in the center of the list rather than at the top as before.) The increased pace of improvement is a major sign of the successful tine of the fork.

The Apache OpenOffice.org effort must be considered a fork of LibreOffice, even though it has its predecessor’s name. As you have indicated, the original OpenOffice.org project is dead. (The project is dead, but the Website lingers on…) So this isn’t the original, this is a fork. It’s a bad fork: it’s bad because there are no significant complaints about the direction of the LibreOffice effort. And, I believe, with you, that this fork is wasting resources, and it is dead. It is dead because (all complaints about which license is more desirable aside) there is no likelihood that developers will abandon LibreOffice for Apache OpenOffice.org.

Finally, a word about IBM (and other corporations related to open source development): IBM does not have friends. It has interests. When its interests align with the open source community, we will perceive IBM as “good.” When its interests do not align with the open source community, it will do things we consider “bad.” Remember that IBM, or any corporation, is legally required to do what is in the interest of its shareholders. Govern your relationship with the beast accordingly.

Response to the Global Futures 2045 Video

I have just watched this video by Global Futures 2045:

This is my list of things I disagree with:

I moved my response here.

New Article

I just got a new article posted on UnixMen.com, about how Apache OpenOffice is a house of sand.