Although PostSharp and aspect-oriented programming are still considered new by most of the .NET community, it's already been five years this month since I started the project. It's a good opportunity to look back, explain how the project started, what it has become, and where it goes.

Reasons to Start

PostSharp started at the end of summer 2004 when a colleague drew my attention to aspect-oriented programming. AspectJ was already popular in the Java ecosystem; there were a multitude of small AOP projects for .NET, but all of them were in bad shape and did not look attractive to developers. As it turned out, all of these projects died after they missed the upgrade to .NET 2.0.

My first attempt to implement AOP was to use System.Reflection.Emit, but I quickly figured out that I needed a better tool for the job. The tool would allow for any edition of an MSIL assembly. There was simply no good tool available, so I took the decision to start one. Coincidentally, Jean-Baptiste Evain took the same decision roughly at the same time and developed Cecil, now a part of the Mono project. Because a coincidence never comes alone, Jean-Baptiste is also a French speaker and he lives in Lyon, a city to many respects similar to Prague, in the surroundings of which I've lived last 8 years. There are, however, big differences in the approach and the set of features offered by these products (PostSharp being more a framework, Cecil a library).

Of course, finding a good problem to solve is not a sufficient reason to start solving it. As always, psychological reasons are of uppermost important.

In summer 2004, I was just realizing that I my career in Czech Republic was stuck in a dead end. I was realizing that my employer was a body shop and got no chance to leave it in short time. They sold me to a telecom operator called Oskar (now Vodafone); I was now coding business processes in PL/SQL and was discovering, at own expenses, what it means to work in a corporate environment. I eventually staid 3 years in this company and never got successful.

So, while working in Oskar, my rationale for PostSharp was to get professional recognition with the intention that I could escape from the traps of being a commodity software developer. I had another reason for PostSharp, although not rational: I just needed some real food for my brains; I needed a project of my own and an existence outside the constant pressure of 7 levels of hierarchy.

With respect to these objectives, the PostSharp project was certainly a right decision and delivered all expectations.

While working at Vodafone, I often wondered how many people were in my situation. How many talents are crushed by hierarchy and bureaucracy? How much does it cost in terms of productivity? How much does it cost in terms of missed opportunity of happiness? I believe many of you live the same difficulties.

There was, however, another reason for starting PostSharp, an unofficial one: in summer 2004, we just got our first baby and my wife started to go to bed every night at 9PM. So what can you do when you are a real programmer and get bored in the evening? To program, right? You maybe got the real reason of PostSharp. I worked on the project every night from 9PM to 11PM.

Times have changed since this summer; we now have 3 kids and no time left in the evening!

Freelancing

It took me two years, at this pace, to publish the first alpha release of PostSharp, including PostSharp Core and PostSharp Laos. In fall 2006, people started to show interest for PostSharp. The company X-tensive.com started to work on DataObjects.NET 4.0 and decided to use PostSharp. Starcounter decided to use PostSharp in their product and sponsored some development. I understood there was some commercial interest and it gave me courage to continue.

In fall 2006, we already all knew at Vodafone that our jobs would be outsourced to IBM. As it turned out (we did not know it at this time because of their white lies), most jobs would be offshored to India. But instead of being transferred to IBM as most of my colleagues did, I preferred to simply leave and to use the firing indemnity to start as a freelancer.

So at the end of spring 2007, I started as a freelancer. My objective: to work part time on PostSharp and part time for customers.

From this moment, things began to accelerate a bit.

In March 2007, I released the first feature-complete version of PostSharp.  In August 2007, I presented the project to the European Conference on Object Oriented Programming (ECOOP). I published the first candidate of PostSharp 1.0 in September 2007 and started to work on PostSharp 1.5.

From November 2007 to January 2008, I was lucky enough to work with Roman Stanek on his new start-up Good Data, which greatly helped me to better understand the business of software.  Then, from March 2009, I have worked part time with Starcounter; I am helping them building a new object-oriented database server hosing the CLR.

In December 2007, I was interviewed on .NET Rocks online radio. Then, in 2008, I virtually toured Europe and presented the project in Poland, Germany, Sweden, Netherlands, and Czech Republic. PostSharp 1.0 RTM was announced in September 2008 during the conference in Prague.

In fall 2008 I started to realize that the current business model did not work: a part time was not enough to maintain and promote the project; releases were too slow to come to market. I realized I needed to work full time on the project, which also meant that the project had to make money. So, by November 2008, I decided to turn the project commercial in two phases. During the first phase, the project would still be open source but commercial licenses would be available, basically, for volunteers. It proved to be a complete failure. During the second phase, the project would be only commercial. This phase is to come this fall.

PostSharp 2.0

So by January 2009 I started thinking about PostSharp 2.0. I decided that this version would have a Visual Studio add-in. I contacted Pawel Hofman, the author of TytanNET, and he accepted to help me with this work. The add-in was fully functional in June 2009. In parallel, I started to work on a fully new version of the aspect framework, in replacement of PostSharp Laos. An aspect framework that would last 5 years with backward compatibility. At the time of writing, the job is almost done and, as far as I can judge my own work, the result is great. PostSharp 2.0 will proudly stand in comparison with AspectJ (I did not say PostSharp will offer all the features of AspectJ). I will blog later about technical features of PostSharp 2.0.

So you heard it officially: PostSharp 2.0 will be commercial. There will be a community edition, free as beer, with a limited set of features. Source code will be available under a blue print license. There will be give-away copies for open-source projects and opinion leaders.  And there will be a real strategy for ISVs who want to integrate PostSharp into their product. So most of you will (hopefully) pay for the product; it's just fair and I think most of you guys expect it and think the same (this was clearly the dominant opinion in the February's Community Survey).

