In the following you will read about a project which aims to help people in porting and writing portable software on OS/2. Current Situation: ================= While most commercial software development for OS/2 has stopped (except important server-only and large-scale solutions, though) the "open source" movement currently gains momentum. For most remaining individual OS/2 users and developers it is essential to profit from this momentum in the best possible way. For many years emx has been the working horse here: Not only because of it's gcc port. Essentially because of it's highly portable, largely open standards conformant C Library. This one has proved reliability and excellence. Let us try to extend it slowly, implementing those interfaces _we_ have always been missing without reducing stability, slickness and performance. Like EMX itself it should well serve as an example of good software engineering. In the following we outline an approach which follows a well known theorem from physics: the "least action principle": in our opinion the low resource demands makes this project likely to succeed! The idea: ======== Our idea focusses on three independent steps: 1. Collect already existing ported APIs and subsets and make a quite usable and well documented extension library of it, that can be improved upon and heavily tested, independently from emx. 2. Create a Posix-conformant file-system wrapper using a _posixRedirRoot()- function very similar to the existing __XOS2RedirRoot() interface of XFree86OS/2 as well as a BSD-Unix-style () mechanism for remapping hardcoded path-names. Other ideas (not necessarily from the authors here) include an "emx.dll" internal database to simulate symlinks and perhaps one should have a look at TVFS here. 3. Merge all those efforts into a single distribution that is upwards-compatible to already existing emx-software and that would (eventually) pass all tests for official Posix-conformance. We would not limit the scope to POSIX.1 but include a selection of system calls from The Single Un*x Specifications (Unix 95/98) as well as traditional SYSV and BSD interfaces. What to do: ========== As a first step we'd like to know from each other if people want to contribute here and if so what they have to 'offer'. Let us set up a mutual coordination of past individual efforts to merge them to a quite usable single library. Many complicated work has alread been done, namely to support the forthcoming XFree86OS/2 4.0. You might already have implemented other complicated and missing API's. Contribute them, please! And feel free to criticise and to stress test what we already can offer. Then we might have to discuss the license issue: A license more liberal than (L)GPL would be nice, since we don't want to limit usage more than necessary. This does not exclude a non-liability-disclaimer and individual copyright notices. If possible we might agree on a having an unique license for the whole package. At least the small collection we are offering in a package called 'libextensions' (working title) is Public Domain, except some (L?)GPL stuff. This will be removed eventually. Finally we have to address the topic what to do with our work: for some reasons it is not obvious whether it can be simply added to the public EMX distribution ... What we have: ============ We have already collected a few implementations for "frequently missing APIs" upon porting: including math and random number functions, dlopen(), fchmod(), g/sitimer(), usleep(), etc. To be prepared for possible future enhancements we meanwhile also provide stubs for functions which have no real counterparts on OS/2 yet. This clearly superceeds the approach of #whatunixhas (0) /* and we on OS/2 don't have at all:-( */ An important statement: ======================== Since we marked our code as Public Domain it should be clear that 'we' do not intend to make advertisement with your hard work claiming it would be 'our' effort (only ;-). The goal is only to get EMX (or any similar project) ready for porting more software out of the box! Organizational stuff: ==================== We're primarily looking for people which actually will contribute code. Especially since this little project shouldn't go 'fully public' (i.e. upload to a site like Hobbes) unless a certain level of quality and quantity is reached. No, not the full Unix98 API list has to be done before ;-) Since we've learned from many projects that users (like on xfreeos2@) get upset when too much technical stuff is discussed we have set up a new mailinglist: posix2@borneo.gmd.de is available for discussing this project. Send subscribe requests to majordomo@borneo.gmd.de (they will be forwarded to the list owner for approval) Thanks and Bye, -- Arnd Hanses, Alexander Mai, Holger Veit