[Xmonad] Tabbed layout, xinerama, strange crashing
droundy at darcs.net
Tue Jun 12 11:15:41 EDT 2007
On Wed, Jun 13, 2007 at 12:04:20AM +1000, Donald Bruce Stewart wrote:
> > 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. Exceptions are thrown just as often from pure
code as they are from IO code. If Haskell had some inherent way to verify
that functions are total, then your reasoning would be sound. As it is,
our only hope for robustness is really to catch errors. That and to make
it easier to avoid accidentally using partial functions.
More information about the Xmonad