Sunday, March 20, 2011

I'm probably not an iPerson

After using a Mac for about two weeks (first a large MacBook Pro and then a tiny MacBook Air), I feel that OS X is not really a system for me. As this is my ranting blog, let me elaborate...

No package manager

Coming from Gentoo Linux, which has the amazing Portage system, installing software on OS X feels like being back in Windows. Finding and downloading stuff manyally from the web, clicking yes-yes-yes to all the stupid licenses, looking at the blue progress bar that never really shows the accurate progress, etc. Sometimes it's enough to just drag the application drive (a drive?!) to Applications folder. At other times I need to double-click and launch the installer. Finally there's this Mac Store thing that doesn't seem to contain anything useful.

On the plus side OS X comes with a lot of useful stuff pre-installed, so you don't need to download a simple photo-editor, a PDF reader, or - god forbid - an unzip tool.

All these windows drive me nuts

I really don't understand how people can handle all this manual window-management that OS X forces you to do. The windows just seem to pile up on top of each other, making the workspace a cluttered mess. Closing the window sometimes only hides it, at other times it closes the program - I'm never really sure what will happen. The green (+) button sometimes maximizes the window, sometimes almost maximizes or makes it a bit larger, at other times it doesn't do anything at all. So your only real hope is to manually resize the window - and good luck with that - the only resize handle sits at the bottom right corner.

I really don't want to spend my day arranging windows - that's why I use the XMonad tiling window manager.

The only thing that saved me from mental illness was my discovery of Spaces (alias multiple workspaces for Mac). The animations were a bit of an annoyance, but at least I was able to arrange all the windows in some meaningful way.

It's the opposite of open

I'm a believer in Free Software, so I had my strong doubts about this Steve-Jobs-governed-system from the beginning. But I'm not a zealot, so I gave it a good long try.

It all went amazingly well at the beginning - I managed to install a lot of free software and was really pleased to find that in addition to many familiar command-line tools it also had Ruby pre-installed. But the big hit came when I needed a C compiler. I discovered that the recommended way of doing it was by installing Xcode. But to get Xcode you need to sign up for Mac Developer Program, that costs you at least $99/Year. WTF! Isn't that a bit much for a free GCC compiler?

Alright... finally I found out that I can register as an Apple Developer for free and get access to an old version of Xcode (probably with an old gcc too). But the first impression was that I really needed to pay for it... Actually, when writing this blog post I tried to find the free registration page for the second time, and it took me quite a bit of trouble to locate the tiny link.

Apparently Apple doesn't like developers, so why should I like Apple?

PS. Having used a Mac only so little time I probably got many things wrong, so correct me if you feel like it.

Wednesday, August 12, 2009

Do you want undefined?

It was nice and calm day, when suddenly MSN Explorer opened up its window. I've never seen anyone using this MSN-Explorer-thingie, and I haven't even heard of what's the point of that program, so I thought I'll at least give it a try.

But before I could use it I had to configure it, which brings us to this dialogue:

Well... I figured that I already have a completely functional internet connection, so I chose the last option and clicked "Continue":

Emm... of course I have undefined undefined!

To complete the story I have to mention, that I wasn't able to complete the configuration of MSN Explorer, I got stuck to that last screen that didn't let me pass no matter which option I chose. The purpose of MSN Explorer still remains mystery to me.

Friday, March 6, 2009

Where Have All the Blog Posts Gone?

On previous month I wrote only four articles to this blog. Quite a bit less than the eleven I wrote in January. So, what’s happening? Am I becoming satisfied with Windows? Has Microsoft eaten my soul?

I really started to wonder that I might be transforming into one of those happy Windows users... a scary perspective, you know.

A Day in Windows

After thinking about it for a while, I came to the conclusion that I have unconsciously sneaked away from actually using Windows. You see... most of my computing time is spent using only three fine applications:

I use the mighty Opera browser to surf the web and test the site I’m developing.

I use Emacs, the mightiest of editors, to write the code I need.

And I use the faithful Putty SSH client to log in to our server, which does not run Windows, but is driven by the mighty Free BSD.

