Oxite: Open eXchangable Informative Troubled Engine
This is a post about Oxite, but it is actually not about the code base. There has been a lot said about this, and I think that I can solidly put myself on the side that spouts WTF and now seeks access to memory altering drugs.
What I wanted to talk about here is actually the way that this was handled. It didn't take long for people to start noticing the actual code quality of this in contrast to its marketing promise:
We heart you so much, that we thought of everything. Oxite was developed carefully and painstakingly to be a great blog sample, or a starting point for your own web site project with CMS needs. Its line-up of sexy attributes includes: provider-based architecture allowing you to swap out database and search providers (SQL Server DB, local and Live search providers included), built for testability and hence most likely to be voted "hottest in class" by TDD fans (repositories, everything has an interface, etc.)
The community reaction was mostly negative, especially since this was positioned as official sample application. The marketing for Oxite is actually quite amazing, when you consider that they have a channel 9 show, a visit mix site, a really nicely done codeplex site, a push from Microsoft evangelist and other things that I forget.
Very quickly, there was a response from more well known sources at Microsoft. It is interesting to watch the actual phrasing of the responses from those people. You have to admire the level of verbal acrobatics that they had do do. Again, I am more interested in the back story than in the code.
Scott Hanselman has this to say about the way Oxite was released:
I don't know the Oxite guys, and I didn't know they were working on anything. Thing is, anyone at Microsoft can put a project together, blog about it, and say "this aims to be a good example of...". Clearly it's not a good example and it shouldn't be advertised as one.
The fact that PhilHa, who owns ASP.NET MVC, didn't know it was going on, kind of makes that point. Any samples from Microsoft that intend to show a Best Practice should be reviewed by Phil, and certainly vetted by the community. David Nelson nailed that point clearly.
I think that this is really interested. "Anyone at Microsoft can put a project together and..."
Well, actually, no, they can't. Oh, they can do that for personal stuff, but they can't do that for Microsoft stuff. I had the chance to work with the P&P a couple of times, and I had the pleasure of seeing the release process from their side. Some of that is unique for P&P, I assume, but there are things that are certainly shared for all of Microsoft. A security review, for example, or the bloody annoying trademark stuff that give us names such as Windows Pillow Foundation Community Extended Express Edition for Professional Database Developers And Administrators 2008 R4.2.
There are other things, and among them, especially if you put out a best practice app, is to actually talk to the team that own this.
So, they can't do that. Or, to be rather more exact, they shouldn't have done that. Except that it appears that they did, I can see no other option given the information that is publicly available. Because there is absolutely no question that Oxite has been extremely damaging to Microsoft from a PR perspective. The worst part is that it was pushed as "we thought of everything" and "hottest in class".
We can compare those to Scott's BabySmash or to Rob Conery's Storefront (although I don't believe that even at their worst, they would have made me cry). Those were clearly labeled as learning projects, and that made all the difference.
Which bring us to the current state of affairs. Scott Hanselman said something that I utterly disagree with about this:
Oxite is Open Source. If you don't like it, and there are very valid reasons today for concern, I would sincerely encourage you to refactor it and share the results.
Open Source is not a way to get other people to fix bad code. I think that this is the wrong thing to do. However it got there, this was published with the impression that Microsoft is standing behind it. While my response would have been to kill the project, remove the site and deny that it has ever existed, Microsoft has chosen to keep it alive. I believe that by doing so, and I think that they have done so by not either killing the project or officially stating that this is not a Microsoft project, that Microsoft is now accountable for this project quality and its fitness to serve as an example application.
And yes, I do mean that what looks very much like a rouge project being released into the wild is now Microsoft's problem to fix. See above for the difference between stating the source (Microsoft vs. individual) and the effect that it has on the perception of the project.
Rob Conery's has picked up the ball and seems to be making rapid progress at it, judging from his twitter stream.
I think that this is the best solution all together. We get to see a good restructuring approach, and knowing Rob, we will end up with a good sample app. More to the point, that was the appropriate response to what happened.
It also has another side effect, which is pretty major one, it turning all that negative PR into a positive one, by stepping in, acknowledging the problems and fixing them.
Comments
on the ccodeplex page it clearly mentioned 'sample'.this is an indication that the codebase is not mature! this is also what i had twittered on the day of the release...
do take a lot at Rob Conery about his refactoring...
Gerard: And on the Mix page, which is where most people seem to be reading about Oxite, it seems to be labelled as anything BUT a sample.
@Gerard, there is a huge difference between crap and mature code. The Oxite codebase is very much the former, and it can not be excused by saying it's "not mature".
What is adding insult to injury is other mvp's/ms employees are making blog posts toting that oxite is great. I was flabbergasted by this post made by Nigel Parker:
blogs.msdn.com/nigel/archive/2008/12/10/oxite.aspx
From his post: "Oxite project I believe his team is investing in exactly what the .NET web community is asking for"
What's even worse is that in the comments he notes that he personally hasn't even looked at the source code yet. These types of posts just add more fuel to the fire.
@Gerard, they changed the Oxite page yesterday or the day before. Id did say that Oxite was much more than that before. They fixed the text just before Rob posted his refactoring initiative.
The MIX stuff got the Microsoft imprimatur because it 'looks good'. I mean, who uses words like 'sexy' and 'hottest in class' except for marketing types (including web design folks, who are by nature marketers). Whenever I hear 'sexy' about software, I think: "you don't understand or care about this at all, do you?", it's sexy because it's sellable. The line about TDD makes it sound like good design is just a bone thrown to some rabid cult.
+1 on RobCon's public refactoring. But he's still learning some of the ideas he's trying to implement and, given the hostility of to the project, he's probably going to take undeserved heat for any missteps he makes. I agree with Oren in principle that Open Source is not a way to get people to fix bad code, but why not take advantage of momentum here and help out. The adoption of MVC with .NET could sink or swim depending on the samples. An No, the current sample architectures (CodeCampServer, Cuyahoga, SharpArchitecture) cannot be shoe-horned in to Oxite because they all make different choices.
Very well put, Ayende. Nice post!
The fact that this has been billed as a sample is, I believe, exactly what has caused the furore.
A sample is "a portion representative of the whole" and it is clear from a few cursory glances of the source code not to mention the online reaction that this is not what the community or the designers of the framework are striving for with ASP.Net MVC and separation of concerns. When Oren points to the recent communications coming out of Microsoft that were "learning" projects he is spot on - Oxite has been positioned so incorrectly it has been deservedly criticised.
Let's hope they can rise out of the mire which by the look of Rob's recent post is very promising.
<cleaning
Windows Pillow Foundation Community Extended Express Edition for Professional Database Developers And Administrators 2008 R4.2.
I so am going to release "Tree Surgeon Windows Extended Enterprise Directors Cut Edition Revision 2.0 Service Pack 3 Limited Edition" next week (aka TSWEEDCERSPLE)
What?!
You don't think that this is a probable name?
I am actually worried that MS will sue me for NDA violation as a result.
Windows Pillow Foundation Community Extended Express Edition for Professional Database Developers And Administrators 2008 R4.2. Just missing a GDR. Oh no that's .NET 3.5 sp1.
robcon is teh sexee and stuff.. but seriously, much respect for the guy to pick up a project like that and work some magic. Seems like he's putting in major overtime to get it done.
I've been on the bad end of marketing promises before. It's not fun, and you feel like the bad guy even though you had nothing to do with it. I don't know if that's the case with the Oxite guys, but I withhold judgement because of that.
If I was on the team, I definitely would have at least pinged haack about it though.
@Bil Simser
Yeah, finally. Will it have Microsoft Build Engine Standard Edition for .NET 3.5 Service Pack 1 Refresh 1 (aka MsBuild) support?
I know this is bad and shouldn't be done but I couldn't resist
(this should clearly be taken as a joke and is to make light of the situation)
The Microsoft English Dictionary defines "oxite" as:
to not understand intuitively
to perform marketing blindly (with)
to experience pain while refactoring
Other forms of the word include "oxites" (present third person singular), "oxited" (past participle) and "oxiting" (present participle).
Maybe once Rob is finished correcting oxite we can change the definition to something a little more positive
I am going to try to get this word in as many times as possible in my next meeting to see if it will catch on
Spring.Net and Castle are both great frameworks that even in their infancy were both simple but powerful.
The Microsoft approach is the opposite, pack in as much Wizz-Bang and the come up with some giant hyperboles for every facet of it and deliver on none of them.
I had a similar reaction to the non-code aspect of this mess and wrote about it as a branding problem.
www.hanselman.com/.../...lesOxiteAndCommunity.aspx
"So, they can't do that. Or, to be rather more exact, they shouldn't have done that"
I think one of the positives to come out of this will be that this sort of attitude will change, and more of the dev community will realize that not every blog, sample, and project that comes out of MS is coordinated company-wide, adopting the same standards and practices, or monolithic and perfect in any way. The Oxite team obviously could do that and had the ok to do that, and not from the P&P group or MVC group or anyone outside their own.
We can all benefit from this, including bad examples and anti-patterns (as long as they are noticed and acknowledged, like this one), and learn to not pretend that everything coming from MS goes through some magical process that purifies all (and then get self-righteous when it's crap anyway :)). I'm sure there are different coding styles, philosophies, standards, and release practices among Windows, Office, Xbox, Zune, Server & Tools, MSN, Live, etc., and knowing and seeing this should help us MS-dependent devs see and try some different flavors for ourselves.
Oren, I agree with you 100% on everything you said. We have been working with the Mix site team to try to get the page updated to better reflect the reality of the situation. You can see the first changes live now: http://visitmix.com/lab/oxite.
Thanks again to everybody in the community. I LOVE to see the sheer passion and love everybody shows for writing good code.
@Sergio; I wasn't able to see the new codeplex page, since I was using a crappy GPRS connection, but it really seems they changed it yeah; it now says 'We aren't a sample-building team'. Hmmmm... it sounds even a little... argh, wont even say it. I certainly do agree that the Mix page (as @mendicant mentions) gave the wrong impression, especially after the media picked it up.
Man you know i agree with you Oren. All I can say is hopefully we can take the learnings from this, see it as a growth experience, and do better in the future.
Its interesting that neither Haack nor Hanselman knew about this project considering their involvement in their respective blog engines.
I believe you are manipulating some words to make your point, and I don't think you need to do this, as your point is strong anyway. Hanselman has said everything you are saying, still you disagree with the guy... When he says "Anyone at Microsoft can put a project together and..." he clearly says it like its a problem, and you criticize it as if he was defending the practice.
Killing the project is not going to help. I completely agree that it shouldn't had been advertised as the best sample app ever, but what is done is done. Now let them fix it, as you said, it's their burden now. If everything that comes out bad on the first show is to be killed almost nothing would survive. Of course, they should remove the "best sample ever" label, and just THEN go on.
Finally, anyone who has put their hands on the code KNOWS it is still on the very beginning, and shouldn't be taken seriously at this point. It's an ongoing project and should be seen like that. The problem is that it's Microsoft's, and the whole world wants to opinion on what is going on.
What I was trying to do was create a distinction between a Microsoft project and a Microsoft employee's project. There is a big difference in the perception between the two.
As far "very beginning", take a look at Rhino Service Bus, it is about a week old at this point, still missing a lot that I would like to have there.
Code quality isn't something that you mature into. It is something that you start working on from day one.
I agree on the first. They are gonna have to deal with that.
Regarding the second one, yeah... I know... I believe in that as well. But it's not for everyone, is it? Even Microsoft seems to need to learn as they go.
See Rob Conery's example... The storefront thing started wrong in my opinion, and in a lot of people's opinion. He is starting to listen to the feedback (after some too long time), and some good practices are entering his app (even though I think it still needs a lot of rework). Can't Oxite go the same way?
I'm trying to say that I don't think killing the project (and idea) is the right way for this case.
Giovanni,
Rob's effort was never about "let me show you how it is done", but it was "let us do this together".
I think that what he is doing is something of great value for the community in large, not very often you have the chance to actually experience the learning process, rather than the completed work.
For Oxite to go with the same path, it should have been marketed differently
I agree. And as I said, they are gonna have to deal with that, because people will continue to criticize it if they don't change the positioning of the project. Continue to show it as the best sample ever is not smart at all as almost nobody seem to agree and that is crucial.
It seems that the problem here is the marketing right? Not the project...
Do you think they will take a step back and reposition the project? Well... if they don't, then I must agree with you: kill the project. If they do, fine!
Regarding Rob's project, I also believe the Storefront app helps, as the Oxite refactoring he is doing now helps too. I used the example as a good one.
Giovanni, have you been back to the MIX Oxite website lately? Jonathan Carter and I pushed really hard to have them change the text on that website and worked to get the most offensive sections removed. We are still working on the Codeplex site.
Any feedback on the new text would be most welcome :).
Rob effort has always been great.
Jason, that is very sad that you have to "pushed" the offenders to change something that they should do themselves.
Comment preview