Showing posts with label GNOME. Show all posts
Showing posts with label GNOME. 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.

Monday, 3 September 2007

You don't have to be into violent BDSM to think the GIMP Took Kit is sexy

I came across the Aurora GTK2 engine yesterday, and I have to admit that it is incredibly nice. Seriously. The attention to detail is staggering. It took me a while to find a QT style that I could severely tweak to sort of match it (for Kopete and Amarok, mostly), but after some fiddling I got it looking pretty consistent (although not perfect). I have filed a needs-packaging bug in Launchpad about it, because it really is very nice. Unless there are technical flaws found in it I think it would be great as a default theme (note that the colour scheme is my own. Aurora is actually the first GTK engine I have seen that uses the recently.added recolouring support).

Here's a piccy for you:


Also, some image slicing GUIs have been made, which is cool.

Saturday, 30 June 2007

Quote of the day

"Just click the bad thing with the skull and it dies. Not only is it simple, it’s metal."

That comment about Grim Reaper Mode (also known as xkill) is part of some nice GNOME tweaks suggested here.

Also, Mirco has done some more nice videos, I read an interesting idea over here, although I think the idea is backwards, Firefox should not become the desktop, ie. making local and online applications behave the same by making the local ones look like, run like and generally be, shit like the online ones. I think getting rid of the browser as an application altogether and having web pages behave like local documents is a better idea (with bookmarks remaining behind after being finished with).

I've been experimenting with a little game idea I've had for years that I originally thought of doing in Flash (yes, I used to be evil too) but am now doing in Python thanks to Pygame and PyODE. I also think that making a nice Pygame IDE designed for simplicity would be a great idea, so I might start working on that (making it in Pygame of course!)

Thursday, 21 June 2007

Some interesting interface ideas

I have recently started musing about possible new ways of interacting with a computer. Of course, I do this a lot, but here are some ideas I have been pondering (when my programming improves I might be able to prototype these ideas for use in Warbuntu):

1) Tabbed interface.

Individual applications have tabs in them, the taskbar-style widgets usually running along the bottom of the screen are like tabs, so why not set the whole computer interface into a tabbed environment?

Every application would be fullscreen. There would be no floating windows so programs with such awful interfaces as recursive windowing systems (I mean YOU Photoshop!) would be avoided at all costs. Viewing multiple areas on the screen (like the GIMP's various dialogues) could be done via panes.

At the top of the screen there would be, right in the centre, the name of the current tab. The name would be editable, so files can be opened (using search), URLs can be visited (names would not be "Firefox - website name" they would be "http://www............" like in Sugar), programs can be launched, etc. Basically it would be like the GNOME deskbar.

Beside this there would be options for controlling the computer, like logout/shut down/restart/lock screen/etc.

Fork 1) Underneath this would be a universal toolbar. Like AmigasOS (sans MagicMenu) has one menu at the top (and this is used in OpenStep too so GNUStep uses it and apparently Apple MacOSX does too) but it would extend down to new, open, save, cut, copy, paste, etc. buttons. There would be a few catagories of these, each in named tabs (Office, Web, Graphics, Multimedia, etc.), so that graphics applications would work in the same way with the same toolbars, textual applications would work in the same way with the same toolbars, etc. These toplevel tabs would be the parents of the rest of the tabs.

Inside these, underneath their toolbar, would be the application tabs. These would be named after the application, so "Writer Word Processor", "Calc Spreadsheet", "Impress Presentation", "GIMP Image Editor", "Inkscape Image Editor", etc. this would follow a sane naming scheme which I will put in a seperate entry, since it has become too long here and deserves to stand alone incase later citation is desirable. Inside each of these would be the individal open files, the currently active file having its name in the top deskbar-type box (with metadata aligned to the right (or left in right-to-left languages of course) to allow files to have the same name and avoid messy hierarchical filesystems).

Fork 2) Use an arbitrary tabbing system, like current virtual desktops, where tabs can be arranged on a per-project type basis (ie. Having multiple webpage tabs available with click which contain information for a document being word processed. This would be possible in scenario 1 only for single tabs of each type, ie. switching to "Web" could show the previously looked-at webpage, but other pages would need 2 clicks, Web then the desired page). This would lose the universal toolbar idea, and could either use a toolbar in each application, or switch between standard toolbars.

The starting tab could be a list of common applications, and maybe even include little applets like the Mezzo desktop of SymphonyOS.

Various keyboard shortcuts could navigate the tabs (Ctrl+cursor keys and such), making this system very keyboard friendly, and thus very fast for those who know their way around a keyboard and who know the shortcuts.

2) Thumbnail file browser

After watching Macslow's little video demo I began to think how easy to use such an interface would be with a remote control. Direction buttons, along with perhaps some secondary up and down buttons (channel, volume, whatever) being used for page up/page down.

Images can obviously be given thumbnails in such a way, and therefore be easy to browse. Videos could be represented by thumbnails, and TV series or movies with a disturbing number of sequels could use a standard image, or if one is not available an arbitrary thumbnail from a video inside (which could be fast-forwarded or rewound by the user to get a recognisable image) to act like directories (with an Up or Back arrow image available inside any non-top-level directory). Music could be stored per album, with album covers for directories obviously, then the same inside with overlayed track numbers.

Of course, the idea of directories should be gotten rid of, so in a full computer environment, not limited by the limited input of a media centre style setup, this could be expanded. With gestures available via mouse, or better yet some kind of finger/physical pointing object (touchscreen, "Surface", whatever), the grid structure of elements can be disposed of. A BumpTop/Lowfat kind of file manager would be left, and I think the Lowfat way of pulling different objects together would be a good way of handling the "directory" issue, getting rid of any kind of hierarchy by making everything available on the same level, but capable of being organised or grouped. (Although I am not sure how objects in this single level would be grouped due to metadata, since a song can exist in catagories based on artist, genre, etc., but only when going through a multiple-level system (basically, narrowing down the current selection) so staying in one level there would have to be multiple instances of objects on display, which wouldn't be good news for confusion levels (unless some kind of overlay like translucent lines were used connecting the multiple instances of the same object)

I say "objects" rather than images, music, etc. as I think the idea of KDE4's Plasma and its "Plasmoids" is a good one, which is essentially that of making small, arbitrarily created applications movable around the workspace (I am on about the way it handles icons here, where icons representing files essentially become miniature representations of application instances (ever used an interface which Iconifies instead of Minimises, like RISCOS? Imagine every file icon actually being an iconified viewer application with that file open) To clarify what I mean, imagine dragging around an icon for a piece of audio (let's not use the term "file" here, as we are not bothered about the hardware implementation). Instead of having an audio playing application, which is fed pieces of audio, why not have play buttons embedded onto the icon? In that way the icon is no longer representing the audio so much as an instance of an audio player playing that audio. Using the grouping of Lowfat these could be made into playlists of audio and video, slideshows of images (although this is slightly less drastic, since images are represented by themselves, and thus a "slideshow" would just involve shuffling through the image objects), etc. Since applications aren't constrained to specific sizes or coordinates thanks to Metisse and more recently Compiz-Fusion, there is nothing stopping application "windows" becoming movable, rotatable, resizable (as in, proper resize, where it zooms in and out) icons.

Every piece of data would also have an Edit mode, which would just be a slightly more complicated version of the play instance, and thus the UI should be similar.

Ah, the tangents my mind is going off on tonight! The tabbed idea might be a solid base to work from to produce a consistent (and therefore slightly limited, but vastly easier) variation of what we already have, and that idea has been bouncing around for a while in the cavernous space behind my eyes. The second, however, is pretty newly formed, although has obviously been quietly swelling somewhere in my mind as the various links I gave added to it. Now the pan is boiling over and I am enjoying the sweet sweet flow of scalding milk that follows. What's more, it should appeal to the computer users that think a spinning OpenGL carousel of faces instantly makes a 2D list of users more "user friendly" (as in, bombard them with so much eyecandy they are too busy masturbating over it to notice how much their computers are costing). I'll try to make a Moho animation to visualise the crazy forks I am taking with this one. Ooo it's edgy!

PS: The service pack maker is coming along nicely, I'm learning Python pretty quickly. A few troubles with circular dependancy inclusion at the mo', but easily solvable if I use a global dependancy list, rather than a per-package one.

Tatty bye!

Thursday, 5 April 2007

Warbuntu in the works

