My Own Linux

At some point in every Linux users life, they ask themselves the question: How would my own Linux distribution look like? Well, I’m about to find out.

Obviously I’m not going to create one entirely from scratch. Like most Linux distributions available today, I’m basing it on an already existing distribution. In my case, Arch Linux. The main reason for using Arch Linux instead of something like Debian is that Arch is actually quite simplistic. Debian (And Ubuntu) are complex behemoths that requires a lot of effort to modify to your liking and I simply don’t have a whole team of programmers at my disposal to do my evil bidding. So although I’m actually quite happy with using Debian and Ubuntu as a desktop, they’re not an alternative for this project.

Then the question is why. Why make my own Linux distribution? The main reason is simply just curiosity. I wonder what goes into making one and later maybe learn more about how to create a small community around it. Then there are small annoyances with Ubuntu, though they are not what you might think. For instance, I don’t dislike the Unity desktop environment. In fact, it’s one of the main reasons I like Ubuntu. I do dislike how the GNOME developers has mangled Empathy but there are other IM clients I can use.

No, my main annoyance with Ubuntu and most distributions is the installer. Although the installers usually supports some form of automation, they also requires a huge amount of effort to actually take advantage of this. Both in research into poorly documented features, and then depending on what exactly it is that you want to do, setting up an entire infrastructure for it. I want a solution that is so trivial to automate that it is the main mode of operation and in a later post, I’ll explain how I intend to solve this.

That might make it sound like it’s some big ambitious project; It’s not. The scope of it is to solve my own needs. But I want to share what I learn and the results I get so that other people may benefit. If the project grows, that’s good. But even if I remain the only person in the community, I’ll still have accomplished my goals.

Dropping Dropbox

Dropbox is an exceedingly useful tool. It basically lets you synchronize folders between many computers. It’s almost universally supported, and has client software of high quality for all significant platforms. So why would I want to get rid of it?

Simply put and relating to my earlier post, Dropbox isn’t Free Software or Open Source. That might seem like a purely philosophical objection, but it has a practical aspect to it; What if Dropbox one day decides to pack it in or at least remove their offering of free accounts? Sure, I could deal with that problem when it happens, but I’d rather look for alternatives now. I’m a geek after all, and that’s the kind of things we do. I don’t think the (Dropbox) world is about to end, this is mostly just an interesting project with some philosophical strawberries on top.

I’ll go through some of the alternatives here, discussing my thoughts on them.

Ubuntu One

The way that Ubuntu One works is almost identical to Dropbox. So much so that although its client is open source, the server-side is still proprietary. That makes it very unattractive to me, but I mention it here because it is a popular alternative among those favoring Open Source and if you just care about whether an Open Source client is available or not, then this could be an alternative for you.

A little note for anyone working at Canonical: The GUI really needs some work. If you want to be a serious competitor to Dropbox, this is one area you should put a bit of effort into.

ownCloud

ownCloud is a fully Free Software solution, both client and server-side. You can rent a server instance from several available providers or run your own. The latter option is obviously for more advanced users who knows what they are doing.

Unfortunately, the sync client (On all platforms) suffers from many annoying bugs and the servers web interface leaves some things to be desired. I really want to like this project given that it’s truly Free Software, but in its current state, I just can’t get myself to do so.

SparkleShare

SparkleShare, like ownCloud, lets you host your own server. Unlike ownCloud, it doesn’t need a lot of installation effort to run one because its “server” really is just a plain old ordinary git repository. This also means that the server is accessible with any number of other clients.

Where ownCloud went for complexity, SparkleShare went for simplicity. So much so, that I feel it perhaps gets a bit too simple in some areas. I would like to not have to put all the folders I want to synchronize inside a single main folder (Like the traditional Dropbox model) for instance. But it gets the job done.

Conclusion (So Far)

I’m going to give SparkleShare a try for some time to see how it works out. Out of all the alternatives I’ve discussed above, it’s the one that was both easiest to set up and seemingly most pleasant to work with from a first impression. Later, I’ll write another post about how this experiment went.

Live Free (Or At Least Try Hard) – Part 1

Being a strong believer in Free Software, I’ve wanted to write a few blog posts about my thoughts on the concept for some time now, but for some reason I’ve just not done it. Until today.

Free Software and Open Source

