Sunday, December 10, 2006

Cocoa, GNUStep, Free Desktops

Word..

So I think I have gone on about how I think it would be cool for people to actually use GNUStep to design apps like GIMP, FireFox, Gaim, etc.. For those who don't know, GNUStep is an open-source implementation of the CoreFoundation and other apis which started out as NeXTStep / OpenStep and became Cocoa in MacOSX. Cocoa, GNUStep, and OpenStep / NeXTStep all use Objective-C, a thin OO dialect of C which, as far as I can tell, is more like Python, Java, or C# than C++.

Although a lot of the graphics-y stuff in OSX is Adobe-derived and private, they actually support an open CoreFoundation implementation, and GNUStep supports enough of the APIs, so they say, that you can target an application at GNUStep and have a Mac feeling app on the Mac, while you end up with options for giving your app a native look-and-feel on other platforms as well.

Basically, Cocoa is an enhanced OpenStep implementation which draws windows using Quartz, which I believe is a programmatic derivative of PostScript, Display PS having been written at NeXT, and now available in X11 and possibly Vista or some future Windows.

So, although a bunch of code running on my Mac is not open, the entire system is built in a modular way for which a compatible alternative could be built, and to some extents has.

Anyway, after beating the dead horse of translucency, I found something today which I'm pretty sure the "eye-candy" crowd will regard as flamebait, heh. It's called afloat, and it inserts an option into the "Window" menu of every Cocoa app to control its' opacity, often inversely and incorrectly referred to as "Transparency".

It's also got a nifty feature where I can hold ctrl+apple and scroll the mouse to change the opacity of a Window.

I find this useful for the same reason as a transparent terminal - so that I can read another window while typing, without shrinking my window, and so that I have more periphery I have set my browser as "translucid", which, to me is not very intrusive - I can sort of read the text in the background if I try, but I don't have trouble reading the foreground. If something blinks, or closes abruptly, however, I'll see, and I can follow a line of text beyond the overlap of two windows without a focus change.

I think it's neat, but what, IMO, is even cooler and being largely ignored is the potential for providing universal application plugins that are cross-platform by leveraging this technology Did anyone ever use the plug-in for Evolution, the GNOME Mail client, which made the editing area comply with vim commands? I thought it was awesome, but it only worked with Evolution.

I want a vim-compatible GUI text area that is compatible with GMail, Thunderbird/Evolution, Abiword, OpenOffice, etc.. Same goes for afloat, if I had blackbox, gnome-panel, and afloat, I might survive with ubuntu on my Macbook Pro.

I like, for instance, that Adium, a libgaim-based im client, has options for a translucent buddy list, but with afloat it's pointless to put work into that in a single app.

So, FWIW, when I'm saying that Qt, Gtk+, EWT or what-have-you stinks, this is what I mean. I'm not saying that your favorite toolkit is not a pretty decent way of writing traditional applications, possibly on par with a few years back of commercial technology. What I'm saying is that by adopting something like GNUStep, which can be leveraged from any programming language, Mono, Java, etc.. it should be possible to stop thinking about the platform. Much as, to some people, Windows is a fine place to use FireFox, I'm fine with it being that way for all sorts of apps.

This type of extension framework is an easy way for F/OSS to bleed into commercial apps. When you have a $500 commercial app and most of your time is spent using F/OSS add-ons, MS Excel or whatever starts becoming about as commodity as MS SQL or IIS.

No comments: