If you had asked me a couple of years ago the probability that I would find myself in 2014 paid by Microsoft to work full time on open source code, I would have said near zero. And yet here we are!
Win2D is not my first open source project. I ran what grew to be a substantial one while in college, and more recently a smaller side project that sat alongside my regular day job. But this is my first time trying to combine the worlds of open source and software development at a large corporation.
I have seen companies approach open source in many different ways. Sometimes they just throw code over the wall without any support when a product reaches what would otherwise be the end of its lifespan. Other times they release periodic snapshots of code that is developed internally, with no path for others to contribute to it. Or they ship code without its tests(1), or code that requires tools not available to outsiders to build it.
(1) Yup, I’m guilty as charged of this with DirectXTK 🙁
Plus of course, companies often do open source enthusiastically and whole-heartedly, which is what I hope to achieve with Win2D. For me this includes:
- Share everything. Not just the product code but also tests, source materials used to generate the documentation, scripts needed to build and validate the product, etc.
- Don’t depend on anything proprietary or hard to get hold of (building and testing Win2D currently requires nothing more than Visual Studio, plus the open source Sandcastle Help File Builder if you want to rebuild the documentation).
- Ship early, update often, and share a roadmap.
- Accept contributions from others, as long as they are of sufficiently high quality and fit the goals of the project.
- Use a standard license that people are already familiar with.
My last few months have involved many round-peg square-hole problems as we worked out how to apply existing Microsoft processes that were designed for very different goals (such as building and shipping Windows) to this new way of working. I’m feeling good about how things have turned out so far…