Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn

While at MVP Summit, Jon and the Scotts talk to Nik and Anthony about the Glimpse 1.0 release, Semantic Release Notes and NuGet versioning.

Download / Listen:

Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn [audio://herdingcode.com/wp-content/uploads/HerdingCode-0160-Glimpse.mp3]

Show Notes:

  • Intro
    • (00:38) Nik and Anthony remind us of what Glimpse does.
  • High level: What have they been up to?
    • (01:27) Nik explains how they’re now sponsored by RedGate software, but it Glimpse continues to be an open source project under Apache 2 license. The end result is that they’re both able to work 40 hours a week on it.
    • Anthony talks about the change to remove the dependency on System.Web.dll, allowing for compatibility with ASP.NET Web API and OWIN.
  • New features in Glimpse 1.0
    • (03:24) Jon asks about new features. Nik says they’re mostly at feature parity with the previous release, with a lot of key refactoring. Some new features include:
      • Support for SignalR
      • Routes are available in Web Forms
      • They can determine and surface route constraints
    • They’re working on MVC 4 support, System.Web.Optimizations, and Web API.
    • Anthony says the big goal of refactoring is to allow for fortnightly releases, which meant they needed to rework the core into something they could build on quickly.
    • (05:42) Jon asks about MVC 4 support. Nik says that everything in the MVC 3 package works, with the exception of Task based async support and newly added features like System.Web.Optimizations and Web API. Synchronous controllers and AsyncControllers work.
  • Notifications, Semantic Release Notes
    • (06:25) Anthony talks about support they’ve added to work better with more frequent updates, including update notifications.
    • That got them thinking – can they also show more information about what’s in the update? What about plugin updates?
    • Nik talks about what they’re doing to pull information from NuGet about installed packages.
    • (11:08) Nik explains how the extensibility model uses an attribute which indicates that the plugin came from a NuGet package and indicates which version of the package it came from.
    • (12:12) They want to give you information about what’s changed between releases, which led them to Semantic Release Notes.
    • Semantic Release Notes are written in Markdown format, but include typed information (inspired by Todo.txt) which allows them to determine what’s changed between any two releases.
    • (15:45) Jon and Scott K ask about why they picked Markdown as opposed to some other formats. Nik explains a lot of reasons, including compatibility with any text based release notes system.
    • (17:20) This allows them to present "The Sports Center of Release Notes" which showcases the relevant highlights.
    • (17:40) Anthony says NuGet release notes are virtually unused because they don’t offer any value. They’ve been talking to developers who say they’d be happy to include release notes if they were actually useful.
    • (19:33) Nik says that another benefit of a text-based format is that it could be extracted from commit messages.
    • (20:20) Nik says that NuGet has raised the water level the experience of installing release notes, understanding what an update does, configuration, overall experience.
    • (21:28) Nik says that Semantic Release Notes could also inform developers of Semantic Versioning problems – e.g. if you’ve got a breaking change, you should be bumping the major version number.
  • Problems with NuGet packages targeting product versions
    • (22:15) Anthony says they’ve run into some issues they’ve run into with NuGet. One issue they’ve run into is that developers often unwittingly install the Glimpse core package rather than the Glimpse.MVC package, which pulls in the core. They’re thinking about instead they could look at packages already installed in the project, determine that it’s an MVC project (for instance), and recommend installing the correct package (Glimpse.MVC in this case).
    • (26:00) There’s a discussion about problems to be considered with dependency scanning, notifying users, etc.
    • (27:55) Scott K asks about how this would work with locally hosted NuGet servers, MyGet, etc. Nik says they’ve seen a lot of cases of custom Glimpse plugins for things like e-commerce and internal information.
    • (28:55) There’s a MyGet feed with the nightly release, as well as a community feed for plugins.
    • (29:38) Scott K asks about how it works with local packages specifically.
    • (30:10) Nik talks about the problem with package explosion. NuGet allows you to target a specific .NET framework version, but not product versions. Jon asks why not just install Glimpse.MVC2, Glimpse.MVC3, etc. Anthony says this is a problem for any project that tries to factor things into a core with version specific dependant packages.
    • (34:28) Jon says they’re working hard to solve this problem, but would like to not have to. Anthony agrees: this is something he’d like see handled by NuGet itself.
    • (25:28) Nik says this is a growing problem, with examples from Windows 8 development. Jon talks about how he sees this problem in MVC 4. Anthony says he sees things moving in a good direction and that these are growing pains.
    • (37:25) Scott K asks if this is a problem that they’re seeing just because they have an ecosystem.
    • (38:40) Jon says he sees some people using VSIX instead of NuGet in cases where NuGet is limited. Nik says he’s frustrated that you can’t package up tooling – you can create a custom Web Platform Installer package at the high level, you can create a package.config at the project level, but there’s no solution for the installed tooling.
  • Miscellaneous jibber jabber and future possible features
    • (40:55) Anthony talks about the problems they’ve run into with XML documents and Sandcastle.
    • (42:48) Jon asks about possible future features. Scott K he’d like to see a plugin for Fiddler. Anthony talks about how they’re in a unique position with insight into the entire request pipeline, from browser through server and back to the browser.
    • (45:30) Scott K talks about how OWIN support allows access to a lot of other web stacks, too.
    • (45:55) Nik says that they include the Glimpse request ID as a header now, so you can trace the request in Fiddler or other network tools.
    • (47:00) Anthony says they’re realizing that they can do a lot more than just surface troubleshooting information for people who are learning, talking about the potential for an extensible mini-dashboard which can show really intelligent information – e.g. inform me if a request makes more than three database calls.
    • (50:14) Jon asks if there are any plugins which analyze security. There’s a discussion about automated OWASP analysis.
    • (52:10) Anthony says they’re talking to Brendan Forster about displaying decision trees visually.
    • (54:54) Jon asks what they’re looking at doing long term. Nik says they’re looking at doing some monthly conversations for developers.
    • (56:14) Jon asks how people can get involved. Answer: go to GetGlimpse.com.

Show Links: