Yes, ArcaOS does good job with supporting OS/2 on modern hardware. Though, it is closed. It is even more closed than eComStation. They do copy protection by branding some binaries with user's own name. Neither IBM OS/2, nor eCS did not do such bad things. Newer drivers like DANIS506 or AHCI are linked with closed-source libraries (DRV16, DRV32 etc.), so that they are not fully open source while having been published under GNU GPL. And they now port drivers from FreeBSD, because BSD license allows them to not publish sources.
These are bad things, though I appreciate their successes with porting drivers from UNIX systems plus their very clean and updated OS/2 distribution called ArcaOS/BlueLion.
But except for that, there is open source OS/2 cloning project called osFree (
http://osfree.org). And I'm participating in it. We are collecting existing open source OS/2 code. We have cloned some OS/2 command line utilities, plus borrowed existing open source code, including FreeDOS command line utilities (for both OS/2 CLI and VDM CLI), Regina REXX, a number of open source REXX DLL's. Also, an ongoing project is REXX.DLL and REXXAPI.DLL for Regina REXX, aiming to create a replacement for IBM classic REXX. Also, we have osFree PM project (based on FreePM project by Evgen Kotsuba). It is aiming to create a PM replacement. It is intended to support a remote network-transparent execution of PM programs. It is in early stage, yet, but we did proper structuring of it. PM programs can execute on a remote host, communicating with a "PM server" via a communication backend. So far, a "pmpipe" backend exist, which allows to communicate via a named pipe (local or remote.). PM server should draw windows on a screen via a PM presentation driver. For the first time, there is a "pmwindow" DLL (though, it is a stub for now, doing no real work, except for a drawing picture on a desktop, as a background). PMWINDOW.DLL draws a FreePM screen in a "host" PM window. So, it uses a PM of the host OS/2 system to draw a desktop. But now the missing part is PMGRE/PMGPI, so no real drawing, for now. A client program links with usual DLL's, like PMWIN, PMDRAG, PMGRE etc., most of which forward to PMMERGE.DLL. PMMERGE.DLL connects to PMSRV.DLL (a PM server), PM server is loaded by a first PM application started, like pmshell.exe (which is cloned by me). So far, only simplest PM applications are run, executing a message loop, having anchor block, message queue etc. So, unmodified PM application is run both on PM and FreePM. Though, as GRE/GPI is now missing, it does not draw anything on th screen. FreePM is an interesting development track, but we have currently too little manpower, so we focus on other tasks now (like L4-microkernel-based set of servers, supporting the OS/2 base API, called osFree OS/2 personality). You can join osFree development, if you interested. (It would be an area of your expertise).
Also, the most important sub-project within osFree project is OS/2 personality. We have a prototype based on L4Env (L4 Environment, a set of libraries on top of L4/Fiasco microkernel. It is now abandoned in favor of newer L4Re, L4 Runtime environment, based on Fiasco.OC, the new generation microkernel). Except for L4Env, there is also L4Re, and Genode (
http://genode.org). Genode OS framework is most promising from the three mentioned OS frameworks. It supports creation of component-based OS'es from a number of small components, having a small number (about 15) orthogonal interfaces between them. So, they can be combined with special config files written in XML, in orbitrary ways. But it's ideology is best described on their site. Genode allows running the same components on top of about 8 microkernels of L4 family (Like Fiasco, Fiasco.OC, NOVA microhypervisor, L4Ka::Pistachio, OKL4, SeL4, HW ("execution on bare hardware" -- a special custom kernel, combined with Genode root component, called core)), and on top of Linux kernel. Genode has a number of DDE's (Device driver environments), for Linux kernel (dde_linux), which supports wrappers for Linux drivers (running unprivileged in ring3), e.g., Linux TCP-IP stack, Linux wireless drivers, Linux Intel framebuffer drivers. Also, there is dde_bsd, which ports Audio drivers from OpenBSD, dde_ipxe, porting NIC drivers from iPXE project, and dde_rump, porting NetBSD rump kernel to Genode. Rump kernel is a special usermode server/library, allowing to execute unmodified NetBSD drivers (like TCP/IP stack, file systems or device drivers) as a simple usermode libraries. So far, some file systems from NetBSD are running under dde_rump.
All these features make Genode a very attractive alternative to L4Env/L4Re, so we're now trying to port our OS/2 personality prototype to Genode.
So far, we have implemented a number of servers on top of L4Env, implementing the OS/2 API. 1) There is "os2exec" server, which loads sections of executable files into its own memory, and it implements a shared memory arena. All OS/2 DLL's load into shared memory. os2exec server loads support of different executable formats, implemented as L4Env shared libraries. These libraries implement support for executable formats, transparently for the rest of the system. They are called Installable eXecutable Formats (IXF, by analogy with IFS). 2) There is (currently a stub for) a "os2fs" server, which implements the file system API's. In the future, it should run OS/2-like IFS drivers (LX binaries, loaded by "os2exec" into "os2fs" address space). So, we plan to implement an "os2fs" server as a "filesystem router" in which IFS drivers are plug-in as LX DLL's. These LX DLL's should support "FS32_*" entry points, as it's done by JFS.IFS, without the need to support the 16-bit FS_* entry points. The first driver ported will be "ramfs.ifs" ramdisk driver. Then we plan to port FAT32.IFS and JFS.IFS (there is OpenJFS project based on Linux JFS sources). 3) And there is the main "os2srv" (OS/2 Server) server, which parses CONFIG.SYS, processes the system initialization and starts other servers and programs 4) There is also "os2app" L4Env application, which is a "container" of an OS/2 application. It calls OS/2 personality servers to load the LX executable and all required DLL's, then jumps to its entry point. There is a number of CPI (Control program Interface, the OS/2 kernel base API) DLL's, which are implemented, to some extent. As in case with PM, there are a number of forwarder DLL's linked to DOSCALLS.DLL. API's like SESMGR, MOUCALLS, VIOCALLS, KBDCALLS, etc. are implemented in DOSCALLS, and are forwarded to DOSCALLS from DLL's like VIOCALLS.DLL/MOUCALLS.DLL/etc. Also, there is a virtual KAL.DLL (which stands for Kernel Abstraction Layer), which is a core of OS/2 API, implemented in OS/2 personality and L4Env Servers. DOSCALLS functions are built on top of them. The border between KAL and DOSCALLS separates "OS/2 world" and "L4 world". KAL is implemented as a native L4env shared library, DOSCALLS is a native LX OS/2 DLL. These two worlds are built with different toolchains. "OS/2 world" is built with OS/2-specific OpenWatcom tools, "L4 world" uses GNU toolchain, specific to the host environment (L4Env/L4Re/Genode).
So far, we have implemented support for pure 32-bit CLI OS/2 applications. There is about 70 API's implemented (with different level of readiness). VIO/MOU/KBD should be pure 32-bit in the future, but so far, they are not implemented. Now programs, based on stdin/stdout/stderr are working, based on Libc/VFS/terminal support in L4env. There is a small minishell is started, which can run external programs, like zip.exe, sed.exe, awk.exe, wasm.exe, wmake.exe (OpenWatcom assembler and make utility). Also, xmakeini.exe (a makeini clone by Ulrich Moeller) is run in the minishell. In the future, we will incrementally increase the functionality. We will first try to run 4OS/2 shell instead of a minishell. Then move towards VIO/KBD/MOU and try running FC/2
So far, we're a bit stick porting it to Genode. But moving on slowly. Unfortunately, there are only three more-less active developers, from which one became a big IT boss, which is very busy, another graduated from the university, so, he became very busy too. Only me is trying to do something currently. Though, I'm currently jobless this time, searching for a job, and could be overloaded by work soon too.
Anybody willing to help is welcome. The former PM developer could help a lot with advancing the FreePM project.
WBR,
valery.