
On Wed, Jun 13, 2007 at 01:31:46AM +1000, Donald Bruce Stewart wrote:
droundy:
On Wed, Jun 13, 2007 at 12:04:20AM +1000, Donald Bruce Stewart wrote:
droundy:
On Tue, Jun 12, 2007 at 06:29:38PM +1000, Donald Bruce Stewart wrote:
The problem is that very little of xmonad's code is in its core. The pleasant aspect of xmonad (or rather, what I wished I had with ion3) is the nice interface for extending and customizing it. When that nice interface causes xmonad to crash when you make a mistake, it's not so nice. I end up keeping an ion3 open for editing xmonad, because xmonad is so unstable.
You mean, because you can hack internal structures however you want, so you can break things? The xmonad core is *not* xmonad + random extensions. And random extensions -- now they're in X -- can crash the system if you want.
"xmonad is so unstable" isn't the right way to talk about arbitrary, deep customisation, and its inherant ability to break things.
But we're haskell developers, we should hold ourselves to higher standards. We've got powerful static typechecking, and you claim that xmonad has a clean well-tested design. In my opinion a good design for an extensible system involves making it *robustly* extensible, and that's where xmonad falls down. When it's safer to modify a program extensible in lua than one extensible in haskell, it means we're doing a pathetic job, and not making proper use of our language.
Solutions to the problem of safe, powerful extensibility welcome, David. I'd be happy to limit extensibility to pure functions, as we originally did. That's the best method I know of, for language-based safety.
That idea is totally flawed.
Hmm. Why the strong language? It seems out of place on happy xmonad@.
Sorry, after I sent it I realized that. Partly I'm just feeling stressed... a grant needs to be submitted in under three weeks. I think my current bout of xmonad hacking has been an attempt at stress-relief by way of tackling a solvable problem. And also I've been annoyed with the language for not giving us stronger checks. It's all well and good to claim that pure functions can't interact with the IO world, but it's annoying when they do so anyhow by means of crashing the program. And almost of my recent annoying crashes have been by pure functions (even the one which came from Xlib---it was as pure function, textExtents, that crashed).
Exceptions are thrown just as often from pure code as they are from IO code. If Haskell had some inherent way to verify
You don't call Xlib from pure code. So that's one big source of instability eliminated. That was why extensions were originally set as pure.
But Xlib seems actually to be quite robust. Witness all the mistakes made recently with the tabbed layout, which caused no more trouble than messages sent to stderr. -- David Roundy http://www.darcs.net