Introducing the Mockup Project
Pier Luigi Fiorini writes "The Mockup project is a desktop operating system based on GNU/Linux. It has recently released new source code and published both screenshots and mockups. Read the announcement to know where are the source code tarballs and how to compile them. Mockup uses a new lightweight and modern graphical user interface that supports both pixel and vector based graphics. The GUI is based on bleeding edge technologies like Qt 4.0 beta, Elektra, HAL and DBUS. Elektra is a new backend for text configuration files.
Instead of each program to have its own text configuration files, with a variety of formats, Elektra tries to provide a universal, hierarchical, fast and consistent namespace and infrastructure to access configuration parameters through a key-value pair mechanism. This way any software can read/save its configuration/state using a consistent API."
-73, de n1ywb
www.n1ywb.com
The description also sounds like it could be a very large .INI file.
--Mike--
I haven't seen an interface like that since yesterday.
I've heard of Elektra before, its an evil attemp to make a windows-registry clone in Linux. Ew ew ew ew.
The tabbed windows, the desktop shell called 'Tracker', and the style of the icons all seem to come directly from BeOS, not OS X.
It looks like they're basically building a better GUI engine for Mac OS X. The GUI in OS X is currently a mess. Ask any Mac themer. I hope Apple buys this from these guys and fixes Aqua.
----- "All right. It was a miracle. Can we go now?"
Let me see, it's a Linux kernel (modified maybe), with the latest beta version of a predominantly GNU/Linux app: QT. Oh, and they're trying to add a nice Desktop Enviroment, based on QT.
Basically, this is a Linux distribution with it's own desktop enviroment and a different config file system that's trying to pose as a brand new OS.
Could someone please explain to me why it wouldn't be better to submit the kernel patches to the Linux devs and just make a distribution that uses Elektra? Calling it a new OS only causes fragmentation, IMHO.
They almost get it. In electra it appears all the keys are stored in individual files. However there is still some screwiness in the filenames and a serious problem in that the file contents are still not raw.
/configuration. Electra seems to use "$HOME/.kdb" and "/etc/kdb" which seems to be rather cryptic.
Here is how it should work:
1. There is NO library. You use libc functions like open() to read the "configuration"
2. The filename is the key, just like electra. Programs use simple rules to find the actual file from a keyname: prefix $HOME/configuration/ and if not found prefix
3. The contents of the file are the "value". There is no "comment" or other data stuck in it that requires a parser. A "comment" can just be another key, ie app/key can be described in app/key.comment.
4. The value is a string of bytes with a length. It is not UTF-8. UTF-8 is highly recommended but there is no reason to enforce it. Any "registry editor" is required to preserve the bytes exactly as-is if the user does not change it, but if it thinks it's UTF-8 text it can present it to the user that way and let the user edit it. If the "registry editor" needs to figure out the "type" it could be standardized as being stored in the file key.type, but I don't think it is necessary. It is pretty easy to guess the type of data with 99.9999% accuracy.
Things Electra got right:
1. No XML or any other type of file requiring a parser
2. Ability to "comment out" a line (they rename the key by putting a period before it). Finally somebody has realized why text configuration files are still 100 times easier to use than the fanciest GUI.
Good operating system design is not about throwing ever more flexibility at the user or adding every possible gimmick under the sun.
The UNIX permission system has survived for so long because it works. There have been numerous attempts at adding ACLs to the UNIX file system, and they have not had a lot of success. In practice, ACLs cause numerous problems, in user interfaces, in usability, in system security, and in system management.
Given the way UNIX systems are used today, the real question is not whether one should move to ACLs but whether one can simplify the system further; group permissions and execute permissions perhaps should be eliminated, leaving us with just read/write and user/world permissions (plus setuid).
(Pardon my little rant here.. but this is a general problem and not directed toward this project in particular)
Instead of each program to have its own text configuration files, with a variety of formats, Elektra tries to provide a universal, hierarchical, fast and consistent namespace and infrastructure to access configuration parameters through a key-value pair mechanism.
You mean like.. THE FILESYSTEM?
This always amazes me. The most simple way to store data on a modern machine is to put it in the filesystem. Which is a universal, hierarchical, fast, and consistent namespace and infrastructure to access configuration paramaters (and ANYTHING ELSE) through a key(=path) value(=file) mechanism.
You can also use environment variables for "global" settings.
Most software goes through these stages:
If you are writing a program save yourself a lot of trouble and just cut to the chase. Please don't invent another file format. Please don't write another broken parser. Please don't use XML for anything a human has to edit. Please please don't make me link in an API just to read/write the config settings. Please don't try and prove what big programmer muscles you have.
djb's software is a great example of how powerful and simple this can be.
What these people are doing sounds little different from the next version of KDE or Gnome. Their web site has no new ideas for how to improve usability of the desktop, nothing that differs from the standard WIMP paradigm, and no interesting new functionality that they are implementing. It's unfortunate that so much energy gets wasted on trivial variations of the standard desktop paradigm. It's good to have choices in software, but only up to a point.
I actually doubt that any desktop effort based on an existing toolkit (Qt, Gtk+, etc.) will lead to significantly improved usability or functionality: those toolkits already encode a lot of assumptions and restrictions that any desktop effort based on them will be constrained by.
i left debian a long long time ago looking for something better (ended up with freebsd 2.2.6) because i was annoyed with the number of packages installed, how the base system wasn't just seen as a base system. i could see that ae was 'required' even though i knew it wasn't, and as dumb or whatever as it sounds i would prefer that it exist without my knowledge as part of a singular 'base' package. i would always go through and delete things like that manually, but when i *PURGED* ae and it left /etc/ae.conf i started looking for alternatives.
Linux has a lot of the software necessary for a great operating system. The problem seems to be tying it together neatly. This is why there are so many projects like this, it's a good thing.
Photos.
This is a very good thing.
/etc. They're doing it without requiring every program to be changed at once. They're doing it without assuming everything will be world writable. They're doing it without discarding command line configuration editing.
/etc/cfg, and perhaps eventually just /cfg if the idea takes off.
No, not Mockup. Mockup might be fun after a while, if it tkaes off, which it wont. Elektra is a good thing.
The Elektra guys need to go have a chat with the Gobolinux guys. These two groups were MADE for each other.
What Elektra does is not new or exciting, it's old and simple. This is a "Finally! At last!" more than a "Oooh, shiney!" They are attempting, once gain, to sanify
Everything is a text file, so it's easy to edit by hand. Everything is regular, so it's easy to build GUIs for editing it automatically. What they're saying meshes really well with what Hans Reiser has said about filesystems and namespaces, and that guy knows his stuff.
They absolutely do not add anything fancy, which is really good.
I'd like to see some few expansions of the idea:
The ability of they command line tool (kdb edit) to return editable text in more formats than just XML; specifically, for it to use YAML. The biggest drawback to spliting config data into multiple files is the difficulty in editing many related options, which their XML idea nicely solves... but since't it's hell to edit XML but fairly easy to edit YAML, a YAML mode would be nice.
A renaming of their tool, maybe to cfg or conf or something pretentious like that. That way the directory could be
Lose the UTF-8 requirements. While nice, it does not mesh well with command line tools, and should be left to the application anyway.
As another poster mentioned, remove comments from the config files themselves. I propose appending a # prefix to files which are comments for files with the same name, e.g.:
system/sw/Foo/firstrun
and then the comment:
system/sw/Foo/#firstrun
Which is semantically very understandable and does not too greatly reduce the available symbols for key names.
As another poster said, make using the library optional, since it's almost is as things stand. There is value to the library for application developers, for consistency and convenience, but it should not be in any way necessary.
The greatest value Elektra adds is "just" sane namespace management, although there is nothing paltry about that.
I want my Cowboyneal
Basically, you know CSS (Cascading StyleSheets) as using in HTML, well, we do the same thing for configuration, call them CCS (Cascading Configuration Sheet).
Lets take an example application, "fooApp".Thats just scratching the surface, but you get the idea, basically take the format of CSS, and apply that to configuration. Have a standard set of calls to get a configuration, it starts with
You could also use classes within the configuration, eg say you dothen you could haveJust my 2c.
NZ Electronics Enthusiasts: Check out my Trade Me Listings
The idea of a registry is not inherently flawed, but the implementations of it are. gconf and elektra both seem to be decent implementations. the registry database is an aggregation of many files. This means that the package manager can add registry entries and remove them automatically without having to result to programmatic uninstall programs. This keeps the registry from getting full of crap like it does get on Windows. Simply delete the application (rpm -e) and the entries are gone. The problem of local entries (like local dotfiles) in the home directory remains, though. Anyway, I'll wait to see what this all does before I pass judgement on Elektra itself. Something like this should, however, work under in the freedesktop.org umbrella. Making yet another desktop environment seems problematic.
Great project, it was about time. I know that system from Java, having a good library dealing with configuration files is great. First, you have a nice standardized api, then you don't have to care, where to save the files, the parsing or what grammar you use.
In java all comes down to build a property entry pair or some kind of dom tree in newer versions and then simply say save (filename) and you dont have to care about the correct place to set the file the parsing anything. Sort of like having the advantages of the windows registry (good standardized access api) without the hazzles (entry clutter not really manually editable, one big database which resides in ram etc...)