Category Archives: Free Software

My take on Ubuntu Unity

With the release of Ubuntu 11.04 (Natty Narwhal), Canonical changed the default user interface from Gnome to Ubuntu Unity. Being a long time Gnome fan and advocate, I admit I was initially surprised and a little upset with the idea. I was really hoping to see Gnome Shell (Gnome3) in Natty, but I guess they had their reasons not to include it and also to use a completely different desktop. Regardless, I couldn’t help but be interested in Unity. It is Gnome Shell -ish and I am a fan of change, as long as it improves my experience and doesn’t get in the way of what I am doing or over-simplify things.

Ubuntu Unity is really designed for netbooks — where screen real estate is at a premium. Unity drops the bottom task bar and replaces it with a dock/launcher on the left of the screen — basically the OS X dock. The top bar also gets a more OS X-y style, with an app menu/finder button, main menu of the currently focussed application, and notification/calendar/date/time area. It doesn’t really feel too much like an OS X clone, but it has a lot of similarities.

I have been using Unity for about three weeks exclusively at work and at home. Today I had to switch back to “Ubuntu Classic” i.e. stock Gnome 2 on my work PC, and here is why…

  • No panel applets
    • I wrote a little applet that gives you a menu that lists our PostgreSQL servers (15+), which opens a new Gnome Terminal and psql’s in to the right server with the right settings. Its really handy for my job and I really missed it and didn’t want to re-implement it.
    • The cpu/memory/disk usage applets help me keep a stable system especially when my software is misbehaving.
  • Grouping all windows in a single application makes it really hard to quickly jump to the right window. It makes maneuvering between windows at the level of multitasking I use more painful. With dual monitors it’s even worse.

I still may keep Unity on my home laptop because I don’t do as much multitasking and do find the layout more useful for home/casual use.

There are a few more annoyances in Unity that I ended up finding workarounds for:

  • It was not easy to configure the Unity dock/launcher. You can use CompizConfig Settings Manager under the Ubuntu Unity Plugin
  • By default, only select notifications show up in the notification area. This is broken. Here is how to fix it.
  • Gnome Do is much faster at launching applications and I have really grown to like and depend on it. You can fix it by changing the “key to show the launcher” in CompizConfig to something like <Shift><Super> instead of the default <Super>. The default <Super> keybinding overrides any keybinding using the <Super> key, thus <Super><Space> for Gnome Do.

Overall, I like Ubuntu Unity, but it over-simplifies the desktop too much for high-demand use cases.


A short KDE4 review from a long-time loyal Gnome user

This week I spent a short amount of time in KDE4. I have never been a regular KDE user, always hardcore Gnome, but every once in a while I like to check in with KDE to see what’s going on. It was really easy to setup in Ubuntu, just “sudo apt-get install kubuntu-desktop”.

Here is what I liked:

  • Awesome eye candy — It looks stunning.
  • Plasma — The new Plasma stuff does more than just look good, it seems like a great architecture for Desktop components.
  • Main Menu — Good design, intuitive.

Here are the reasons which sent me back to Gnome:

  • The biggest reason was that in general I am more used to the Gnome world.
  • I don’t like the KDE software suite that much, i.e. I prefer (or am more used to) the applications in Gnome like Gnome Terminal, Pidgin, etc.
  • The main menu was difficult to navigate backwards from sub-menus.
  • I love Gnome Do.
  • I am weirded out how all KDE apps are called KSomething.
  • I have a gnome panel applet that I wrote and use at work all the time. It lets me quickly jump to an sql terminal to a database. It would be a good test for writing a Plasma widget, but I didn’t have time.
So, in general, I like the direction KDE is going. They’re really pushing the technology with things like Plasma. I may check KDE4 out again for a more long-term stint. But I’m still, and will probably always be, a Gnome guy.

RE: Is the Success of Google’s Android a Threat to Free Software?

In response to Is the Success of Google’s Android a Threat to Free Software?:

The article makes a great point about how Free Software has almost no presence in the Android Market. Android is build on Free Software, but almost no Free Software is built on Android. And how this trend may likely invade our lives and diminish the spread of Free Software.

What I don’t think the article gets right is how to fix it. I don’t think support from the Free Software community is enough to make a meaningful impact. It needs to come from Google as well. I think the primary problem with the lack of Freedom in the Android Market is that Google does not promote Free Software or provide the integration and tools for Free Software on the Android Platform. How can Google not promote with vigor the community that has enabled so much of their technology?

What should Google do? Every free software developer needs web tools to promote and provide access to their project, and this has to be accessible from wherever end users interact with their project. For web tools, I think leveraging Google Code is a good thing. It is a great tool for Free Software developers to manage their project online and provide end users access to the code, documentation, and ability to collaborate. For accessibility, I think source code information (including corresponding license) needs to be available in the Android Market. For instance, when I look at the details of an app, it should list an entry saying how/where to get source and under which license is it.