Therefore most of the time I am actually using a holy free GNU operating system, not the unholy Windows system, that this blog should be about.

The Light at the End of a Tunnel

Finally, I feel that my days of using Windows are coming to an end. My broken leg has healed considerably and I’m thinking about going back to Tartu, where my Linux-box already waits for me.

So yes, there really is a light at the end of the Windows tunnel – it’s the thought that a day will come, when you leave it all behind and start using a real operating system again.

But there is also a sadness in leaving Windows. It’s the same sadness you feel when you arrive home from a long and tough journey... it’s not like you would want to go back, but you are still kind of sad that it all has come to an end.

Where Have All the Blog Posts Gone?
Long time passing
Where Have All the Blog Posts Gone?
Long time ago
Where Have All the Blog Posts Gone?
Switched to Linux from Windows 3.1
When will they ever learn?
When will they ever learn?

Image credit goes to Robert Marschelewski.

Thursday, March 5, 2009

Stuck in Skype

I mostly write about Microsoft here, but Microsoft isn’t the only proprietary software vendor, and neither is it the only one that tries to lock you into their products. Today I would like to speak about another company – right here in Estonia.

Skype at Work

At work I use Skype for all my instant messaging needs. It’s a company policy – we all do. And I must say, that it does a pretty good job at it. I really like some of its features:

  • You never have to worry about closing the conversation window – when you open it again, your previous conversation will still be there and you can continue from where you left off.

  • When you log in from another computer, your settings will be there. For example when I change my display picture at home, then I don’t have to change it again when I log in at work.

  • And when you make a spelling error, you can just press up arrow and correct it.

These features aren’t nothing sort of astonishing, but you know, often it’s the small things that matter. And all together they make Skype a really nice piece of software.

But it’s not good enough...

The World of IM Protocols

If the web browsers were like instant messaging clients, then instead of all browsers being able to display HTML pages, each browser manufacturer would only support its own proprietary format. IE would only display Microsoft Word documents, Safary would only support Quicktime, Adobe would have it’s own Flash-browser, and only Firefox plus a few other niche browsers would support open HTML standard.

It looks crazy and stupid, but that’s totally how the world of instant messaging looks today.

MSN Messenger uses its own proprietary protocol, AOL Instant Messenger uses another and Skype uses yet another. There also exists a free protocol called Jabber, but it’s mostly used by free software apps – it’s not supported by MSN, AOL or Skype. And therefore the users of MSN can only chat with MSN users and AOL users with AOL users and Skype users with Skype users and so on...

Clearly, this kind of situation can’t last forever. One protocol must ultimately win the competition and the others shall die. So, lets see our main contestants (rough numbers based on Wikipedia):

Tencent QQ 320 mln active (in China)
MSN 300 mln active
Yahoo 250 mln active
Skype 300 mln total
AOL 100 mln total
Jabber 90 mln total
ICQ 15 mln active

Jabber looks like a total loser in this comparison, but that’s not the full picture because Jabber supports transporters. Transporters are the middlemen who allow Jabber users to communicate with the users of other protocol. For example when Jabber user wants to talk with MSN user, then all he needs is to register his MSN account with some available Jabber-to-MSN transporter and voilĂ  – he appears at the buddy list of his friend just like any other MSN user.

This way a Jabber user can talk to MSN, AOL, ICQ, Yahoo and some more. So, when you use Jabber your network of friends is not limited to just a single protocol – the users of Jabber can talk to more people than the users of any proprietary protocol out there. Jabber is the clear winner and the only wise move any proprietary IM vendor can do is to jump on the Jabber bandwagon. AOL has already done that and Google did it with its Talk from the beginning. Others are destined to follow or die out.

What about Skype

When I spoke about Jabber transporters, I didn’t mention the one for Skype – that’s because there isn’t one. There have been some projects for making one, but so far these haven’t been successful.

This is because the developers of Skype have worked hard to make reverse engineering of Skype as hard as possible. In fact it is so hard, that there has been extensive scientific research on various aspects of Skype.

The makers of Skype would like you to believe that by using Skype you can communicate with the whole world, while in fact it’s quite the opposite – they want to lock you down to their small proprietary world, so that you can only talk to other Skype users and no-one else.

