Article: Linux + Microwindows: challenger to WinCE
Feb 1, 2000 — by Rick Lehrbaum — from the LinuxDevices Archive — 60 viewsLinux vs. Windows. It's a battle fought on many fronts. While a worldwide legion of Linux developers has successfully mounted a frontal attack on Microsoft's WinNT in the servers, routers, firewalls, and telecommunications markets, the open-source community has quietly set its sites on another of Microsoft's three OSes: WinCE — the Windows operating system for handheld and embedded devices.
Two challenges
Taking on WinCE posed two distinct challenges. First, it was necessary to strip Linux down to a size that fits the constrained resources of embedded systems. Fortunately, this was easy thanks to the inherent modularity, flexibility, and configurability of Linux. Add to that, the availability of Linux source code and thousands of programmers eager to apply it to the requirements of a myriad of embedded applications. The result is a wide range of “small footprint” embedded Linux implementations, which include: Embedix, ETLinux, LEM, Linux Router Project, LOAF, uCLinux, muLinux, ThinLinux, FirePlug Linux, and PizzaBox Linux (see www.linuxdevices.com/links/).
The second challenge for Linux to overcome, to successfully grab the embedded market away from WinCE, was the need for an easy-to-use and easy-to-embed graphical user interface (GUI). Until now, a truly embeddable full-function open-source GUI for Linux just wasn't available. But all that is now changing, as a result of the growing functionality and availability of Microwindows — an open-source project aimed at bringing the features of modern graphical windowing environments to Linux based embedded devices.
Greg Haerr, principal developer of Microwindows, says “it's an engine that allows you to build any API on top of it.” “The goal in developing Microwindows was to develop a modern set of software functions that can do what you need in small systems,” continues Haerr. In short, Microwindows — being small footprint and open-source — is an ideal companion for the small footprint embedded configurations of Linux. A good team to take on Windows CE.
Two APIs for the price of one
And it gets even better (for Linux, that is). Microwindows now sports a high degree of application program interface (API) graphics compatibility with WinCE — the so-called “Win32 GDI API”. As a result, it's getting easier and easier for programmers experienced with Windows 98/NT/CE to migrate their existing and new applications to Microwindows/Linux. Developers experienced in programming under a Windows OS should have a very short learning in curve getting started with Microwindows. On the other hand, for developers who prefer the high-end, highly respected Linux X Window System API, Microwindows offers Nano-X, an alternative API that resembles X11's Xlib. Together, this flexibility of having a choice of two APIs (Win32-like and X-like) combined with the fact that it's open-source (and therefore highly customizable) makes Microwindows an ideal graphics environment for small and embedded devices.
Ready for action?
Is Microwindows ready for action? Haerr says “Microwindows is already being designed into a wide variety of 32-bit applications on quite a few embedded microprocessors, including MIPS, StrongARM, SH3, and Intel CPUs — real applications, in handheld and embedded products that will come to market within the next six months.” “We've also got it running on several small Linux PDA's like the Everex Freestyle and the Vadem Clio,” adds Haerr.
Is Microwindows finished? “Definitely not,” according to Haerr. “It's not a drop-in replacement for WinCE at this point, by any means, but on the other hand it has plenty of functionality to satisfy the needs of the specialized non-desktop embedded systems that require a sophisticated, reliable GUI.” “Since Microwindows is open-source,” continues Haerr, “you can easily modify it to make it do what you want.” Good luck doing that with WinCE.
What's not completed? “Lots,” explains Haerr: “Although much of the GDI API is implemented, the work completed with Microwindows is still very low level, with much remaining to be done. For instance, Microwindows currently supports clipping, line drawing, rectangle filling, polygons, circles, ellipses, text and fonts, the full RGB color model, windows, child windows, messages, palettes, 1, 2, 4, 8, 16 and 32bpp framebuffers, blitting, title bars, close boxes, etc. It doesn't yet support the zillions of src/dest blit ropcodes, dashed line drawing, patterns, stretchblit, and a number of options within the implemented API. A huge issue is that I haven't yet ported all the custom controls that WinCE uses, like menus, checkboxes, comboboxes, listboxes, tree controls, etc. These will be required to actually run most applications. Microwindows offers the advantage that the application can be compiled under Linux and emulated exactly on the X desktop, without having to actually run on the target device until required. We've got drivers for X11, framebuffer, PC VGA, as well as raw hardware for a variety of devices.”
Help welcomed from the open-source community
The original intent of the project was to attract the legions of Win32 programmers to Linux, by producing an open-source WinCE replacement capable of running recompiled Windows applications. Judging by the rapid pace of Microwindows project progress, it's a goal that can be expected to be achieved sooner, rather than later.
For further information, visit the Microwindows project web page, at http://microwindows.org and the LinuxDevices.com Microwindows link, * here *.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.