Build Servers and Deploying Licenses in Source Control

by Gael Fraiteur, 12 March 2010

I got many questions last weeks about deploying PostSharp 2.0 to a build server and deploying licenses in the source control repository. Since these issues are somehow related, I answer them in a single post.

The updated CTP 4 (build 1009) contains two improvements that are good to know about.

1. Running PostSharp in an unattended session

Roy Osherove reported a problem when PostSharp 2.0 runs in a GUI-less build server. The cause of the issue was the tray icon of the pipe server. The new build will not attempt to open the tray icon if PostSharp detects that it runs in unattended mode.

PostSharp uses the property Environment.UserInteractive to determine whether the process is attended or not. If, for some reason, this detection gives unsuccessful, you can forbid the pipe server to open the tray icon by setting the following machine-level registry setting:

Windows 64-bit:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\SharpCrafters\PostSharp 2.0]
"TrayIconDisabled"=dword:00000001>

Windows 32-bit:

[HKEY_LOCAL_MACHINE\SOFTWARE\SharpCrafters\PostSharp 2.0]
"TrayIconDisabled"=dword:00000001

2. Installing a license in the source control repository

PostSharp makes it very easy to deploy license keys: you can include it in your source control repository. First, paste the license key in a text file. Then, you need to tell PostSharp where the license key lies. This can be done by setting the MSBuild property named PostSharpLicenseFile to the full path of the license file.

One of the way of setting an MSBuild property is to edit the project file using a text editor and include the following before importing PostSharp targets:

<PropertyGroup>
<!-- There should probably be line break in the property -->
<PostSharpLicenseFile>
$(MSBuildProjectDirectory)\..\..\MyPath\PostSharp.license</PostSharpLicenseFile>
</PropertyGroup>

There are other ways to deploy the license key. For instance, you can put it on a network share and use group policies to set the PostSharpLicenseFile environment variable to the location on the share.

Note that sharing a license key is only legal if you have a company license key (Commercial License, Site License, Global License). Since other licenses (community and personal) are bound to a specific person, they cannot be shared.

3. Licensing of build servers

Build servers don’t need their own license. PostSharp will not attempt to enforce licensing if it detects that it runs in unattended mode. Again, it uses the property Environment.UserInteractive. The TrayIconDisabled registry setting has no effect on license check.

Now, this check does not work for any reason, you may use the license key of any licensed user for the build server. This will not be consider a license infringement.

As you can see, we try to make our licensing system as no-nonsense as possible. Our philosophy is that paying customers should not be handicapped by overly restrictive license enforcement. Something that not every software (or media) publisher understands…

Happy PostSharping!

-gael

SharpCrafters’ E-Shop is Open

by Vaclav Svacek, 11 March 2010

We were under daily assaults of people eager to buy PostSharp licenses. Now it’s ready. You can purchase licenses of PostSharp 2.0 online – or get a free community license.

Payment processing is handled by FastPay by FastSpring, an established and trusted partner with a large selection of payment types.

How it works

Clicking on the Purchase button brings you to a simple calculator designed to help you choose the best option based on the size of your team and your support requirements. Maybe you have already seen it since it’s the third most popular page of the site – just after downloads.

In order to proceed with your purchase, you need to be registered on our website. Don’t worry, you will not need to remember yet another username and password. Instead, our Login / Sign-In process uses OpenID technology.

After you specify licensee and review your order, you will be redirected to FastSpring to make a payment. You will then receive you new license by email.

Community License

PostSharp 2.0 offers free Community Edition with limited set of features. You can apply for your free Community License on the Compare PostSharp Editions page.

Summary

Online purchases are one of many steps in moving PostSharp from an open-source project to a commercial product. We have tried to make our e-shop easy, helpful and convenient and we hope your experience will confirm that.

As always, don’t hesitate to let us know, should you have any questions, concerns or suggestions. Your feedback is always welcome!

Happy PostSharping!

Vaclav

Policies for PostSharp 1.5 Legacy

