4 minutes
Responding to feedback on Oxite
Hey folks, many of you are familiar with the commotion that occurred around Oxite’s initial release. For various reasons, Oxite received a lot of attention from developers, bloggers and press… mostly because it is by Microsoft and it contained a lot of buzz-words that people care about (the two biggest being Open Source and CMS… and of course, the aforementioned ‘Microsoft’). This attention was a surprise to us, but it was mostly positive to start with so we were fairly happy. Even all the positive attention was a bit of an issue for us though, as people repeatedly compared Oxite to other products. Most of these products are much larger (SharePoint and WordPress for example) with much larger feature sets, and with years of development and maturity behind them. Overall this was a PR issue for our team, we had to explain to people that we weren’t trying to compete with SharePoint or WordPress (or Umbraco, BlogEngine.NET, Graffiti, etc.) … we were trying to show that it was possible to create standards compliant semantic markup using Microsoft’s web technologies.
A little bit later, various people in the ALT.NET community noticed that this project was using ASP.NET MVC and claimed to be a good example of Test Driven Development. Both of those facts put this firmly in their realm of expertise. We had made mistakes in both areas though, both around architecture and messaging. What happened next was both impressive (great to see such a large reaction from a relatively informal association of people) and completely disheartening (as the development team receiving the feedback) at the same time. The vast majority of the criticism was completely accurate and most of that was presented in a very professional manner. We really appreciated feedback that tried hard to be useful without any overly dramatic statements, but we read all the feedback, regardless of how it was presented.
Processing all that feedback, trying to understand the overall issue and the individual specific items that people were concerned by, took us some time. Luckily we had the help of Rob Conery at that point, to come up with a professionally presented list of specific issues for us to look at. Using his refactoring of Oxite to learn from, combined with lots of great blog posts from Chad Myers, Ayende, Javier Lozano and others, we started work on rebuilding Oxite to reflect the feedback we had been given. We worked over email with Chad, Javier and others as we went, and arranged a couple of code reviews with Phil Haack and Eilon Lipton from the ASP.NET MVC team and with Jonathan Carter and Jason Olson on the DPE side of Microsoft. In short, we did a lot of the things that we should have done the first time around.
Some people believe we should have taken the site and the source down at that point and put it back up when we were ready for this next release, but I decided that we would do our refactoring right there in the public source repository on codeplex. I understand the arguments either way, but decided that doing our work in public would show anyone who was following the project and trying to learn from it that big changes were afoot and that they needed to stay up to date with the source.
So now, here we are again, with an updated release, toned down messaging and without any big PR push behind the project. You can read about Oxite’s architecture here, and you can follow the blogs of Erik, Sampy and Nathan for lots of useful information, and of course you can go to codeplex if you want to check out the code yourself. I hope that you like what you see, that you understand that we are learning many of these concepts as we go, and that we are very open to feedback. We know there are still some issues with the code, Sampy touches on some of them in his post, and for many of those we have a plan for improvement. I also expect that there will be decisions we’ve made that some people will disagree with, but I’m ok with that… let us know what you would have done instead (no, we aren’t asking you to fix it, just let us know or point us at a better example) as we are always learning and considering new options.
Thoughts on this post? Feel free to reach out on Bluesky!