The Great EPiServer Informed Response
Some of you may have picked up on a blog post entitled the ‘Great EPiServer Rant‘ posted by Fredrik Holmström. I’d encourage you to read it for yourself and see what you think.
If you find yourself agreeing with Fredrik, then please read on, as the EPiServer developer community have made great strides in the past year improving the same aspects that Fredrik finds annoying.
I’ve listed some direct responses to the points Fredrik made in his post. I’d welcome your comments.
The Development Process
Any EPiServer developer will recognise and remember the frustrations that came from having to manually add and update PageTypes in the database especially when working across several environments. It was a royal pain, but not any more. The EPiServer development process has moved on.
I just cannot imagine starting any new EPiServer project without using PageTypeBuilder (by Joel Abrahamsson), which decouples your code from the EPiServer database, and in one fell swoop does away with any need for workarounds and central ‘development databases’. This tool has been actively developed and blogged about since June 2009. Its an invaluable tool for any new EPiServer project. Look into it and if you choose to ignore it… well, good luck.
Everything isn’t a page
I couldn’t agree more, accurately distilling requirements down into a sensible domain model is a non-trivial problem during any software design phase. It brings to mind the following quote:
Remember that all models are wrong; the practical question is how wrong do they have to be to not be useful
George E. P. Box from Box and Draper, Empirical Model-Building, p. 74
Surely a content management system using a domain model based on the concept of pages is reasonable? It has its limitations sure, but there are sensible ways available to extend this model. The latest version of EPiServer (CMS 6) has introduced the dynamic data store, an API that allows the storage and retrieval of arbitrary data structures. Further still, these can be linked directly with the overriding page model via the Page Objects extension API.
If you still feel like you’re having to push a 50″ square through a 2″ round hole then frankly you’re doing it wrong. Perhaps EPiServer wasn’t the right CMS system for your project? Perhaps you are trying too hard to utilise a CMS to store alternative business data that shouldn’t fall under the remit of a CMS?
Is it really fair to judge a piece of software by what it can’t do rather than what it can? EPiServer won’t meet your requirements as a business accounting and reporting system but as a Web Content Management system it certainly can.
There is no spoon (or documentation)
The available EPiServer documentation has improved immeasurably over the past two years, but thats not to say it can’t improve further. Much of the improvement has come from the developer community who are invited to allow their content to be aggregated into the EPiServer World site. If you follow this then you’d surely have seen many great posts by interested EPiServer developers and in particular you couldn’t have failed to notice Frederik Vig’s excellent series from December 2009 entitled ‘Creating an EPiServer Site from Scratch‘, which should be considered the starting point for any developer new to the EPiServer platform.
Agile – is that a cactus or something?
TDD is an extremely valuable approach and certainly isn’t impossible to do with EPiServer. The EPiAbstractions framework (credit Joel Abrahamsson) is a library of facades that wrap the core EPiServer classes and exposes virtual methods so you can mock, isolate and test to your heart’s content.
However the difficulties in using TDD within an EPiServer project aren’t limited to the EPiServer API. They are passed down from the ASP.NET WebForms framework itself, which is incredibly difficult to unit test because of the strict dependency that the codebehind file has on the HttpContext.
Again however there are viable solutions available. One such is the WebForms MVP framework (of which EPiServer already has its own version – EPiMVP – thanks again Joel), which facilitates a better separation of concerns between UI and domain level logic. This enables you to say hello to niceties such as Dependency Injection and other methodologies that facilitate code testing.
Conclusions
In the two years I’ve been an EPiServer developer, there has been a noticeable shift from EPiServer towards fostering a strong developer community. This has paid dividends, as the community has provided a great number of excellent blog posts/solutions that have truly improved the EPiServer development experience.
The continued interest in EPiServer WCM products from potential customers demonstrates that a great many developers are successfully delivering high-quality WCM solutions using the EPiServer platform. With the continued input from the community, I’m sure this will continue.
Put simply:
Happy developers = Successful implementations = Happy customers
*(and yes, you can put me down as a happy developer!)
Excellent post Mark!
I think you summed up many of the available solutions that are available already.
It should also be added that the EPiServer dev team are aware of many of the problems and I know there are plans to fix them in future versions.
While it’s easy to complain about problems and bad/old architecture in frameworks I think it’s important that we take a pragmatic approach and point them out to the developers in a constructive manner and/or try to provide ways of fixing them ourselves.
Given that we use EPiServer, as with any system, we need to constantly give EPiServer’s developers feedback based on our experiences. The EPiServer user groups in Stockholm and Oslo is one such forum and we need to find others as well.
Joel Abrahamsson
20 Apr 10 at 4:49 pm
I have a feeling that EPiServer, like many other companies that are closely tied to Microsoft, have followed the “Microsoft way” of developing. And since MS themself, at least not publically, haven’t pushed for instance TDD, Unit testing, IoC or any of those other acronyms coming from the Alt.Net world neither have EpiServer. And since many of the companies that uses EpiServer has a similar relation to MS and EpiServer it really hasn’t been that “important” to us either.
What has happened with MS (and the whole chain down from there) is that since the introduction of asp.net MVC (or around that time) this is something that MS talks about too. And not in terms of being a fun/cool alternative but rather something that makes it easier to deliver business value. So if you look at what has happened in the last year or two the development process has changed a lot for the better. My hope is that the more people, both in the .Net world in general and in the EpiServer world, starts to talk about these topics the more open source projects like the ones you mention above gets developed and when EpiServer sees where the wind is blowing I have no doubt that they will follow.
Stefan Forsberg
20 Apr 10 at 8:40 pm
Social comments and analytics for this post…
This post was mentioned on Twitter by joelabrahamsson: RT @ev2000: My response http://bit.ly/9eBXGZ (to http://bit.ly/cYut0A), some available solutions to the apparent ‘problems’ with #EPiServer…
uberVU - social comments
21 Apr 10 at 3:58 pm