by Gael Fraiteur, 11 March 2010

Since we announced the commercial launch of SharpCrafters, many members of the PostSharp community have expressed concerns about further support of PostSharp 1.5. With reason: version 1.5 is still the only one labeled stable, and 2.0 is still officially a technology preview.

Here are our policies for further support of PostSharp 1.5:

Rule 1. We don’t take back what we gave away

Licenses are irrevocable. If you had a license on PostSharp 1.5 yesterday, you have it forever. SharpCrafters has no right to revoke GPL/LGPL licenses.

Rule 2. We won’t even change the license on future builds of PostSharp 1.5

All future builds of PostSharp 1.5 will be licensed under original GPL/LGPL license agreements. We make this commitment to guarantee that no one gets into trouble in the middle of a project. If your team approved the PostSharp 1.5 license, there is no need to reassess your decision.

Rule 3. We will release a last service pack in a couple of weeks. Free support will then be discontinued.

In coming days, we will correct all pending bugs and release PostSharp 1.5 SP1 under GPL/LGPL.

After this service pack has been released, free support on SharpCrafters Forum will be discontinued for non-paying users. Note that the community can still seek and offer help on StackOverflow.

Rule 4. You can acquire commercial licenses and support subscriptions for PostSharp 1.5

For the symbolic amount of 19 EUR (totally, not per user), you can extend your licenses and support subscriptions of PostSharp 2.0 to PostSharp 1.5. That means that PostSharp 1.5 is dual-licensed: commercial and GPL/LGPL.

This offer is limited to June 1st, 2010. If you want licenses and support for PostSharp 1.5, you need to acquire them now, and in the price you get licenses for 2.0. Don’t forget to select the option “License Extension to PostSharp 1.5”.

Rule 5. After the last SP, bugs will be fixed only from your support subscription on a per-case basis

Bugs in PostSharp 1.5 will be solved only for customers with a valid support subscription, and we will withdraw one support case per each customer’s request.

Summary

We are taking smooth steps to move from an open-source model to a commercial model. Our principal concern is to avoid causing problems to the many folks who rely on PostSharp for serious business. However, as you all understand, we can’t provide free support forever on all versions. SharpCrafters’ new free offering is PostSharp 2.0 Community Edition, and all community users will have access to our support forum and hot fixes.

Don’t hesitate to share any concern or question by commenting this blog. Thank you in advance.

Happy PostSharping!

-gael

Announcing PostSharp 2.0 CTP 4

by Gael Fraiteur, 27 February 2010

This is to announce PostSharp 2.0 CTP 4, available for download today. As most our efforts this month have gone to release the company and the new web site, there is no large increment in this build. However, there are two features that could not wait any more:

  1. No more time bomb. All previous releases were hard-coded to expire at a fixed date. This new CTP includes the final licensing system: after a 45-days evaluation period, then you have to choose between the Community Edition and the Professional Edition (and in both case enter the license key). There’s currently no way to get a Community Edition license from the web site; we’ll address that during the next weeks.
  2. Support for .NET 4.0 RC and Visual Studio 2010 RC instead of beta 2. Also, the current version should survive better an upgrade to .NET 4.0 RTM unless they break something.

Note that the licensing system itself is beta, so to know which features are enabled/disabled, please refer to our comparison sheet and report any difference with the implementation.

The next milestone for us is to complete online processes (acquisition of commercial and community licenses). Then the rush will be over, and I’ll be able to prepare a RC with rest, calm and serenity :).

Happy PostSharping!

-gael

PostSharp Going Commercial. Introducing SharpCrafters.

by Gael Fraiteur, 25 February 2010

I am excited to announce the ongoing commercial launch of SharpCrafters, the new company behind PostSharp. As we launched our new web site http://www.sharpcrafters.com/ earlier this week, we decommissioned the domain postsharp.org. The old web site has been serving the project and the community for the last five years.

Thanks for you support!