First, some of you may not be completely familiar with the term even though I am certain most people reading this post has at least heard the term. I’m not going to give a comprehensive explanation here, but a brief summary might be in order. Free Software is the philosophy that you should be able to use software the way you want on your computer. A common example of this is the ability to install software on multiple computers; Although it might be technically possible to do so, it’s not always be legal in the case of proprietary software. A lot of software licenses has restrictions on how many computers you may install the software, or worse, on how many times you can install the software at all.

How is Free Software different from Open Source? Well, it isn’t really, not in practical terms anyway. What separates the concepts are mostly philosophical differences; Open Source tries to protect developers while Free Software tries to protect users. There isn’t really a clear difference between developers and users, they are after all both human beings who uses software. “Developers” are a subset of “users” and any “user” may potentially become a “developer”.

I prefer Free Software to Open Source because I believe the focus should be on protecting the freedom of all users. An example of how this is different from protecting just developers could be found when the Free Software Foundation’s GPLv3 license was made. Among the many changes to it were some wording that essentially said that you could not distribute software licensed under its terms on machines where users were not able to change the software due to restrictions like DRM. Many Open Source proponents felt that this was an unreasonable restriction for many businesses, and did not really understand the reason it was put there or at least didn’t sympathize with it. But this case demonstrated the fundamental difference between Free Software and Open Source to me and was what would eventually lead me to understand why Free Software was important.

Before this point, I had been in the Open Source group. I felt that as a developer, I didn’t need any protection. I didn’t really mind if businesses took my code and made money from it. And to this day, I still don’t mind this in itself. The license of choice for me was the BSD license, which basically says “you can do whatever you want with this code as long as you don’t claim to have written it yourself”. But licenses like the BSD license does not do a very good job at protecting the end users of my code. It lets companies take my code, put an installation restriction like I used as an example earlier, and redistribute it. And while it’s perfectly within the right of any company to do so, I eventually decided that I do not want to enable them to do it with my code anymore. I don’t mind if they make money from something I have written, what I do mind is how the end users of my code are treated.

In the next blog post on this subject, I’m going to write about actually using Free Software on your own machine and the practical benefits you get from doing so.

An Empathetic Update

In my earlier blog post, I explained how the IM client Empathy was horribly broken. This isn’t entirely the case anymore.

I’m not able to find any bug reports, official blog posts, or anything else referring to the problem but after trying Ubuntu 12.10 again a few days ago, it seems some developer had noticed that Empathy no longer integrated with the Unity launcher and decided it needed fixing. So now, Empathy will yet again tell you when you have messages. Huzzah! :)

This still doesn’t solve the other problems, but those seems like deliberate design choices (By GNOME, not Canonical) so I’m not really sure what will happen to them.

The Rise and Demise of Empathy

Today, I finally got around to installing and giving Ubuntu 12.10 (Quantal) a whirl. The lucky machine that got the honor was an iMac at the office. I’ve previously had a few negative experiences trying to install Linux on iMacs, though it actually went quite smooth this time. All the problems I had could be attributed to PEBKAC and I eventually had Ubuntu up and running.

This isn’t going to be a general review, but I would like to mention that I really like the new web apps feature in 12.10. Basically, what it does is let you integrate certain web pages into your launcher and messaging menu as if they were native applications. It’s not a monumental improvement but it feels nice. But I’m not going to keep using Ubuntu 12.10 because of one major problem with it; The IM client, Empathy, is now utterly useless.

Empathy has always been fairly minimalistic in its design and I’m okay with that. It doesn’t really let you customize a lot of its behavior but what it does, or at least what it used to do, was usually the right thing. In Ubuntu 12.10, it seems to have gotten a big overhaul, which unfortunately despite some improvements has also caused a big regression in terms of usefulness. At least three things happened that made it more difficult to work with.

  • The size of the entries in the contact list can no longer be adjusted and are set to the largest possible size setting from the earlier versions. This means that instead of having your entire contact list visible at once, you now have to scroll for days upon days to reach the end of it. Is this just for the sake of making sure you see everyone’s pictures a bit more clearly? I really don’t see how this is an improvement.
  • When you click on a name from the list of incoming messages in the messaging menu, a new tab opens in the tab window but it’s not shown. You have to go to the window, then click it yourself. I’m not sure how increasing the number of steps you have to go through from no obvious gains improves anything either.
  • And the last and by far biggest problem for me; When you receive an incoming IM, the launcher icon no longer shows a counter indicating how many people have sent you messages. This is annoying for several reasons, most importantly because if you receive a message while not looking at the screen for any reason, you will effectively not receive any sign that you’ve received any messages at all.

