Showing posts with label I don't want to get into a GNOME vs. KDE flame. Show all posts
Showing posts with label I don't want to get into a GNOME vs. KDE flame. Show all posts

Thursday, 21 January 2010

mv/((1-(v/c)^2)^(1/2)) or, in non-relativistic terms, momentum

I know this will probably start a flame war if widely read (which it probably won't be, since this is just a braindump page) but I want to say it anyway: I think the Gnome desktop is in a bit of a pickle, and the problem I think it is facing is that which many people have to deal with when programming, and that is stopping too early.

I'll talk you through one of my first programs as an example; it was for an assignment in Object Oriented Design in Java, which was to make a very simple pinball game. There was some code given as a starting point, but it was terrible (it was essentially a C program shoehorned into compiling as Java, thus it didn't follow an Object Oriented Design and, whilst syntactically correct, wasn't really written in Java at all), though most (probably all) used it as a starting point. Being very new to programming, especially in such a verbose and overly-strict language as Java, I couldn't really follow the given code: I could see the API and get it to do the things I told it, but I couldn't understand all of what it was doing, and amongst those bits which I did understand I saw some obvious hacks. As a Physicist and perfectionist-who-never-ends-up-finishing-anything I didn't want to use incorrect code, and especially didn't want to rely on someone else's proof without understanding it (Curry-Howard and all that). Thus I did the first thing that anyone who's ever done any Maths would do and tried to work it out myself and see if my solution matched. The result was a program of which I was quite proud: rather than being a hack to shift graphics around the screen (as the provided code had been), I'd started from what I knew and had made a basic Physics simulation with graphical output (originally based on AWT then switched to Swing). The code was spread out amongst many classes, there were no hacks in the object system (although there were a few in the main method to set things up, but that was just for testing), it was very intuitive, was the largest programming project I'd tackled thus far (although now I'd consider it to be the size of a moderate experiment) and I had it running pretty early into the assignment. It now needed some recognisable objects from a pinball table (like flippers) and more game-like control. However, rather than writing these I just played around inside it. Constantly. It was fun to throw things around, generate hundreds of objects and watch them bounce around off each other but most of all it was fun to know that I'd made it. In the end it got marked as 70%, since all my playing stopped me from actually making any kind of pinball game (I talked through the code, but when running it just presented a bunch of balls bouncing off "pins" which were just fixed balls).

Now, what's this got to do with Gnome? Well, Gnome works really well. It's unobtrusive, stable, intuitive and does "what people want". Reading through Planet Gnome gives some design bugs (the keyring dialogue asking for a password without indicating what is after the keyring or why, allowing a trojan to ask for the keyring without the user having any indication that they're giving access to malware and not NetworkManager or Evolution or Empathy or whatever), a few posts on Zeitgeist, translations, some compatibility improvements and a call for more contributions to the 2.29 features list. Other than that it's musings about transport, architecture, low-level distro tweaking (nothing to do with Gnome, things like boot performance). It seems that there are three levels of Gnome developer (and I mean developer here as anybody involved in improving Gnome):

1) The it does "what I want" developers, who may maintain things but make very gradual changes (like layout changes, adding translations, etc.). To these, Gnome is an excellent platform which chugs away unobtrusively for them in the background and allows them to get on with life; their itches are the "papercut" annoyances that are small, but happen a lot (something like an info dialogue which doesn't have a "don't show this again" option).
2) The inspired developers who's itches are to push the platform in new directions. They work hard to do this, but as one-person-armies they can only do well on one thing at a time (for example UPnP support).
3) The ignored developers who's itches to make sweeping changes never really get scratched due to the inertia of userbase familiarity and developer apathy due to the adequate nature of the platform as-is. These include the Gnome mobile efforts, the online integration attempts and so on. For those wanting an example of inertia, take Nautilus's spatial mode. This is rejected in favour of the old one-window browser mode by many users, simply because it was there first.

Now, I am not trying to crap on the project, far from it I'm offering my observations of the development slowdown over the past 6 or 7 years I've been using Gnome and following its developers. I'm not in any way trying to undermine the efforts of those three groups I've mentioned, I am trying to point out the obstacles that each face and how they could be overcome.

Many of those developers in groups 2 and 3 could benefit from Gnome 3 stirring things up a bit to break the stagnation. The reason I put quotes around does "what I/people want" is because, in my opinion, there's no such thing. Recall Henry Ford's famous remark that if he'd given people what they wanted then he would've given them a faster horse. Nobody knows that they want something unless they try it for a while and integrate it into how they go about things. I'm frequently met with the does "what I want" argument with regards to Windows. If the current situation in Gnome is unfortunate then that lumbering beast known as Windows XP is the armageddon! Admittedly, Windows Vista is awful: those few of its features which are any good don't make up for the cost in performance, and many of the features deemed "good" by others aren't features they're just attempts at shifting responsibility for brokenness onto users (those damned popups!). However, since there was an explosion in computer ownership during the lifetime of XP (2001-2007), for many people XP is a fundamental fact about what a computer is, in the same way that a toaster is not a toaster without a spinny dial for toasting time. Of course there are those who lived through Windows 95, 98, ME (lol), 2000 and XP, and who saw Vista as the next rung on the steady upgrade ladder it was intended to be, but viewed it as not worth the wait compared to the more timely releases of the past, and no doubt the growing use of computers made its drawbacks all the more annoying.

