Mac OS X, XML, and Aqua
Gr1nderX writes, "Ars just posted a large Mac OS X DP3 technical article that talks about the structure and functioning of OS X's (UNIX) filesystem, and how that impacts the Aqua GUI. IMHO, the most fascinating part of the article concerns the extensive use of XML that Apple makes in managing application resources, file meta-information, service configuration and startup options, etc. The XML parser that's built into the core OS basically gives you the ability to use either the GUI or a text editor to completely control and configure every aspect of the OS. " Lot of good stuff in this one: if only powerbooks weren't so expensive...
Well... that's a given. It's quite obvious. But might it be intentional? It seems to me the conventional wisdom is that usability does _not_ sell, and that flash is the only thing that drags in the consumers, many of which will never grow beyond basic web surfing and writing straight text in Word. Under those conditions the faults of OSX's GUI are not relevant, as the person would not be running two things at once except by accident (and guess what? for a change that would be instantly obvious!), and would never have learned any of the useful shortcuts of classic MacOS, whether it's ability to customise the Apple Menu or ability to do a contextual popup menu or use of the Control Strip. It's as if Aqua is designed to default to handhold the most relentlessly AOLish l^Huser. I'm not at all sure this _is_ a mistake.
Then the trick becomes finding ways to replace the dock, to get rid of the default stuff and use other methods. Surely this is not going to be so hard given that Darwin is OSS and we'd be _replacing_ the proprietary GUI, not tapping into it? By that I mean shutting _off_ the Dock rather than altering it, I don't mean ditching Display PDF and running KDE on it. That said, I just bet one of the first replacements is somebody hacking a Windows taskbar and start menu only in Aqua style. Furthermore, I fear and suspect it will be a _jello_ taskbar and start menu, translucent, and will wobble sproingily at all times in a continuing bit of very striking but very distracting animation. (Why??? 'Because we can!' This becomes a hell of a lot simpler hacking Aqua and using a vector GUI.) But... why not? It's not like I'd have to use it. I might prefer something like a root menu, and tend to avoid having desktop objects at all, like I do in X and in MacOS. For me, icons are for keeping in folders in disks- the desktop should have only clippings and work in progress. If I could remove the drive icons in MacOS and get the windows through a popup or something, I would.
There are a lot of things I like about Linux, mostly the freedom to be whimsical with the UI: I don't have to run a desktop if I don't feel like it. I can have taskbars of many different kinds, or not- I can have tiles and icons in many different ways, or not. However, I mostly run MacOS, partly because I know how to keep it running happy and stable, partly because its interface is more consistent (_especially_ text editing semantics- I'm sorry, X mouse text editing is crazed- even the 'windows imitations' are horribly inadequate compared with the traditional, post-Drag-and-Drop MacOS handling of it), partly because of access to tools. I write software for MacOS only- that is because it is a lot _easier_ to do, not because I don't want to code for Linux. I would really like to see some convergence here- in particular, I'd like to see OSX become popular in such a way that writing programs for it is closer to writing for Linux. Ideally I'd like to see some of the _great_ programming environments for MacOS (No I don't mean Codewarrior- I mean REALbasic. It's like a _really_ sophisticated GUI drag and drop object oriented interface builder only you code in Python- not really Python, but I'm told it's very Pythonish) evolve so they output code for OSX- at which point it becomes a lot easier for them to also output code for Linux.
As these companies and programmers start adapting to a more Unix-based environment, they can start coexisting with the OSS world. There _are_ Mac programmers who 'get' open source. It's an active area- one of the biggest Mac gaming hits _ever_, Bungie Software's 'Marathon', recently saw GPLing- Marathon 2 was released under the GPL, and in just a few months has been substantially debugged and tweaked and enhanced, longstanding engine limitations totally obliterated in a delightful burst of free hacker effort. As the Mac converges with Linux (I consider the move to Darwin and BSD underpinnings a convergence all by itself), this sort of thing will happen more often. The end result might well be a massive cross-pollination- tons of Linux code being adapted for use with Aqua, tons of Mac programmers and vendors suddenly beginning to release stuff on Linux as well.
When that starts to kick in, Windows can go pound sand >:)
The new Powerbooks are not that expensive when compared to another top of the line laptop like a Thinkpad.
Powerbook - $2,499.
14.1-inch TFT screen
400MHz/1MB L2 cache
64MB SDRAM
6GB Ultra ATA
DVD-ROM/DVD-Video
8MB video memory
10/100BASE-T Ethernet
56K internal modem
2 Firewire ports
Thinkpad 600X - $3,299
Intel® Mobile Pentium III 500MHz
64 MB SDRAM
12GB Hard Drive
2 Type I/II or 1 Type III CardBus and Zoomed Video support slots
13.3" 1024x768 -- TFT - active matrix
24x max-10x min4 CD-ROM
56K5 v.90 KBps Modem
So yes the Thinkpad has a faster CPU (smaller cache) and a bigger HD, but theres no Ethernet in the Thinkpad, thats an option. Smaller screen in the Thinkpad and no DVD-ROM. If you jump up to the 500MHz Powerbook...you spend $200 more than on the IBM, but you get 128MB of RAM. Plus you are getting the 2 Firewire ports for video and storage. (and if you say..."theres no Firewire devices out there!!!" You need to close your mouth and open your eyes...cause theres alot of Firewire devices out there.)
Apple once again lurches into the forefront in key technical areas even if their user interface standards are slipping. Reading this article really makes me wish that Tog was still back at Apple. What he could do with the power of Quartz and all the things he could fix in the Aqua interface make me sigh with regret. I'm also regretful that Apple went with BSD instead of going over and contributing to the Linux movement, but I can understand their reasoning.
/System layout, at least the concept of it. Linux really needs to sit down and think out a new directory structure from scratch to organize all the files that are needed to run the operating system, along with a few elegantly constructed libraries and tools for manipulating those files.
/System and over the course of various X.9.Y releases, move various system resources over to it.
/usr, /etc and other filesystems in place. /System would be where the operating system really lived and things like /etc/hosts could be created by special utilities from the XML files that contain host information. But the idea there is that would only be for legacy application support and developers would be encouraged to port to the new /System layout.
/System, XML resource files, bundling and Quartz, Linux has plenty of ideas to copy and improve on through the open source movement.
Even so, this setup makes it quite clear that there is a lot that can be done in future releases of Linux. The main parts that strictly concern the Linux kernel involve Apple's cleanup of the system directory structure, it's reorganization of resources and the use of XML heavily for configuration files.
The main problem with Linux for the masses is that managing system resources on a Linux system is nontrivial and really requires a trained system administrator. There are configuration tools that try to simplify it, but the lack of a standard configuration file format really cripples the effectiveness of these utilities. Also, the Linux filesystem really grew without systematic organization over various releases of Unix, rather than being planned out as a coherent and unified set of data files and a parser.
The thing I really like most about OS X is the whole
Such a porting sounds hideous but it can in fact be done in stages. A developer's release, probably Linux X.9 because the final result will be radical enough to warrant an point zero release, could create a filesystem like
Backwards compatibility can be maintained by leaving the old
Bundles are an elegant compromise between the necessity of having a bunch of files together to run a single application while at the same time giving a convenient single box to be handled from outside. Average users will use the box as a whole, advanced users can open it up and play with the contents. This is another feature that Linux needs to come up with some equivalent for, if it is to succeed on the desktop.
Quartz is less critical, though in the long run it will probably make life easier for developers. The fancy stuff there isn't strictly necessary, not yet, though as the range of displays increases, going to PDF and breaking the dependency on DPI and viewing distances will be necessary for the range of devices that Linux will run on.
Unix wasn't so much designed as it evolved, and parts of the system show that. Apple has done a major boon by showing what Unix can evolve into, giving the Linux developers a clear target to aim at for their course of future evolution. Between
I've read a lot about how XML is the greatest thing since sliced bread, apparently enabling many different things, from website interoperability, office documents, making toast & eggs, an XML parser in the core of OS X, and now people are talking about making /etc/ files XML... I don't get it. Not just the /etc stuff, I don't understand what the big deal is about XML. It doesn't seem like the big panacea that will cure all of our standards problems and create world peace that many people seem to be making it out to be. In fact, I don't see very many reasons why I'd use it for *anything*...
This is an honest request for information - please enlighten me.
Thanks!
"It's tough to be bilingual when you get hit in the head."
And if the JVM improves for Linux, how hard would it be to port such a tool? Not very, I'm guessing.
I use Macs for work, Linux for education, and Windows for cardplaying.
What if there were to be some XML processor built into the OS XML engine that parsed tags for creating windows, creating layout managers, and painting buttons, menus, etc. Assuming such components manage their own event processing and are truly modular (such as javabeans), one could script the creation of an entire UI or application. Maybe other API's could be mapped through XML processors and DTD's -- for instance, a series of XML tags mapped to OpenGL calls could be pretty spectacular.
Granted, this is what scripting languages really already do: interpret chains of characters and map them to native machine functions. XML is the ultimate scripting language, though, because instead of choosing between perl, python, or even C, and being limited to their specific API's and syntaxes, we could simply use XML and choose different processors and DTD/controllers to accomplish the necessary mappings to specific syntaxes and API's. A single XML-crafted application could actually map to several languages if necessary, blending Java, C, perl, etc.
Of course, a very talented team of brains would need to create the API-mapping-stylesheet-DTD pieces for these XML app developers to use, not to mention the XML processors (which would in effect become a virtual machine).
Well, the expat library already exists and seems to be quite defacto under Unix.
/etc filesystem depending on it. What do you do when it breaks? It's like screwing up your LD.so.1 ... ow :)
At least, PHP and Apache use it, and well. And a couple of other utilities and CPAN modules. I've come across. It's fast, small, and not full of unneccessary crap.
Anyway, utilities like Apache and ProFTPD already have meta XML config scripts, and a fair few perl scripts that make use of XML::* as well.
I don't think I like the idea of having a dynamic XML library, and your entire
Still, a standard, easy to use DOM for utilities would be nice, perhaps some kind of extension of the GetOpt stuff would work? It's succeeded largly because it's there and easy to use, and an XML standard would have to do the same.
When I first heard about the Mac OS X GUI I was both impressed by the visually clean and clear appearance of the interface and the use of transparency to improve the relationship between sub-windows and the 'main' window. Reading through this Ars Technica article though, I begin to wonder whether all these special effects included with Mac OS X are an improvement to the original Mac interface or whether they are crucifying their principles of simplicity of use in order to appear more flashy.
For example, the Dock bar at the bottom of the screen which progressively shrinks as you add more items to it and magnifies the few documents around the mouse when you move to it. This looks like a neat idea at first, especially when you look at the example screenshots given on Apple's site. But distinguishing between even 10 text documents is difficult using this method (the icon reflects the real document) and the example given of 1000+ documents in the bar in Ars is a nightmare!
The use of a button on every title bar to switch between single and multi-window mode is also odd. I guess this is a more interactive way of minimizing windows for the new user, but it's strange to see an option like this as a window button everywhere.
Don't get me wrong - I'm impressed by much of what I see in the Mac OS X GUI. The clear use of colour - i.e. generally neutral colours for windows, with primary colours for important window tool buttons on the active window - along with the Quartz technology and the XML integration are all worthy additions to the interface. But I do worry that some of the features are more a triumph of style over substance when it comes to real usability. As GNOME and KDE move to improve their interfaces, there is much to learn from the way Apple has designed their GUI. As long as nobody forces me to use a one-button mouse ...
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.