This is a major step in the life of PostSharp and it’s community of users. For the last 18 months, as the project has grown and got adopted by a raising community of professional developers, it became clear that we had to switch to a commercial model. As the attempt to make a living from services proofed unrealistic, there was only one option left: to make a living from the sales of licenses, which meant to abandon the open-source model. I must insist to all people whose this decision will make angry or disappointed (a minority, I think, yet possibly vocal): going commercial was the only option if PostSharp were to survive.

In this important moment, let me say a couple of words in personal name.

I am extremely thankful for the support I got from the community. Thank you to the thousands of people who downloaded PostSharp and spent time and energy to integrate it in their project. I am fully aware of the risks and costs of early adoption. Thank you to the hundreds who have taken the time to describe their problems the support forum so that I could make the software better. Thank you to companies who have supported the project financially, either by doing business with me or by making important sponsorships or donations, and especially: Starcounter, X-tensive.com, Omicron and a couple of other I am not allowed to name (thank you, David, Daniel, Peter and Yoav). Thank you Carl and Richard from .NET Rocks for the boost you gave to the project before it got any hype. Thank you Ralf Westphal for your extraordinary and sustained help to introduce me to conferences and magazines. Thanks to all guys who presented PostSharp at conferences or invited (particularly Olaf, Michal, and Szymon). Finally, thanks to the dozens and dozens bloggers who shared their enthusiasm.

It’s only because of your joint support that I found the energy, during these 5 years, to strive for the project.

Introducing SharpCrafters

SharpCrafters is the new company behind PostSharp. SharpCrafters has been founded in September 2009 as a limited company of Czech right.

I am especially proud to announce that Roman Stanek accepted to be a private investor and board member at SharpCrafters. Roman is a veteran startup founder. He is the Founder and CEO of Good Data, a SaaS business intelligence platform. Roman was the Founder and CEO of NetBeans (acquired by Sun Microsystems) and Systinet (acquired by Mercury Interactive and later Hewlett Packard). Roman joined our venture in September 2009.

I warmly introduce Vaclav Svacek, who became managing director of SharpCrafters in January 2010. Before joining SharpCrafters, Vaclav was a Technical Team Lead and Solution Architect at Husky Energy, Canada. Vaclav will now concentrate on operations of the company so I can concentrate on what I am good in: programming. Vaclav, I wish you a lot of courage and perseverance, as taking over a one-man business is not the easiest thing on earth (especially if this one man is as stubborn as I am).

So that’s our team today: two full-time employees (me and Vaclav), and a business angel somewhere between the azure and the clouds of California.

Our short-term business objective is to grow from organic resources to a team of 5, which would be a sustainable size to develop and maintain our product… and would allow me to take some rest. We hope to reach this size within one year. Then, we’ll have the ground to think about further developments and products.

Our Business Model

SharpCrafters is a product company. We provide support services to our products, but we don’t live from services themselves. We believe in win-win deals. When a product is good, both customers and publishers are happy, because none looses time in troubleshooting. From a customer’s point of view, contacting support is a defeat. Living from services is like making profit from the unhappiness your customers. It can’t work (unless your customers are unhappy from someone else’s product).

We want to sell licenses of PostSharp (and other products, in the future) to companies who use it for serious business, and we want these customers to be satisfied. We want to continuously improve the quality of our product so that the time our customers and us spend in support and troubleshooting is minimized.

We want people to learn or experiment with aspect-oriented programming – and we don’t want money from them.

Therefore, we have two editions of PostSharp:

  • The Community Edition is free of charges and has a limited set of features.
  • The Professional Edition is fully functional and we charge money for it.

How much do we charge? Less than Resharper. See our price list. We have license types for all sizes: personal, commercial, corporate site, corporate global. There’s an optional Support Subscription including free major upgrades and priority support (see our web site for details).

Students, teachers, bloggers… can request free licenses. I repeat: we don’t want your money if you’re not doing serious business with PostSharp. (Oh yes, disclaimer: there is no right to a free license; SharpCrafters will grant them at its sole discretion according to the information provided by the requestor and the information that can be publicly gathered on the web.)