There are other ways Google can promote Free Software for Android apps, but I think exposing source code information is a necessary start. Next, they can get into promoting apps that are Free Software and offering incentives for developers to release their code. Maybe waive the developer signup fee for Free Software developers (would have to be audited periodically to ensure all uploaded apps are in compliance with the required terms for Free Software).


Freedom to Restrict

I would love to be able to follow the ideals of Free Software pioneered and maintained by Richard Stallman and the Free Software Foundation, but in a practical world I can’t commit 100%. They are great ideals for which to strive, but they are just not practical 100% of the time for 100% of the people. Free Software rights are essential for some users, they are less essential for more users and most are oblivious to them. Although Free Software rights benefit everyone, even those are don’t require or are oblivious to them. This is because everyone can reap the benefits of the few who take advantage of them.

I think I lie in the range of Free Software being “slightly less essential.” I choose to use Free Software wherever possibly, which for me is the majority of my software needs. I have acknowledged that there are some things I like to do with software that can’t, and probably will never fully, be done with Free Software. In my case the primary thing I can’t do with Free Software is gaming. Although it pains the ethics centers of my brain, I have an Xbox 360 and enjoy playing it.

Stallman/FSF seem to focus solely on the rights of the end user, and to impose those values on software developers and distributors. But I have personally come to accept that software developers and distributors have rights too, and those rights include imposing whatever rules they feel fit to impose on their users. But if software developers/distributors wish to restrict the rights of their users, those users have the right, some would say obligation, to reject the software.

My optimistic hope is that users will keep software developers/distributors in-check by calling them out and boycotting their software when unethical and overly restrictive rules are imposed. The more common and effective response of the community, however, has been to create a Free Software alternative. But we shouldn’t overlook the power of a passonate community.


SSH data transfer trick

I’m surprised I haven’t figured this trick out yet, but I was kindof forced to when I got a new hard drive for my laptop, didn’t want to reinstall Linux, and didn’t have a lot of options. The only place I could back it up was on my local server. A usb-attached hard drive would probably be best, but I only had a network, so I needed to get the data to my server. Rsync might have worked, but I expect it would have taken a very long time. The best option would be to transfer a gzip’ed archive but I couldn’t save it locally then scp it. So I had to direct the output of tar/gz directly to the network. I’ve done a lot of things with ssh, but not this. What I found was the way scp handles stdin and stdout.

If you pass a command as a final argument to ssh it will execute the command remotely, but pipe stdin from the local terminal to the remote command and stdout from the remote command to the local terminal. So all I had to was execute a remote command to save stdin to a file on the remote system. This can be done via the command:

$ tar -cz . | ssh user@host "cat > file.tar.gz"

The tar -cz . says “create a gzip compressed archive of the current directory.” The | (pipe) says “take the output of the tar command and pipe it to the ssh command.” The ssh user@host “cat > file.tar.gz” command says “ssh to host as user and execute the command ‘cat > file.tar.gz'”. In cat > file.tar.gz, the cat command is there to properly catch and redirect the output and says “take my stdin and output it to stdout” and the > file.tar.gz says “direct the output of cat to the file file.tar.gz”.

The tar command gets us the gzip’d archive, the ssh command lets us pipe the output to a remote command, cat gives us a command that ssh can execute that takes the command input (the output of the tar command) and output that to a file.

Then once I have the backup and setup the new hard drive in my laptop I can restore the data using the command:

$ ssh user@host "cat file.tar.gz" | tar -xz

This does the same thing in reverse. It sshs to host as user and runs the command cat file.tar.gz which reads the file.tar.gz and outputs it to stdout. Then we capture that output and pipe it through tar, locally, which gunzips/untars the data to the current directory.

I could have also mounted a remote directory on my server using something like nfs, but I didn’t feel like taking the time to set that up.

This is a really neat example of stream manipulation in Linux. Hopefully you can learn something from it.

Note that I did all this from an Ubuntu Live CD so I wasn’t actively using my old hard drive (mounted readonly with mount -o ro /dev/sda3 /mnt/sda3) when I was backing up the data and so I could setup my new hard drive. The only other thing I had to do after I restored the data was to reconfigure grub, /etc/fstab, and /etc/ with the new UUID’s for the hard drive. I first had to use /dev/sdaX instead of UUID’s to be able to boot and find the UUID (I couldn’t find the UUID in the Ubuntu 7.10 live cd, I’m guessing because it was a little old, and I also didn’t feel like downloading and burning 8.10). Then I could configure the new UUIDs and reboot and all was good. Let me know if you would like more details on the UUID part.


Avoiding Ruinous Compromises by Richard Stallman

Great piece by Stallman. Everyday challenges and desires inflict non-free software on our lives. It can’t be avoided. Unfortunately, I’m not willing to give up what it takes to be completely free of non-free software, but I do try to make as few compromises as possible. What is even more challenging is the ubiquity of software in our lives beyond the PC, where free software has made minimal inroads. A primary example that is becoming much more relevant today is the mobile phone. Just about everybody has one and none of them can run on completely free software, most of them can’t even run any free software, at least on standard wireless carriers in the US. Google’s Android OS might be just what the free software doctor ordered, so we’ll see where that goes.

