Spec vs. Implementation
"clearm" <[email protected]>
| Newsgroups | gmane.comp.graphics.y.devel |
|---|---|
| Message-ID | <[email protected]> |
I think the best way to develop a window system these days is to develop a specification instead of a single source tree implementation. You'd simply publish the specification (like the X Window spec or Java spec), and let anyone who wants to develop an implementation have at it. The advantage of this is: 1) Everyone can develop their own Y Server on whatever hardware/OS they want. All they have to do is make sure that they interface with the client API properly. So, if Joe Blow knows how to do hardware acceleration on a Xenocorp Model 300X Ultracomputer then by all means he can create his own fully optimized Model 300X Y Server without having to worry about having to target SDL, DirectX, OpenGL, GGI, DirectFB, SVGALIB, iPAQ, Palmpilot, etc. in the same source tree. 2) In the same vane as point #1 above, it simplifies the reference implementation (i.e. the current source tree) because it doesn't have to be portable. We don't need a gazillion abstraction layers in the reference implementation to account for every single possible hardware/OS configuration. 3) They can write the Y server in whatever programming language they want. It can be C, C++, Lisp, even friggin perl if they want. So long as a client can connect to it and send Y messages, it doesn't matter what language the server is programmed in. 4) There can be more developers working/exploring the project. With one source tree, only a few people can submit changes without screwing it up. You don't want everyone and their grandmother dipping into the source and changing things. But if there are multiple small groups implementing their own Y servers they can do as they please. 5) Makes it easier to develop. I guess this is just a rehash, but if everyone can use their own language and coding style; develop and their own pace; and not have to flip through a huge, over-abstracted, single base of code; then it will be easier for them to work on the project. For example, when I look at a function called DrawWindow() I want to see code that puts a grey box on the screen. I don't want to see two or three layers of abstraction, pointers to user-defined functions, structures that hold who-knows-what information, and other garbage. Whaddya think? Mack