EPiServer  /  CMS July 18, 2009

Page Type Builder planned development timeline

Yesterday I received an e-mail from a EPiServer Partner in the UK. They where considering using Page Type Builder in one of their projects and was therefore interested in hearing what my plans are for the project. After replying to the e-mail I realized I had broken one of Scott Hanselmans rules for making your blog suck less: if you get a question and other people than the one asking the question might be interested in the answer, answer the question on your blog.

So, trying to correct my mistake, these are my plans for Page Type Builder.

The present

The current version, which is 0.7.2 is fairly stable but has one major bug and a few minor bugs that I know of. The major bug is that if you create several page type classes at once and you set the AvailablePageTypes property in one of their PageType attributes to a page type that hasn’t already been created the whole page type creation process will crash. The example below illustrates this. Given that you haven’t created any of these page types earlier the below code will make the page type updating process fail.

[PageType(AvailablePageTypes = new [] { typeof(PageTypeB) })]
public class PageTypeA : TypedPageData {}

public class PageTypeB : TypedPageData {}

Despite these bugs we are currently using PTB successfully in a project at Nansen and, as I have written about before, I know of at least one other EPiServer partner that also uses it.

The quality of the code in this version is decent considering that I started this project as an experiment, but it’s far from perfect and it’s suffering from not having a suite of regression tests which would give me confidence that no existing functionality is broken when changes or additions are made.

Version 0.8

The next version will be 0.8 and that’s what I’m currently working on. The main focus for this version will be to rewrite the existing code and create a suite of tests that will offer code coverage percentage that is as high as reasonably possible. Unfortunately this takes time. When I started working on this version a few weeks ago the only tests that I had was for the PageDataFactory class and the code coverage was at 11%. Now it’s at 56% and I estimate I should be able to get to about 90% before I’m done.

I will also include a few changes and a couple of new features in this release. Based on a post by Daniel Rodin I will modify the GetPropertyValue and SetPropertyValue methods and move them from the TypedPageData class and turn them into extension methods for PageData. I will also change the start up validation so that you no longer have to inherit your page type classes from TypedPageData and instead can inherit directly from PageData. I will also include base classes for pages and controls that offer strongly typed access to the CurrentPage property.

I will also try to include a few other new features. I’m not really sure which to prioritize yet, but it will be some of the features from the issue tracker at the projects CodePlex site. Any feedback on which features I should focus on is very welcome!

Given the developments current pace I would guess that version 0.8 will be released in a week or two. So, a likely release date is somewhere between 27/7 and 3/8.

Version 0.9

With the code rewritten in version 0.8 I will focus on adding new features in 0.9. Most of these should not affect the existing code or break anything for users of version 0.8. Once again, any feedback on which features to prioritize is greatly appreciated! Version 0.9 will also be sort of a release candidate for version 1.0 as I don’t plan on adding any new features between 0.9 and 1.0. Don’t hold me to that though :)

How long it takes to develop version 0.9 will be very dependant on how many new features that will be added. My guess is that it will take one to two weeks to build it. So, a likely release date is somewhere between 3/8 and 17/8.

Version 1.0

Hopefully version 1.0 will only included a few minor tweaks compared to version 0.9 and should be pretty quick to develop. I’m guessing it will be done in a week so a likely release date is somewhere between 10/8 and 24/8. When this version is released I hope I’ll be able to find some time to write a few articles about how to use PTB.

Future development

With 1.0 released I’ll take step back and discuss with EPiServer and other EPiServer partners about how to continue the project. This would definitely be a good time to increase collaboration with other developers. One thing that I’d really like to build, or see built, at this point is a admin mode plug-in that let’s us make updates to page types that the code doesn’t do, such as removal of properties that are no longer declared in code.

PS. For updates about new posts, sites I find useful and the occasional rant you can follow me on Twitter. You are also most welcome to subscribe to the RSS-feed.

Joel Abrahamsson

Joel Abrahamsson

I'm a passionate web developer and systems architect living in Stockholm, Sweden. I work as CTO for a large media site and enjoy developing with all technologies, especially .NET, Node.js, and ElasticSearch. Read more


comments powered by Disqus

My book

Want a structured way to learn EPiServer 7 development? Check out my book on Leanpub!

More about EPiServer CMS