Well, I have had this idea for a while. I want to make an Ubuntu-based live CD of my own. It will basically be a testing ground for crazy new user interface ideas that I have. Since my programming skill is not particularly good it might take a while, but just as a taster here is the kind of thing I want to include (remember, this is purely a research type thing, which is why it is only a live CD and not an installable thing):

GNOME Display Manager (logon screen) and Screensaver:

I wrote quite a significant comment on this in some Ubuntu Wiki pages, but it seems like they are going for crazy 3D-ness (nothing against you Mirco, loads of people have said how cool the Cairo Clock on my desktop is ;-) ). I wanted to test this idea for myself, and Warbuntu would be a
great place to do it. Here's the basic idea; the GNOME logon screen doesn't really fit in with the desktop when it is in "themed" mode, but the non-themed mode looks ugly. Also, there are far too many ways to switch user, and I think locking a session shouldn't be appear any different to other system users than if you've logged out. So here it is, my quickly done Gazpacho mock-up for the login screen:
Here nobody is logged in (although that shouldn't make a difference). The GTK theme is just the one I made/use by the way so this should be made customisable with a default theme. The text at the top is the system message (currently the default is usually "Welcome to [hostname]"), so it can be changed to something more appropriate for large systems, and obviously the face browser can be replaced by a username entry box. The mockup above should be pretty usable for home systems though. Maybe another option would be to change the shutdown button to a "System" button with crazy network logon things and such.

When a user locks their session the screensaver starts like normal, but when asked to unlock it instead of the boring GTK selector currently used the same kind of thing will pop up (maybe using the locked user's GTK theme, maybe not) and will look something like this:As you can see it is basically the same. Importantly the user is shown to be logged in, so any "AAA! My work wasn't saved and it logged out!" scenarios are reduced, maybe an "emblem" type picture could be put on the face browser to indicate this. The notifications in green were just an after thought, but may be useful (and should be easily enabled/disabled for privacy). Also, keep in mind that screensaver hacks can run in the GDM background, so the UI difference there is not too drastic either.

So there you have it, the first mock up I want to make for Warbuntu (please note that the name "Warbutu" is a mix between Warbo (me) and Ubuntu, and has nothing to do with killing people. Also note that Warbuntu is pronounced "WOAHBUNTU!", as I will probably explain when it gets its first incarnation).

Please leave any thoughts and remember that this is a little experiment of mine, and not directly intended to replace the current system, just to encourage more out-of-the-box thinking (ewww... I just said "out-of-the-box thinking"). Also, if Canonical want to give me their UI job then I would be damn pleased :D http://www.ubuntu.com/employment

Update: I thought I may as well link to some other user interface things I might put in Warbuntu. First there is my Usplash proposal: https://wiki.ubuntu.com/Usplash/EdgyPropositions (at the bottom), then there is my idea for an APT "Service Pack" maker, ie. an easy way of installing loads of Debian packages at once (personally I think my idea [scroll down] is easier to implement, easier to use and more powerful than the main one being discussed in that page, and this may be the first one of my mockups to come to fruition). I might add some more if I can remember them :) Oh, and a big thank you to Steve Jobs for the EMI non-DRM thing. I might pay some people to get me some non-DRM songs from iTunes for me, to show my support (also, I assume they expertly tweak their encoders to get much better quality than I could hope for with Grip since I just press "Go" :-) )

Another Update: I also have the GNOME preferences thing to work on that I comment on here. Toodle pip.

Friday, 12 January 2007

Why am I German?

Yay, I just made a blog and it turns out Google thinks I'm German. Thanks a lot all of you I'm-in-the-UK-but-I'm-not-going-to-use-my-computer-as-a-TOR-server-so-Chris-can-use-it-for-no-cost-like-the-leecher-he-is computer users out there.

Oh well, I set this up after realising that I really need a way of venting my ideas which does not involve filling unrelated pages with my drivel.

OK, I'm going to work hard on my AI essay, get round to doing some Physics computer lab writeups and then focus on revision revision revision. I'll make sure to update this often with some cool stuff.

Now, after I have checked this white-on-white text for errors (great website design there) I will go and finish up a GNOME preferences GUI, eat some Crunchy Nut Cornflakes and go to bed since I need to get up early as I'm shipping off back to University tomorrow. Now, which one should I press, "Als Entwurf Speichern" or "Veroffentlichen"...?

PS: It is now in Chinese...