The appearance of KDE 4 stirred things up in KDE land, but there was such a wholesale developer switch due to the underlying library improvements that the users have been dragged kicking and screaming into a more flexible system, which is a must for supporting both the type 1 people and the types 2 and 3. Plus any annoyance generated has either been blogs-full-of-ads whoring or else has been reacted to by the KDE developers and sorted, or at least steps have been taken so that they become sorted some time in the future ;)

The alternative to the kicking and screaming approach is to fork. Forking is usually bad news, but unfortunately there seem to be quite a few projects aiming to address deficiencies in Gnome, without actually fixing what they perceive to be wrong with Gnome. For example XFCE tries to use fewer resources, whilst LXDE tries to use even fewer resources. There are loads of custom file managers, panels, window managers, widget systems etc. which each do an OK job, but don't play nicely with each other and so don't quite combine to become teh awesomes as they rightfully should.

Doing things the "right" way, or leaving many opportunities open for others to reject what you've made in favour of something else, is a much harder thing to accomplish than just shipping a vertical, one-size-doesn't-fit-any stack. Lots of standards are supported in Gnome, but a lot of work is happening outside the project and being shoehorned into the defaults later because it happens to use Glib.

I hope the introspection initiative gets the ball rolling for Gnome again, since it's lowering the barrier to entry and allowing customisation through abstractions and introspection which can guide enthusiastic minds into tackling the itches they face without putting them off by archaic languages like C.

Wednesday, 19 September 2007

Plasma Testing In Ubuntu

KDE4 certainly is looking incredibly cool. The most exciting part for me is Plasma (the new desktop/panel system) which, although may have problems with theming consistency, is massively extensible and pretty quick too.

One problem for those wanting to try out the still-in-development KDE4 (the release date of which has been set back to December) is that the majority of Plasma's 'plasmoids' (widgets), since they are quite small and easy to change, making (relatively) last-minute changes have more advantages than disadvantages, live in the 'playground' area of the KDE Subversion tree. The playground has such a name since developers are free to play about with the contents without fear of breaking anything for users, the reason being that normal users shouldn't be anywhere near playground programs.

So, if the majority of Plasma's widgets (everything except simple tests like the clock) are in the don't-go-near-there playground, how can they be played about with by non-developers?

This is something I have been pondering for a while. The most obvious way is to get them from the playground, but to do that involves making an entire KDE build environment, checking out the SVN, compiling certain subtrees with certain options, etc. If you don't know what any of that means then trust me, it is even more complicated than it sounds. I tried doing this a couple of times over the past few months but failed.

A second way would be to use a live CD of KDE4, but this obviously isn't ideal as it is a separate system to your regular one, either rebooting or using a segregated and relatively slow virtual machine would be needed.

Since Ubuntu Gutsy, the prerelease version of Ubuntu I am running which should eventually become Ubuntu 7.10 (2007-October), has some prebuilt KDE4 packages, the best solution would be to have these packages include the multitude of Plasma widgets for testing. Well, after a bit of Googling, I found a package plasma-playground in Ubuntu which contains these plasmoids. The plasma-playground package, however, is a source package. This means you can't just install it directly, so after some reading up on the manual pages of some Debian packaging tools I managed to work out how to get them installed.

Installing Extra Plasmoids In Ubuntu Gutsy
First of all, making sure you're on a Gutsy system, install as many packages starting with kde4 that you would like (kde4-base, kde4-games, etc.). You can safely ignore any which end in -dev, but do install kdebase-workspace.

After that run the command "sudo apt-get build-dep plasma-playground", which will install everything needed to build plasma-playground. When that is done make sure your terminal is somewhere that you don't mind saving files to and run "sudo apt-get source plasma-playground" then move to the plasma-playground folder made ("cd plasma-playground-*") then to build this source into a package run the command "sudo dpkg-buildpackage". This will make an Ubuntu package in the parent folder (a file ending in ".deb"), which you should now be able to install. Congratulations, you now have a set of plasmoids to test in KDE4!


To get into KDE4 there are a few ways, but I am currently using one of the disposable test user accounts which I have made for demonstration purposes at the Freshers' Fair, called fss-test. I log in as fss-test using the session Failsafe Terminal. When the terminal comes up, make sure to stay in the default Home folder (for some reason this will not work from anywhere else) and run the command "/usr/lib/kde4/bin/startkde". You should see the KDE splash screen (see below :P )and a load of messages will scroll past in the terminal. A KDE4 session should come up after a bit, and you can try out the plasmoids (move the mouse pointer to the top left of the screen to add them). I have noticed some problems with their rendering, but this is a couple of months from release yet remember :) Oh, and a quick tip: Don't minimise anything. I can't work out how to get minimised windows back yet, since the plasmoid kicker replacement is malfunctioning/not all there yet. Shading windows, by double clicking their titlebar, works well enough though.

I hope that helps people get testing and playing for KDE4, but remember that you will need to rebuild the plasma-playground package
when new versions are published if you want to use them, APT won't do it for you.

PS: I would normally put guides like this onto the community Wiki but this is just a short-term solution until KDE4 is released and fully packaged, so there's not much point. I'll keep the more official support channels as pure as possible, leaving machine-breaking hacks to blogs and the forums (although this isn't too bad since every system change is done through the package manager)

PPS: I think that a certai
n person is haunting me (apologies for the poor-quality images. These were taken of the virtual machine method):






He's even in the default KDE4 splash screen :0 !