Quantal would’ve been a nice experience. It had some interesting new features such as web apps and had better integration between system components. But failure to pay attention to a single application makes everything else moot. There aren’t other IM clients that integrates nicely with Unity at the moment so there effectively aren’t any alternatives.

Which is why paying attention to these little details is so important.

Holy Blinking Indicators, Batman

It seems I have gotten favourable mention on OMG! Ubuntu. :-)

Some time ago, I made some small changes to the message indicator in Ubuntu. I was just tired of not noticing when someone was trying to talk to me on IM. At the time I was using Pidgin which isn’t very well-integrated with Unity; It notified the message indicator but the eyes don’t naturally wander over to the top right of the screen making incoming messages hard to see. Outside our immediate focus, our eyes mostly reacts to changes. We simply don’t see that something is a different colour unless the change happened just at the right time or we focus on that specific place on the screen. I wrote a simple change to the message indicator to fix this; I made it blink. It was a simple solution that solved my problem. I stuck it in a PPA to make installation easy, then forgot about it.

It’s always fun to see your work being appreciated.

Desktop Environment vs Window Manager

I had a little discussion today with someone about how different desktop environments adopts popular visual elements. An example of this that I have mentioned before is how some popular Linux desktop environments has adopted the Windows 95 model for their design. During the discussion, I gave the example of Enlightenment as a desktop environment which had not adopted this model, at least not to as high of a degree. Then, all hell broke loose.

What was the big controversy? Another person joined the discussion pointing out that Enlightenment was not a desktop environment but a window manager. And this was a very big and important difference that made it impossible to do any sort of comparison between GNOME and Enlightenment because they simply weren’t the same thing.

I think most people know that a window manager is not the same thing as a desktop environment. But what is a desktop environment? Lets start with talking about what a window manager is. A window manager is a program that, well, manages windows under the X windowing system. The important part here is that it’s a specific program. A desktop environment is a collection of programs and other components, among them a window manager, that makes up the total that the user experiences on his desktop.

Enlightenment consists of a window manager and many components to build applications and many applications has been written for it. But some people feel that because these applications are not officially a part of the main Enlightenment project, describing Enlightenment as a desktop environment isn’t something you can do. Is it really that unreasonable to refer to all that is built on the Enlightenment framework as well as the window manager, the collection of things that makes up the desktops of people who use Enlightenment, when you talk about Enlightenment as a desktop environment?

Personally, I don’t think it is. I think some people just want to seem intelligent by nitpicking without really contributing anything useful to the discussion. Don’t get me wrong though, using the right terminology is important when you communicate with other people, especially if there are disagreements. But ask yourself if what you’re doing is really improving the quality of the discussion, because that’s what’s important.

DRM

What I’m about to say here has been said many times before. In fact, among the people likely to read my blog it’s likely that it is an almost universal opinion. But there will always be someone somewhere learning about it for the first time. And besides, it really can’t be said enough times: DRM is bad.

DRM stands for Digital Rights Management. It’s a term describing technologies made for the sole purpose of preventing you from doing certain things with what you’ve purchased. For instance, limiting which players you can play your music on, how many times you can watch a movie, or how many e-book readers you can put your e-books on.

But the reason I consider DRM bad isn’t on moral grounds. After all, if someone has copyright on something and we accept copyright’s existence, then it’s not completely unreasonable for the copyright holder to restrict how we can use their creation.

The real reason is the practical consequence. DRM due to its fundamental nature has a tendency to eventually stop working. Some DRM requires you to verify online through a server that you are in fact entitled to view the content protected by the DRM, so what happens when that server goes down and doesn’t come back up? Maybe the company just lost interest in maintaining it? They don’t have any obligations to do so just because you spent money on something that requires it there.

Similar things can happen even if the DRM does not need online validation. Say a certain Japanese company decides to invent their own format with their own DRM as a market experiment. They sell some content for a few years but decides that in the end they cannot make a good profit on it and stops producing hardware to play back the content. Unfortunately, because of the DRM no other company can create players for this format without either getting a very expensive license or violating the law. So what do you do when your old player breaks? You just lost access to your whole collection.

Interested in DRM-free e-books? I’ve compiled a small list of my favorite publishers. If not, enjoy this xkcd strip instead:

 

In Defense of Unity

Unity is the default user interface in Ubuntu, a position that has given it extensive exposure to critics. Some of the criticism it has received has been justifiable, but many of the things that has been said about it also strike me as quite odd.