read more | digg story


FSF releases GPLv3

The Free Software Foundation (FSF) today released version 3 of the GNU General Public License (GNU GPL), the world’s most popular free software license.

Read full press release


Tivoization in GPLv3

A while ago I read a thread on the Linux Kernel mailing list where Linus Torvalds and others debated the “tivoization” clause (also considered the DRM clause) in the GPLv3 (I think in section 6). The clause basically states that consumer products containing object code whose source code is covered under the GPLv3 must include all necessary installation information such as authorization keys to be able to modify the GPLv3 source code and run it on the consumer product. The term “tivoization” comes from how Tivo uses GPL code but the hardware restricts modified versions of the software without an authorization key. This is considered DRM. This practice is not exactly limited by GPLv2 and its circumvention is prohibited by the DMCA.

What Linus and others were debating was that they do not agree with the FSF in that tivoization should be restricted by the GPL. They say that we (the free software community) have no right to restrict how hardware manufacturers design their hardware. In their view Tivo is not doing anything wrong. They are using GPLv2 code, but they provide the source for the original and/or modified versions of the GPLv2 code in accordance with GPLv2. Beyond what they do with our software, we cannot control them.

But the tivoization clause is necessary to ensure the freedom and survivability of Free Software. Think if Dell offered Linux (which they do now, but if they didn’t), but to keep people from breaking their systems they added a check in the bios for an authorization key in the linux kernel which was not released, thus preventing anyone from running a modified version of the kernel. Now imagine every computer maker that offered Linux did the same thing. How can we exercise our 4 freedoms if the hardware won’t let us? Yeah, one isolated instance of locking Free Software with DRM doesn’t have much effect on the ability for people in general to exercise our 4 freedoms, but if this tivoization persists what can we do?

The basic idea is that, for me as a developer of Free Software, whether I distribute my code or if I let someone else distribute my code, I want the end user of my software to be able to practically exercise the 4 freedoms of Free Software. If I let Tivo distribute my code and the hardware on which my code is designed to run makes the 4 freedoms pointless (in particular, freedom 1 which permits modifying software to fit the users’ needs), that is wrong. Even though Tivo is not directly violating the 4 freedoms, they are not allowing users to practically exercise all 4 freedoms.


GPLv3 Alienating Developers? No Way

I saw an article on /. where the author seemed to have no real clue about Free Software. I just wanted to rebut this uninformed argument.

The author essentially tries to say that developers want software with promiscuous licenses and they don’t care about defending themselves against tivoization and patent pacts. Because of this, he says that the current direction of the GPL/FSF is alienating developers by restricting them. Yes, it restricts them from doing things that restrict the Freedom of their software. But these restrictions have no ill-effect on developers who do not wish to restrict their users.

From his point of view, a developer chooses a license for his/her software, or wants the software with which they are working to have a particular license, for purely their own purposes so they can have access to as much source code as possible. That is simply not the point of the GPL. That is the point of open source. The primary purpose of the GPL is to ensure the 4 basic software freedoms for the users of the software under which it is covered.

The two new clauses in GPLv3 about tivoization and patent pacts are restrictions, but the restrictions they impose are to ensure the Freedom of the software. This is no different than not letting someone release GPL-covered software without its corresponding source code. That is a restriction, but it is not one that is debated as handcuffing Free Software developers as the author tries to portray the tivoization and patent pact clauses.

As far as what developers want, they should choose the GPL for their software because they want their software to be Free. They should not choose the GPL for their software if they only care about themselves and don’t care about Freedom. It seems like the author only cares about himself and doesn’t care about Freedom, so the GPL is not for him. If he thinks developers feel the same as he does, then they shouldn’t use the GPL either. But if you care about ensuring the Freedom of your software, then the GPL, version 3 or otherwise, is for you. It is not going to alienate or restrict you if your intentions are for Freedom.

I personally trust the GPL, version 3 or later, with protecting any and all software I write to be Free. By choosing the GPL for your software, particularly if you adopt the “version x or later” clause, you are placing the Freedom of your software in the hands of the FSF. You are most likely not fully aware of all the ideas and implications of the license, but you know that the ultimate goal of the FSF is to ensure Freedom of software, and that goal will be adequately represented in your software.


Java is FREE (as in Freedom)

Sun finally announced that they are releasing Java under the GPL! That’s right, the language you love to hate is FREE, and not just free as in beer, but free as in Freedom. The Free/Libre Open Source Software community has been pushing this for years now, about a year ago we started getting signs that it might happen, and a few weeks ago it finally did. This is a very good thing for a many reasons. Not only is Sun contributing a massive amount of code to the FLOSS community, which helps everyone, but it is a major testament to the power and value of FLOSS. It also means that GNU/Linux distributions can directly distribute Sun’s Java. And most importantly, developers from around the world will be able to contribute to, and improve, the Java environment.

To check out the new OpenJDK project, check out this.