Finally, our business model favors redistribution of PostSharp by third parties, and we’ll make sure that our offer is very affordable to startups.

What’s Next?

There’s still a lot to do before the commercial launch is complete. The next milestones are the following:

  1. Later this week, we’ll publish a new CTP without hard-coded timebomb and with support for Visual Studio 2010 RC. This new release will support license keys, which means that you can start to purchase licenses :).
  2. Then, we will update our web site so that you can acquire license keys online. (Currently, we only support manual orders).
  3. I need to blog about our legacy policies for PostSharp 1.5.
  4. Finally, we need to complete PostSharp 2.0.

Your Opinion Is Important

We are eager to hear from you. If you have any issue or question with our licensing and pricing model, if it’s just “not working for you”, chances are great that other have the same issue, and we will gladly attempt to address it.

Happy PostSharping!

-gael

Announcing PostSharp 2.0 CTP 3

by Gael Fraiteur, 28 January 2010

I am happy to announce the release of PostSharp 2.0 CTP 3, available for download today.

This is principally a bug fixing release, since more than 40 issues have been solved. The most significant improvement is the Customer Experience Improvement Program (CEIP): the feature, fully opt-in, is able to automatically report unhandled exceptions in PostSharp, and collects some anonymous usage statistics. The CEIP has been included in an intermediate build between CTP 2 and CTP 3, and most issues solved in CTP have actually been reported by the CEIP. For uploading, our implementation uses Microsoft BITS, a background installed with Windows, so the process never interupts your work and does not consume the bandwidth when you're using it (and it very scalable on our server ;).

Except that, sadly enough, there has been no progress in features. We have been fully busy preparing the launch of the new company and the new web site. I'm glad to say that, although we are a couple of weeks late on the technical point, we made good progress with commercial stuff. You'll hear more about that in a couple of weeks.

Just as in CTP 2, the following features are not included in CTP 3 but are planned for a future preview of 2.0:

  • Conceptual Documentation;
  • Reference Documentation and Conceptual Documentation of PostSharp SDK (previously PostSharp Core);
  • Support for Silverlight and Compact Framework.

This release is hardcoded to expire on March 1st, 2010, and in the mean time there will be a new release.

Happy PostSharping!

-gael

Beyond Hello World: PostSharp with Gibraltar Software and SmartInspect

by Gael Fraiteur, 26 November 2009

Tracing has long been the "Hello, world" sample of Aspect-Oriented Programming. PostSharp does not make exception: tracing is still the first aspect visible on the home page, and most of early PostSharp bloggers did demonstrate AOP on a tracing aspect.

Yet, as tracing is a fundamental part of any non-trivial application, some advanced tools are available to .NET developers. Two of them deserve a special attention since their vendor provides aspects that can be directly used with PostSharp: Gibraltar and SmartInspect.

Don't ask me to compare these toolkits: they are actually sharp competitors. Both have good web sites and a free trial, so I can only recommend you give them both a try! And both have identified PostSharp as a natural complement to their product (Gibraltar being the first).

Gibraltar

I have a special moral debt to Jay Cincotta, one of the guys behind Gibraltar, since he recorded an amazing webcast of using PostSharp and Gibraltar together. Jay, thank you very much for this video, I know how hard it is to produce!

With these aspects you can declaratively add Gibraltar logging to your programs by simply tagging whatever methods, classes or namespaces you wish. This lets you add powerful logging to your applications without the effort, complexity or clutter of writing procedural logging code.

  • [GTrace] logs entry and exit from tagged methods including appropriate message indentation.
  • [GTraceField] logs every change in value of a tagged field.
  • [GException] logs exceptions at the point they are raised. This is a handy safe guard to ensure that both handled and unhandled exceptions are logged by Gibraltar.
  • [GTimer] lets you graph method execution time in Gibraltar providing invaluable information to identify bottlenecks and optimize performance.

These aspects (not the toolkit itself) are open-source and are hosted on Google Code at http://code.google.com/p/postsharp-user-plugins/.

