Tales from the Evil Empire

Bertrand Le Roy's blog


Bertrand Le Roy

BoudinFatal's Gamercard

Tales from the Evil Empire - Blogged

Blogs I read

My other stuff


February 2012 - Posts

Leaving the Evil Empire

Crossing a bridgeTL;DR: I’m leaving Microsoft to found my own company. My involvement in Orchard continues unchanged.

It’s been almost nine years. Nine years at Microsoft, first as a developer, and then as a program manager. I’ve worked on ASP.NET versions 2.0 to 4.0, ASP.NET Ajax, Ajax Control Toolkit, then on integrating jQuery into the Microsoft developer’s toolbox, and of course, on Orchard. I’ve made mistakes, errors of judgment, but I like to think I’ve learned a lot along the way, that my blog has helped many who were learning or struggling with the technology, and that I’ve built a few really cool things.

Most of all, I’ve changed.

When I got hired by Scott Guthrie et al., Microsoft was for me the Mecca of software development, the place where the amazing, superbly integrated software that I loved was made. I thought ASP.NET was the best group at Microsoft, and the most innovative. It was the zenith of my career. So I thought. During those nine years, I saw how the sausage was made, and I understood that innovation was and should be less centralized, and that open-source and community-driven software was a lot more exciting and promising than anything that a single actor could come up with, no matter how big it was. Maybe because it was so big.

At the same time, the world changed.

Almost all sectors of human activity have started to move away from a hierarchical, top-down model, to a distributed one. It takes the form of open source, of peer-to-peer, or of social networks.

I have a conviction that this is only the beginning of a profound change in our societies, that innovation is considerably more likely to occur in cooperative networks of small structures than in large competing corporations.

All this, plus a number of ideas that I can’t possibly develop at Microsoft, led me to the decision to quit my job and to found my own company.

So what does this mean for Orchard?

Not much. Let me explain what Orchard means to me. Before Microsoft hired me, I had spent two years building a CMS on ASP.NET, that was very targeted at rationalizing our web site development business. I knew at the time that most web sites are first and foremost content-driven. In the ASP.NET team, the focus was very different: the technology was built for business applications, not really web sites. From the start, I advocated for an approach that gave contents a more prominent place, ideally through a new content-centric framework. Eventually, others came to similar conclusions from different starting points, and the time became right for Orchard to begin. I jumped in enthusiastically.

In other words, Orchard is something I’ve wanted to do for a very long time, and I care about it very much. We still have a lot of work to do on the platform, and I’m going to be a part of that.

Orchard is also one of the first projects started by Microsoft to make such a full transition to a community-driven project. From our beginnings where 100% of the code was produced by a team of a dozen Microsoft employees, we are now able to produce amazing releases such as Orchard 1.4 with only two full-time employees, because the community has stepped in to produce the new features. Governance of the project has been transferred to an elected steering committee.

For me to leave Microsoft and become a part of this community only makes sense.

My new company, Nwazet, is focused on Open Source software and hardware. The hardware part won’t surprise you much if you’re a regular reader of this blog. With my business partner and friend Fabien Royer, we’re in the process of building amazing new products around Netduino microcontrollers.

And… That’s about it. I’m very excited about this change. If you or your company need help on Orchard projects, custom electronics or both, hire us!

More than one driver for a single Orchard part

This picture has nothing to do with the post. Haack won't like it, so be it.Drivers in Orchard are responsible for taking content parts and using them to generate shapes for the rendering engine to transform into HTML. A little known fact is that there can be more than one driver for any given part. You might be wondering what this can be used for: one shape per part seems like a reasonable assumption.

I’ll show one case where this ability to add a driver to the one that already exists came in really handy.

One of the sites I’m working on is making heavy use of taxonomies. The customer wanted to add management screens for the order of terms in any given taxonomy, that had some interesting specific features. We wanted a couple of links to that additional screen right inside the existing UI for a taxonomy field. I could have created a new part, but it would have never made sense unless a TermPart was already present. Orchard is so extensible in fact that extensions are extensible, so in a completely separate module from the original taxonomies, I created a new ContentPartDriver<TermPart>:

protected override DriverResult Editor(TermPart part, dynamic shapeHelper) {
    return ContentShape("Parts_Taxonomies_Term_OrderLink",
            () => shapeHelper.EditorTemplate(
                TemplateName: "Parts/Taxonomies.Term.OrderLink",
                Model: part,
                Prefix: Prefix));

Both drivers will run, and they will both emit their own shape. Each of those shapes can in turn be moved around using placement.info. This driver and the template to render the new shape is all I had to write. Here is the end result:The new links inside the term editor

This is a pretty nifty way to enrich existing admin UI for any content type, don’t you think?

More Posts