Good news for all users is that there will be a real company behind the product. So far, I am running the project as a physical person (freelancer). There will now be a real company, a real business plan, real investors who risk their own real money, real attorneys and so really on.

Here's what you can expect next months:

It will still take many months before the company is ready to function as a company. But before the company is ready, I will start releasing previews under an evaluation license. You can expect a first preview still this month. This preview cycle will help stabilizing the product and get feedback on the new architecture. Remember that this architecture is designed to be backward compatible during 5 years, so your feedback will be crucial. Commercial licenses some time later, as soon as we will be ready both legally, commercially and technically.

Summary

During last 5 years, PostSharp has grown from a pet project to the leading aspect framework for .NET (many popular application frameworks can do some AOP, but cannot be called aspect frameworks). PostSharp has a large user base composed principally of professionals who rely on the product for critical applications. This month is a turn for PostSharp: we are in the process of creating a company to incorporate the product; we are to release first previews of PostSharp 2.0 with some breaking innovations for professional users.

Happy PostSharping!

-gael

 

Comments (13) -

Ajay N
Ajay N
9/1/2009 7:12:00 PM #

Wow Gael,

This is great news for PostSharp. Looking forward to 2.0.

Regards,
Ajay

Sean Kearon
Sean Kearon
9/2/2009 1:04:02 AM #

Gael, it's interesting to hear some of the story behind PostSharp and I am really looking forward to 2.0. Best of luck with the commercial venture too!

Sean

Alex Yakunin
Alex Yakunin
9/2/2009 12:24:46 PM #

Geal, the post is great. My best wishes to you and PostSharp 2.0!

Karl Off
Karl Off
9/2/2009 9:39:36 PM #

Like everyone else, I couldn't agree more and think this is a great choice for yourself, PostSharp and users. I look forward to turning a 'customer' of your new venture. Good luck!

Karl

Jay Cincotta
Jay Cincotta
9/3/2009 5:48:07 PM #

Hi Gael,

The more I learn about PostSharp the impressed I become with it. This behind the scenes story further adds to my respect for PostSharp and for you personally, Gael.  Best wishes for great success with PostSharp 2.0!

Cheers,
Jay

Often the difference between a successful person and a failure is not one has better abilities or ideas, but the courage that one has to bet on one's ideas, to take a calculated risk - and to act."
- Maxwell Maltz

Clement
Clement
9/4/2009 3:00:03 AM #

Gael you lead your boat real good.
Keep up with the good work. I know I'd be willing to pay, even for postsharp 1.

Miguel Madero
Miguel Madero
9/6/2009 3:35:25 PM #

Gael,

It's good to know the history :) I've been following PS for over a couple of years and I'm glad to know it's taking a good turn. Best of luck to you and PS 2

pejvan
pejvan
9/9/2009 1:06:06 PM #

Hi Gael, it's really nice to share the history of postsharp and I agree 100% with you that many developers are losing their mental health, wasting their time and creativity under a heavy and unproductive bureaucracy.

Another point I would like to raise, is that for many people working under the same bureaucracy, it's difficult to get a new product such as PostSharp 2.0 onboarded by the corporacy. This would probably prevent them from using PostSharp because they do not have any input to provide in the decision making process and that onboarding software takes years in many companies (lots of the companies I visit still use Office XP (2002) and Visual Studio 2005 for example)...

What would your take be on that?

Gael Fraiteur
Gael Fraiteur
9/9/2009 1:27:03 PM #

I am aware that it is difficult for developers in some corporate environments to push new technologies. Sadly, if companies are reluctant to adopt new versions of Microsoft products, I would consider it impossible to adopt a product like PostSharp.

Hopefully, the new company behind PostSharp will gradually give more trust, so it will be easier to get companies that are willing to adopt new technologies, but expect more solid vendors than a physical person.

pejvan
pejvan
9/9/2009 3:31:57 PM #

Hi Gael,
Thanks for the reply.
What I was also meaning, is that it's possible to use free software in big bureaucracies, but difficult to get approvals for little stuff. I was once in a fortune 100 company that didn't approve a $60 piece of dev tool I badly needed.

Gael Fraiteur
Gael Fraiteur
9/9/2009 5:15:28 PM #

In big companies, the procurement process is often more expensive that the acquired item itself :). So try to make a bigger order (for instance 25 users @ 200 EUR), maybe they will take it seriously :D.

Anyway - there will still be a free community edition with a very decent set of features.

Alexander B.
Alexander B.
11/4/2009 5:42:34 PM #

Hi Gael,

Thanks for great product. I managed to remove thousands of repetitive code lines in my current project using PostSharp custom attributes. Hey, it really works! ;)

One question about older versions of PostSharp. Will PostSharp 1.0 and 1.5 remain free after commercial release of PostSharp 2.0?

And, one suggestion, if you will. Now PostSharp provides quite low-level support for AOP. Of course, here I speak from application developer point of view - even using PostSharp.Laos and PostSharp.Public you have to write custom attributes. Very probably, most application developers require the same set of attributes (at least many of them). Do you plan to develop something "above" PostSharp? Some library with ready-to-use sets of attributes?
Of course, I looked thru existing solutions, like Log4PostSharp, for example. But... they look quite disorganized and often not well documented.

Gael Fraiteur
Gael Fraiteur
11/4/2009 6:06:06 PM #

Hi Alexander,

PostSharp 1.* will remain free, but will be unmaintained for non-commercial customer. Additionally, once we will launch PostSharp 2.0 commercially, it will not be possible to download 1.* unless you registered before the commercial launch.

We plan to deliver ready-to-use aspects, but as free sample code, and because needs vary too much to offer a general solution with reasonable complexity. Some vendors will provide supported aspects for their own tools (as Gibraltar and SmartInspect are doing now).

Pingbacks and trackbacks (1)+

Comments are closed