Before I get into the details, let me say that I have toyed with creating two different GNUstep-based Linux distros in the last year and a half. The first was called GoboStep, based on GoboLinux, which never really got off the ground because GNUstep wasn't really mature enough at the time, because nobody else was interested in GoboStep's admittedly very different (intentionally) FSH, and because there was no cohesive desktop environment effort at the time. The second, which was to be based on Arch Linux, never really got off the ground the way I wanted it to, but I state this here because I've given a lot of this stuff a lot of thought in the past, and I'd like to give my rationales for my beliefs here.

David Chisnall wrote:
On 7 Apr 2005, at 05:40, Jesse Ross wrote:

I asked Nicolas, Quentin and Banlu about their ideas on developing Étoilé as a full operating system (on top of Linux or *BSD or Hurd (one day... maybe...)). All three mentioned being in favor of doing a desktop environment instead. I personally am interested in a full distro, and here's why:


 - Complete control. …


I agree.

As do I. I also agree that this is what makes OS X so reliable and cohesive.


 - Eases installation and testing.


Very important. Again, one place where OS X wins is the `it just works' measure. They have a limited amount of hardware

Yes, and we don't have that luxury. This complicates things immensely.

 - Out-of-the-box solution.


I think we could learn a lot from BeOS 5 Personal Edition in this respect. You could boot from the CD, you could copy the image to your hard drive and boot from Windows 9x (this kind of thing isn't possible with Windows NT, unfortunately), or you could create a partition on your hard disk and install to that from within the live image. The time from getting the CD to running the OS was under a minute. The amount of time between starting the OS and having it installed was not much more (the ability to install from the LiveCD, rather than having a separate install routing is also something we should consider - don't make users wait an hour or so from getting the CD to seeing what the system looks and feels like).

Yes...I envisioned exactly this as well. The installer CD *IS* the LiveCD, and the LiveCD is the installer CD. There is no difference, they are one in the same. It just makes sense this way.


I would say some kind of a LiveCD would be a great solution.


Definitely.  Keep the barrier to entry as low as possible.

Indeed.

I'm in favor of either Linux or a BSD; Linux because it's got a larger developer community and the name "Linux" is better for marketing, *BSD because it's got a more cleanly integrated base system and a smaller development team which might be easier to coordinate with.


I would personally favour NetBSD. The base system is very clean, small and customisable, and it provides a working and tested system on a large number of platforms. I would imagine that a significant proportion of our potential audience would be Mac users, so having a working Mac/PPC version (and LiveCD), as well as x86 would be an advantage. Focussing on x86 to start with might be a good idea, since it is the largest potential audience, but picking a base system which is consistent across multiple architectures is definitely a good idea long-term.

This is where people start to disagree. I strongly believe that any desktop OS should be x86[-64] Personally, I have nothing against FreeBSD or NetBSD, but, in my opinion, for a true GNUstep-based personal desktop OS to be competitive, it needs reasonably competitive hardware and peripheral support. This is where the BSD's start to fall short. I personally really really like DragonflyBSD, and wouldn't mind seeing a GNUstep-based desktop OS built around it, but its hardware support is also lacking. Most people who own PC's these days have either an ATI Radeon or NVidia-based GeForce-series graphics accelerator. If a given OS doesn't have support for hardware-accelerated OpenGL graphics (for both ATI and OpenGL) then, while it may be very useful in plenty of other circumstances, as a desktop OS candidate it's a non-starter. I expect to be disagreed with here, but I believe this very deeply.

This criterion rules out both NetBSD and OpenBSD as options at the current point. FreeBSD and possibly DragonflyBSD are still options, as well as Linux.


Nicolas suggested a while back that he would be interested in building a GNUstep-based system on top of DragonflyBSD to take advantage of some of the low-level message passing mechanisms it provides for distributed objects. This could also be interesting, although I believe that Dragonfly is currently x86 only.

Yes, by design. They are of the "do one thing, do it well" first mantra, as am I.

Ideally, I would like to see a system based on L4-HURD, since the design is really slick, but unfortunately it doesn't really exist yet…

We can all dream, but it won't get us anywhere. Expecting HURD to be functional in the next decade is like expecting world hunger to be fixed tomorrow. Ain't gonna happen. We have to be realistic.

Maybe a good conversation for this is to think "if we had only one target platform, what kind of things could be possible that we couldn't do otherwise?"

Really good hardware support. I would never participate in a GNUstep-based desktop OS project which I would not use as my primary desktop environment. That requires that I have hardware-accelerated OpenGL (in my case, nvidia)

Network, power management, etc. configuration utilities (these would be possible for a DE, but a lot more work since they would need to wrap a variety of different low-level features rather than just one).

Not really. This is what Hardware Abstraction Layer aims to fix. Read about it at http://www.freedesktop.org/wiki/Software_2fhal since it's outside the scope of this thread.

Fast user switching, security systems such as keychain (easy to implement on NetBSD, Solaris, FreeBSD or Linux, since they all provide some mechanism for authenticated IPC, but much harder to implement in a cross-platform way since each mechanism has slightly different capabilities and syntax). Customised init system for fast boot (I don't imagine many people will be using Étoilé on a server, so fast boot-to-GUI is important), consistency, ease of support / testing. Dependency on mechanisms that don't necessarily exist in some platforms.

You have to be careful when you use the term "cross-platform'...I presume, based on your usage, that you mean "cross-OS" and not "cross-architecture" but can you verify that for me? I also agree that fast boot-to-GUI is also extremely important. Matt Rice did some work a while back on a parallelized init system, and folks at IBM have also done the same. There are several options under both Linux and BSD here. We should go further, and say that any Étoilé-based desktop OS should *NOT* be a server. That doesn't meant it can't have a web server or anything like that, just that it wouldn't under the default install, because it's a desktop OS, and nothing more.

We would also be able to add kernel / base system features that would enable extra high-level features. I intend to extend the KEvent system in NetBSD, for example, to allow an application to register to receive notifications of /any/ changes to the filesystem, not just those for a monitored file descriptor - the mechanism for this kind of notification already exists in Free- and NetBSD (but not in Linux), although this particular notification has not been implemented.

This assertion is completely false. Take a look at FAM. It's completely cross-platform. FAM works with IRIX, Linux, *BSD. (FAM is essentially for filesystem-monitoring what HAL is for hardware) Under Linux 2.6, it uses kernel-level mechanisms to transparently watch file access & modification. Linux does (and has, for some time) had exactly the functionality you refer to. It just goes to show you that you established a view of Linux at a fixed point in time and probably haven't investigated whether or not certain things have changed. This is kind of dangerous.


Additionally, let's ask "what extra work will go into supporting a full OS instead of just a DE?"


That depends on the base system we use. If we chose Linux, then it depends if we are doing a Linux-from-scratch approach (in which case we have a large amount of work to build and test packages), or basing it on a specific distribution (in which case we have to ensure our packages work on that system, and probably, at least, create a custom installer and liveCD etc.)

Well, I've also thought about this a lot, and while an LFS approach would be nice, I personally think it's a waste of time. We wouldn't consider doing this with any BSD, so why would you consider doing it with Linux? Customization of a pre-existing distro is perfectly fine, and saves us a lot of time. There many, many, many people working on Linux-based distros, and to be so presumptuous as to reject their work and claim we can do something better is not only probably completely untrue, it's unachievable. an LFS-approach also means that if I get hit by a bus after having written it, or get married and have a kid, or any other of a number of real-world related things that might require my undivided attention for months or years, it's much much harder for someone else to pick up where you left off. This is what happened to LinuxSTEP (which was essentially LFS-based)

Even if we don't go for a whole OS, I would imagine that we would want some kind of LiveCD, so that effort still exists.

Indeed. There's already a good Linux-based GNustep live CD, made by Gürkan Sengün (see http://livecd.gnustep.org) which we could at least consider using as a basis for further development. It's Morphix-based.

Once we have a working system, then it should just be a matter of importing changes from the upstream base system and performing regression testing (something we would have to do anyway).

Yes, there's a lot more to it, but that's one step :)


============================================
THE INTERFACE
============================================

 - A buffer or visual pasteboard / quick launcher.…


I would like to see something like the shelf, but not attached to any particular window, with exactly the functionality described by Jesse. I also like Nicolas' idea of a shared shelf, possibly using XMPP's publish-subscribe mechanism. (Nicolas: I intend to spend more time working on my XMPP framework / client once my current paper deadline has passed in a couple of weeks time. Honest. I may even finish the GNUstep port…).

Cool. You'd better. :)

- Spacial interfaces can be extremely painful and lead to a lot of windows on the screen. I do like 1 window for 1 folder -- that's a good idea, as is keeping the location and view of a specific folder consistent. Browser navigation is really slick for deep hierarchies -- we just need to find a way to unify the two concepts. Or...


Agreed. I find spacial navigation very good for folders I manage myself, but not for system folders etc. The way the OS X Finder switches between the two is really messy.

Personally, the way I work requires both. Windows supports both. I use both.


- Ditch the ability for regular users to create folders altogether and put all files in one spot (probably their home folder merged with a Shared folder for all system users). Make the workspace manager an awesome searching and filtering tool. Add buttons to the workspace manager for "Music" or "Photos" or "Letters to my boss since last Tuesday" or whatever, and just make those shortcuts for queries (live search folders). Never use a Save dialog again -- when you make a new file, just give it a name and it's automatically added to the user's home folder, ready to be searched on.


Possibly. This seems to be where Apple is going (apparently implementing Spotlight is less effort than fixing the Finder…). I rather like managing my own documents, and I can usually find them quite easily. My main gripe with current systems is not that they are hierarchical (the human mind is particularly well evolved to interact with hierarchies, and they are a good model), it is the fact that there is no separation between the model and the view of the filesystem.

Yeah...I kind of think that stuffing this down your potential users' throats is not going to make you many fans. I want to manage my own files in folders, and it bothers me when iTunes insists on doing it for me, for instance. There's more than one way to organize your music.

To me, a folder is simply a file with some meta-data indicating that other files are children of it. The parent-child relation should be no different from other meta-data, and should be a many to many relation (i.e. any file can have many children, and any file can have many parents). This allows some nice things with file management (e.g. a shared library can have a shared library folder and the app which included it as parents, or a document can easily be in a saved search result folder and in the place where the user stored it).

While I agree partially with this, I don't think the file/folder paradigm needs to be thrown away completely either. most modern Filesystems support Extended Attributes and Metadata, and that should be used. I see your solution/suggestion as throwing away the baby with the bathwater.

Current systems make it very different to have multiple, independent, views on the filesystem.

Not sure if I agree here.

[snip]

- Build a history of selections. If I make a selection in a body of text, that is selection 0. If I make a new selection, the new selection is numbered 0 and the previous one is numbered 1. This goes on for as many selections as we can technically handle. All the selections might be badged by their historical number (or some other visual method). Swapping two pieces of text now becomes insanely easy: just have a menu item labeled "Swap". This is far superior to "select, cut, paste, select, cut, find previous insertion point, paste".


A while ago, I proposed the idea that a clipboard should actually work as a clipboard. The current clipping should be added to the top, and when it is removed the previous clipping should be at the top of the pile. The biggest advantage of this is that a copy operation would no longer be destructive (i.e. you can return to your previous clipboard contents by removing the top page from your clipboard). This would require the addition of an inverse-cut operation (something that would take the contents of the top page of the clipboard and remove it) - I suggested that copying an empty selection could be used for this in existing applications, although a more intuitive solution would be better in the long-term.

Interestingly, this is exactly how Microsoft Office 2003's extended clipboard system works under Windows. It works well, but I have never personally found the need for the feature.

- Make alerts that don't require interaction to show up, then fade out, and keep track of all alerts. You know the JavaScript alert() function? Horrible. It pops up with some text and an OK button, and forces the user to disrupt what they're doing to get rid of it. I'm using Growl < http://www.growl.info/ > now for alerts on downloads and new emails, and it is exactly how alerts should work: it shows up, it stays for a bit, it fades away. Elegant, informative and unobtrusive. Now if only we could build a simple way to pull up old alerts when you're busy doing something else and the alert fades before you get a chance to read it, it would be perfect.

Yes, we need to port Growl to GNUstep, but unfortunately the author/lead developer and I had a rather serious falling out (after I knew him online for a year or two) where he basically said "GNUstep is going nowhere, sucks ass, and you are an idiot for pursuing what you believe in") and as a result I will no longer be doing any work on porting Growl (I had done some, but it's been lost in a hard drive crash a while ago) I would encourage others to port it, however.

I believe Apple have a patent on this, but it's still a very neat idea. As Raskin says, things should only require human interaction if they actually require human interaction.

Agreed. As for the patent, it would have to be a design patent, and I don't know that it's actually valid, since Microsoft does this also with "baloon system tray popups" which disappear after a few seconds in a very similar manner.

- Everything is undoable. Everything. Forgiveness is a virtue... and a requirement for a friendly system.


Definitely. One thing that would be /really/ nice to do, which would only be possible if we were implementing a full OS, rather than a DE, would be to add buffering at the VFS layer, so if a device becomes unavailable (e.g. a user pulls out a USB pen drive without unmounting it), they are given a dialog box informing that they should plug it back in. If they do, then the system should re-attach file open descriptors to the files that they represent (while the device is unplugged, i/o operations on those file descriptors should block. If the user selects dismisses the dialog box without re-inserting the device then they should fail). If the user does reattach the device, then the system should

Should what?? Your e-mail was cut short.

This sort of functionality is very easy with Linux's generic hotplug subsystem, and AFAIK the basis for what you speak of already exists in the Linux kernel.


Reply via email to