And I’m not the only one complaining here. The Free Software Foundation also dislikes Skype and finding a replacement for it is one of its top priorities.

Escaping Skype

So, how could I escape Skype? As I already said, it’s a company policy, but it might be even more than that, because the main investors of our little software-house are also the founders of Skype. I don’t think I’m able to convince other developers not to use Skype.

Another option would be to use free IM client that is able to speak with Skype, but as I said, currently there aren’t any. Not even a tiny little Jabber transporter.

The only remaining option is to develop a Jabber-Skype transporter by myself. But I really doubt I’m up for this task. Many have failed already.

So far Skype sucks even more than Windows, because I can easily escape Windows, but I still have to find a way to escape Skype.

Wednesday, February 25, 2009

Running multiple versions of Internet Explorer

IE sucks – that’s an indisputable fact. And all the different versions of IE suck in different ways. Therefore you need to test your web app not in only one bad IE, but in multiple ones. And to make the life of web developers even harder, Microsoft doesn’t provide a way to install multiple versions of IE on the same Windows box.

Of course, Microsoft would like you to think, that to run IE is central piece of Windows kernel and the only way to have multiple versions of it is to have multiple Windows installations... of course with all the required licenses. This is good for Microsoft, but similarly to all things that are good for Microsoft, it’s not good for you.

Luckily at least IE6 and below are available as stand-alone versions. Of course not from Microsoft, but from Evolt.org browser archive. And to make the process of installation as easy as possible, there exists a special installer from Tredosoft that allows you to install IE3, IE4.01, IE5, IE5.5 and IE6 with just a few clicks. It’s not maintained any more, but it works just fine.

Not even a restart required...

Sunday, February 8, 2009

FUD Over JavaScript and GPL

Far Side comics about CAT FUD Recently I published a tiny JavaScript library jintervals for doing formatting of time intervals. At first I published it under GPL license, thinking this is the rightest thing to do. After all, the Free Software Foundation itself suggests that you do.

But then some said, that using GPL for my library is far too restrictive, and by doing so I would ban all the potential commercial uses of my library.

This can’t be true, I thought. But then I did some research and decided to change my license to LGPL. Not because I was wrong, but because too many other people were wrong.

The Misinterpretation of GPL

GPL v3 logo Everybody knows that GPL is viral. But what most people doesn’t know, is how infective it exactly is.

It's the same with real world viruses. Most people are afraid of coming to contact with person who has HIV, although you won’t get infected by just touching. But the fear, uncertainty and doubt are all there, saying, that you better stay away.

Similarly many people are afraid of using GPL-ed components when building their website. They think that then they have to release all the code of their website also under GPL.

They are totally wrong, because all free software licenses allow you to use and modify the program how ever you may please. These are the freedoms 0 and 1:

The freedom to run the program, for any purpose (freedom 0).

The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.

GPL will only concern you, when you want to distribute your software. And running a website powered by GPL-licensed software is not distributing. There is even a FAQ about this on GNU homepage:

A company is running a modified version of a GPL'ed program on a web site. Does the GPL say they must release their modified sources?

The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources.

And contrary to what most people think, GPL is not the most restrictive free software license. If you want a really restrictive license, then you should choose GNU Affero GPL – running a website powered by AGPL-ed software, does require that you publish all your sources. The same GNU FAQ goes on to suggest using AGPL:

It is essential for people to have the freedom to make modifications and use them privately, without ever publishing those modifications. However, putting the program on a server machine for the public to talk to is hardly “private” use, so it would be legitimate to require release of the source code in that special case. Developers who wish to address this might want to use the GNU Affero GPL for programs designed for network server use.

Most people haven’t even heard of AGPL, they only know about GPL. And because GPL is the only viral license they know about, they think, that it must be the most infectious thing on the planet.

Ext JS GPL Controversy

Ext JS logo Some time ago the licensing of Ext JS framework was changed to GPL and a whole hell broke loose. Hundreds of users wrote to a fairly long Ext forum thread, seeking answers to their questions about the new licensing model.

