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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.