Friday, 9 April 2010

Microsoft offers much-needed fix for Windows OSS development

Although Microsoft is beginning to acknowledge that the rich ecosystem of open source software can bring a lot of value to Windows users, the most popular open source software projects are largely developed on other platforms, which means that they aren't always easy to deploy on Windows. A relatively complex open source server stack can be rolled out on Linux with a few clicks, but it might take hours to get the same software installed and properly configured on Windows.

Microsoft developer Garrett Serack has identified a compelling solution to this problem. He is launching a new project to build a package management system for Windows with the aim of radically simplifying installation of popular open source software on Microsoft's platform. He calls it the Common Open Source Application Publishing Platform (CoApp).

Much like the package management systems that are a standard part of popular Linux distributions, the CoApp project will provide a delivery platform for packaged open source software libraries and applications, with support for dependency resolution and automatic updates. It could be a powerful tool for system administrators who want a WAMP stack or developers who want to port Linux applications to Windows.

Serack wants to use Microsoft's MSI format for the packages and intends to take advantage of WinSxS in order to deliver parallel binaries so that users will have access to multiple builds of the same library generated by different compilers. The project will also seek to establish some basic standards for filesystem layout so that files are put in consistent places.

He is coordinating the project with Microsoft's blessing, but the actual development effort will be community-driven—an approach that will hopefully enable CoApp to evolve in a way that best serves its users rather than being directed by Microsoft.

"The folks here at Microsoft have recognized the value in this project—and have kindly offered to let me work on it full-time. I'm running the project; Microsoft is supporting my efforts in this 100%," he wrote in a blog entry about the project on Wednesday. "The design is entirely the work of myself and the CoApp community, I don't have to vet it with anyone inside the company."

Making open source development on Windows suck less

Having ported several of my own Linux applications to Windows, I know from personal experience how insanely difficult it can be to set up a proper environment for developing open source software on Microsoft's operating system. For the last Qt application that I ported, the process of getting all of the dependencies installed took hours. I had to install CMake, find just the right version of Automoc, and compile OpenSSL from source.

My current Windows VM has a half a dozen different build systems and three separate sets of version control tools, all of which had to be installed individually. I also have two completely separate installations of MinGW and a rather heavy Cygwin setup. I need all of this crap in order to port my software to Windows, but it's a nightmare to maintain. I have to meticulously document every step of the setup process if I ever want to be able to do it again on a different Windows installation.

These headaches are enough to deter many open source software developers who would otherwise be releasing Windows versions of their applications. Spending a few hours developing on Windows often serves as a painful reminder of how much I depend on my distro's super cow powers. That is why I'm convinced that CoApp is a very good idea.

Cygwin arguably constitutes a package management system by itself, but it tends to be somewhat insular and isn't very native. Serack believes that CoApp offers an opportunity to do it the right way and close the gaps that isolate ported open source software components from the rest of the Windows ecosystem. If it's done properly, that could be very significant.

Although Linux enthusiasts tend to disdain Windows, porting Linux applications to Microsoft's operating system can open up a lot of opportunities. A Windows port can expose your application to a whole new audience, making it possible to attract new contributors. We have seen a number of prominent open source software projects benefit in that manner from Windows compatibility in the past.

A positive side effect of that phenomenon is that it introduces Windows application developers to open source frameworks and technologies. Broader adoption of cross-platform Linux-friendly software and toolkits on Windows would obviously help boost the availability of software for Linux.

Although I'm really impressed with Serack's vision, I'm a bit skeptical that a task of such magnitude and complexity can be fulfilled to an extent that would truly deliver on its potential. Such an undertaking will require considerable manpower. Ars readers who want to participate in the project or learn more can check out the CoApp page on Launchpad.