For more information, see Using PostSharp with Gibraltar on their web site.

SmartInspect

Following Gibraltar, SmartInspect provides similar aspects:

  • [SiTrace] automatically generates two log messages for each method call: one for entering a method and one when a method exits. You can also log the passed method arguments (when entering a method) and the method result (when exiting a method), respectively.
  • [SiException] records all exceptions occurring in methods enhanced by the aspect.
  • [SiField] lets you automatically record any changes to values of object or class fields.

The aspects can be downloaded from SmartInspect Resources & Extras (look for SmartInspect PostSharp Adapter).

For more information, see Aspect-oriented logging for .NET with PostSharp and SmartInspect on their web site.

Support for Other Logging Frameworks

If you're interested in using PostSharp with Log4Net, remember to check out Log4PostSharp, a project of Michal Dabrowski and Mark Kharitonov. Note that, contrarily to what's now offered by Gibraltar and SmartInspect, Log4PostSharp directly emits optimal instructions, resulting in much better runtime performance. This is not a feature of the logging framework but of the aspect implementation.

Interestingly, there is also some aging project from Eclipse, Build to Manage for .NET, providing PostSharp aspects for the IBM Tivoli platform.

PostSharp Emerged as the De-Facto Standard

What's happening there is that PostSharp is emerging as the de-facto standard for aspect-oriented programming on Microsoft .NET, just like AspectJ is for Java.

PostSharp 2.0 has been designed for the multi-vendor scenario, so that multiple aspects shall merge robustly when applied on the same element of code, even if these aspects come from different vendors who don't know about each other.

This means that ISVs can confidently rely on PostSharp to deliver aspects to their own customers. Good to know: the upcoming price structure shall make it very affordable for small ISVs to redistribute PostSharp free of royalties -- while enabling their own customers to use all professional features of PostSharp 2.0, including the IDE extension, in conjunction with their software.

Happy PostSharping!

-gael

 

Announcing PostSharp 2.0 CTP 2

by Gael Fraiteur, 24 November 2009

I am pleased to announce PostSharp 2.0 CTP 2, available for download today.

Additionally to uncountable bug fixes, this new CTP brings the following features:

  • Support for .NET 4.0;
  • Support for Microsoft Visual Studio 2010 (including the IDE extension);
  • Support for Mono 2.4.

This release is hardcoded to expire on February 1st, 2010. It is not possible to purchase a license yet.

The following features are not included in CTP 2 but are planned for a future preview of 2.0:

  • Conceptual Documentation;
  • Reference Documentation and Conceptual Documentation of PostSharp SDK (previously PostSharp Core);
  • Support for Silverlight and Compact Framework.

Continue good work submitting feedback on PostSharp forum and issue tracker.

Happy PostSharping!

-gael

PostSharp @ MS Fest 2009, Prague, Czech Republic

by Gael Fraiteur, 24 November 2009

I'll present PostSharp and Aspect-Oriented Programming at MS Fest 2009, taking place in Prague, Czech Republic, this week-end (November 28th and 29th), and organized by students of the Math-Phys Institute of the Charles University.

My presentation will be in Czech -- I'm getting used to be the only one not to make the show in his mother tongue (mine is French)...

There will be a lot of fun! I gave the same presentation in Munich, Germany last month, and it was considered an homage to Mr Bean! No, seriously guys, AOP is serious stuff!

-gael

PostSharp 2.0 CTP1 Updated - Visual Studio 2010 Beta 2 and .NET 4.0 Supported

by Gael Fraiteur, 21 October 2009

We have refreshed PostSharp 2.0 CTP with a bunch of bug fixes and, most importantly, support for Visual Studio 2010 Beta 2 and .NET 4.0 Beta 2.

The PostSharp Add-In for Visual Studio currently don't work with Visual Studio 2010, but you should be able to build projects targetting all versions of the .NET Framework.

Note that the pipe server currently does not work with .NET 4.0.

Happy PostSharping!

-gael