Unity has had and still has its share of issues; There are in fact several perfectly valid reasons you might not want to use it. Just like all big desktop environments, it loves memory. I’d go as far as saying you shouldn’t use it with less than 1 GB of RAM, though you won’t need more than that for a good experience either. At the moment, it needs hardware 3D acceleration to even be able to run. If you lack such hardware, that’s a good reason to look elsewhere.

In the past, Compiz, the underlying technology Unity builds on has been notoriously buggy and was prone to both crash and leak memory, neither being desirable features of the most important program running on your desktop. Since Ubuntu 12.04, most of these problems seems to have disappeared and Compiz now provides the stable experience most people expect from their desktop.

From a more cosmetic perspective, Unity can to some (Including me) look hideously ugly. The colors almost gives me the same feelings as the original Windows XP look. Why would anyone think it looks good?

So why would these criticisms strike me as odd? They wouldn’t, but these aren’t the things people usually criticize about Unity. Unity is usually criticized for dumbing down the desktop, for not being possible to customize, for copying OSX, and several other things.

First of all, Unity has simplified several aspects of the desktop, but this has not come at the expense of more experienced users. In fact, I’d argue Unity probably is one of the most keyboard friendly desktop environments available with its extensive focus on keyboard shortcuts and the dash. Launching even seldom used applications can be done in little more than an instant using only the keyboard.

There is some truth to the claim that Unity has been hard to customize; Unity is a relatively new interface and customization was not a top priority during early development. However, tools such as MyUnity has since made it possible to change many aspects of the system. Since Unity builds on the Compiz, you can also change pretty much all behavior ranging from how windows placement works to which application switcher it uses. In other words, not only can Unity be customized, it’s actually one of the environments with the most possibilities for customization.

There’s no doubt that Unity has adopted some elements from OSX and for that matter other environments. But people who criticize Unity for this seems to always leave out an explanation for why this is a bad thing. In fact, I get the distinct impression that the main reason the most so called “hardcore” Linux users are criticizing Unity is because it’s an environment that breaks with the classic GNOME look, which is actually the Windows 95 look. Don’t get me wrong, there’s absolutely nothing wrong with a desktop environment which is based on the ideas of Windows 95. But people shouldn’t criticize Unity for not being “linuxy” enough, simply for not looking enough like Windows 95. That’s just utterly absurd.

Before I finish this post, I’d like to add a few notes about the memory consumption of Unity. This is what many people refer to when they say they feel that Unity is bloated. And yes, Unity does like memory, but what a lot of people seem to not realize is that so does a lot of other desktop environments. Unity does not use significantly more or less memory than other popular desktop environments such as GNOME (2 and 3), KDE, or XFCE. Some people do feel all these environments use too much memory and it’s okay to have that opinion. But Unity sometimes gets unfairly singled out as being particularly bad, which simply isn’t true.

This post was mainly written so I could refer to it when people ask me about these things, though hopefully you found it interesting even if you discovered it by accident. It’s also important to understand that this post isn’t trying to make you want to use Unity. You should use whatever desktop environment you feel comfortable using.

But I do hope that me writing this means fewer people will try to discourage other people from trying Unity based on faulty assumptions.

The Wrong Tool for the Job

Have you ever heard the phrase “the right tool for the job”? Perhaps you’ve even used it yourself? I’ve wanted to write a blog post about this argument that seems to appear in debates among software designers and system administrators every so often and explain to the world why it’s as Penn & Teller would say: Bullshit!

When people use this phrase as an argument, it’s almost always when someone wants to justify going with some esoteric choice instead of a well understood and commonly used technology. Commonly used technologies are commonly used for a reason; Everyone knows how they work, a new person can join the project and not need an introduction on how to use it. The pitfalls of the technology is usually well understood, as are the ways to work around the problems. Even if there are a few features that seems to suit the project in question, there are other and often more important aspects like those mentioned above that must be considered.

Let me make something clear: Obviously using the right tool for the job is important. But when people justify their choice of tool using this as argument, your mental warning bells should be ringing. That you think the tool is right for the job is probably a given if you’ve chosen it, and if someone points out problems with the tool, you should address those problems. If you feel the need to instead try to explain to the person the importance of choosing the right tool for the job, chances are you probably haven’t chosen the right tool and are instead doing it to justify your choice of said tool despite it not being the right tool for the job.

At this point, you are probably wondering why I’ve not posted any examples. Don’t worry, they’ll be coming – In a later blog post. :)