Ext JS licensing has been a mess. Previously Ext JS was seemingly licensed under LGPL, but with several extra restrictions:

Ext is also licensed under the terms of the Open Source LGPL 3.0 license. You may use our open source license if you:

  • Want to use Ext in an open source project that precludes using non-open source software

  • Plan to use Ext in a personal, educational or non-profit manner

  • Are using Ext in a commercial application that is not a software development library or toolkit, you will meet LGPL requirements and you do not wish to support the project

Many users were unhappy about it, claiming either, that Ext JS is not free software at all, or that because of some clauses in LGPL, users are allowed to freely remove the extra clauses added to LGPL.

Anyway, most people were quite happy, because they knew that LGPL is a light version of GPL and therefore harmless.

Then came the license change, people saw the terrible viral GPL and went completely nuts. They were wondering, do they have to publish all the source code of the web site they were using GPL-ed Ext JS on, or do they have to buy a commercial license for that?

Given that most people aren’t experts in GPL, this was completely normal. But it wasn’t normal that the authors of Ext JS didn't gave any clear answer to these questions. They pointed people to the Licensing FAQ, which for some reason doesn't provide answer to the real most frequently asked question: Can I use the GPL licensed Ext JS on my website without publishing all the source code of my site?

This kind of attitude received huge amounts of criticism from the community. Authors of Ext JS were blamed to be stupid and greedy.

The license change from false-LGPL to true GPL was certainly step in the right direction, but it was presented to the community with a great dose of FUD. Not a nice thing to spread Jack, not a nice thing to spread...

Is GPL Worth the Trouble?

Ext JS isn’t the only JavaScript library licensed under GPL, there are more, and none of those seems to suffer under similar issues that Ext JS is. The reason? Honesty. Just look at how GPL-licensed jQZoom Evolution describes itself (emphasis added):

jQZoom Evolution is a new release of jQZoom with full featured. It is a javascript image magnifier built at the top of the popular jQuery javascript framework. jQzoom Evolution is a great and a really easy to use script to magnify what you want. It is easy to customize and it works on all modern browsers. This software is licensed under GPL. You can have your jQZoom in your website, eCommerce sites or whatever you want.

However most JavaScript libraries prefer more permissive LGPL, MIT and BSD licenses. And for a very good reason – no damn confusion whatsoever.

And this is the reason, why my jintervals library is also licensed under LGPL – to avoid needless confusion.

Thursday, February 5, 2009

Finding Synergy Between Emacs and SFTP

I needed a solution to edit files over SFTP connection. In Linux I could have just used SSHFS on top of FUSE, but I was stuck in Windows.

SftpDrive

I was suggested to use proprietary software called SftpDrive. And not just proprietary, but a shareware with trial period of six weeks. I agreed, thinking, that I won't be needing it for any longer.

But the program didn't fulfill my expectations. It failed to cooperate with my text editor, making Emacs complain all the time that the file I'm editing has been changed on disk. The reason seemed to be, that changes to the file attributes (particularly the modification time) aren't immediately available to emacs after saving the file (as explained in this Q&A site).

Dokan

From the same site I found a suggestion to use Dokan SSHFS instead. It appears that Dokan is a library similar to FUSE in linux. And Dokan SSHFS similarly sits on top of that.

At first I got a bit puzzled over the Licensing of Dokan, because although Dokan project page in Google Code says it's licensed under LGPL, the installer displayed me the following message:

WARNING: This computer program is protected by copyright law and international treaties. Unauthorized duplication or distribution of this program, or any portion of it, may result in severe civil or criminal penalties, and will be prosecuted to the maximum extent possible under the law.

Later I found out that this installer message had been automatically generated by Microsoft Visual Studio. How nice of Microsoft to have a happy little default licensing scheme.

Dokan SSHFS isn't as easy to install as SftpDrive – I had to download and install three different software packages to make it work. But it is free software. And it seems to do everything SftpDrive does. Plus achieving synergy with my Emacs.

Windows likes proprietary

I'm starting to wonder, why the proprietary alternative had been suggested to me at the first place?

But then... How could I have expected a free software suggestion from a Windows user?