9fans archive / 1997 / 05 / 4 / prev next From: howard@pla... howard@pla... Subject: The future of 9x... Date: Thu, 1 May 1997 07:42:42 -0400 OK, I'll finally fess up. I did the Plan 9 X server here at Bell Labs, but it never fully worked. Later I made another attempt, and got it working just fine, but by that time we were using Brazil, which has a different graphics model. Basically the server works by doing all screen operations into a memory pixmap, keeping track of changed bounding boxes, and transferring those changed rectangles to the screen at opportune moments. It works surprisingly well. It wouldn't be too hard to do for Plan 9, but I've always been to busy. Also, there are three problems I can think of: - the Plan 9 graphics model only allows you to write whole lines of bitmaps, so transferring narrow vertical rectangles to the screen has to be done carefully---my abortive Plan 9 port used a series of off screen temporaries of varying widths that could be used as midway transfer bitmaps. - the whole make procedure is rather dodgy, and some of what I did is so far in the past that I can't quite remember what I did either. I used a make, the korn shell (ape/sh), and ape/cc. I used imake to make the initial makefiles, but there were difficulties in what imake expected cpp to do versus what our cpp does (ours followed the ansi standard), so I ended up using a gnu cpp for that part. Various parts of these have sources that I don't think I can distribute. And even with the makefiles that are there, the situation with building for multiple architectures is awful -- you have to clean out completely, and I think build on the architecture you're building for. All or much of this could be corrected but I don't have the time or inclination. This is the reason I haven't even released the client libraries. - I needed to add another fork flag to fork the rendezvous group in brazil, and that never made it back to Plan 9, as far as I know. It was needed to make select() work in the presence of forked subprocesses that also wanted to select, but I forget the details. Perhaps there is a workaround. Anyway, with all this said, I'm sure what I've done is more use as a start than starting from scratch, and I'm willing to put it on the net for people to have a go with (with the understanding that I'm too busy with Inferno at the moment to help or answer many questions). Any suggestions for how to do it? My stuff is intimately mixed in with the whole X11/R6 release (with patches up to patch #04), and I would have to put all of that up -- about 210 Megabytes. Howard Trickey howard@pla...