Tag Archives: Retrospective

Retrospective: Decision to rearchitect

Its now going on a week sense we got the RC release out for v1. So far the response has been extremely positive. Since that time we have been fixing a couple of the bugs and spiking on some new ideas we have had – if you want to see, checkout the branches on github ;). We have also taken the time to step back and reflect on our last release.

As these things go, it was never our intent that the gap between beta and RC would be as long as it was. In an effort to be transparent, this gap has probably slowed down the momentum that we had gained. Some of this was due to Nik and I needing to spend more time with our families, wanting to ensure that we didn’t burn out, international moves and wanting the project to remain fun for us to work on.

Additional, many smart people have questioned the sanity of completely re-architecting your system, but we felt compelled to do so to ensure that project could move forward. Ideally we would have taken a more evolutionary tack here, but being a framework that people build on, as well as a product people use, this made the decision difficult.

The need to do any of this work comes back to the origins of Glimpse and some fundamental decisions we made on day one of the project. The biggest problem we had was the decision to take a dependency on System.Web. Prior to OWIN and self-hosting movement gaining momentum, this would have been a safe decision, but we have had many requests from various interested parties to remove this dependency. Unfortunately, this was not a straight forward task, but by making the change it meant that Glimpse could work in many more situations and be moving in the same direction as the industry trends – we now have the ability to add support for self-hosted WebAPI and frameworks like NancyFX.

Furthermore, the initial development work for Glimpse was done in a period of 5 weeks between the hours of 10pm and 2am in the lead up to Mix11. Even though many of the abstractions have held up over time, given a better eye to where we could go in the future and more time we probably would have made different decisions and taken different routes. Hence abstracting away System.Web represented a great opportunity to set things up moving forward.

In posts to come, we will talk about the various changes on the client and server, and the details of what went into the underlying changes.