Поделиться через


Feature Builder Power Tool Future

The ‘Feature Builder Power Tool’ was originally built by the Visual Studio Architecture team as a component of an overall vision to deliver software factory tooling to enterprise customers. The work started in earnest in 2008, and the FBPT project concluded within about 6-8 months. The project had a grander vision, but never received further funding to reach its full potential. Since its first release on the Visual Studio Gallery in 2009, the project has attracted some success.

The project delivered two parts:

The first part, the core part, was a Visual Studio extension that hosts Guidance Workflows in Visual Studio bringing contextualized and automated guidance into the IDE. It delivered both a ‘Guidance Workflow Explorer’ window which illustrated the workflow, and a ‘Guidance Browser’ window with which to browse the content of the individual elements in the workflow. A ‘Guidance Workflow’ is composed from of a set of instructional or informational steps, that can be sequential and multi-branched, and can be conditional on both manual gestures (like a tickbox) and automated conditions calculated form the development environment. The benefit of using such rich workflows is that they can not only help you understand a process where you could check off steps as you perform them manually, but also the workflow itself can calculate completed steps based on what you have done in your solution. The workflows allow multiple threads of concurrency in the workflow, which enables teams to complete complex or long running processes concurrently. As steps are completed in the workflow, new steps and paths through the process light up. You progress through the workflow until it is completed. Basically, it is an automated workflow processing engine. Very powerful indeed, especially for instructional kinds of guidance.

The second part of the power tools was the set of developer authoring tools that you used to design such guidance workflows.

Both part one and two were bundled together in the ‘Feature Builder Power Tool’ extension.

At the time, the Visual Studio Architecture team decided to base the ‘authoring’ tools of the FBPT on the new UML Activity Diagram that they were marketing heavily. As such they purposely decided to restrict the building of guidance workflows to Visual Studio Ultimate customers only. A huge oversight in my mind, as it put contextual guidance out of reach for many who could have benefited from utilizing guidance. This move also inadvertently stifled the uptake and adoption of guidance workflows across the marketplace for ordinary developers, since they were not privileged enough to create it. IMHO building guidance should have been a thing Microsoft should have encouraged to all and any Visual Studio user, building bigger momentum around this new technology and approach. But alas, the authoring experience with the UML Activity designer turned out to be super clunky, very tedious and ultra esoteric. And furthermore, the guidance that shipped with the authoring tools, that was supposed to help you build better guidance workflows!, was a very poor example of why there was any value in building guidance workflows in the first place! A lot of hard but important lessons were learned from that release, especially how not to treat and address your potential marketplace. However, the technology did speak for itself, and as such has seen some adoption and praise.

Unfortunately, soon after the public release of the FBPT tools, the team that built them was disbanded quickly, and the tools have had little support since. Its predecessor: the Guidance Automation Toolkit (GAT) was being made obsolete around the same time. And when VS2012 was being announced there was no plan from Microsoft to support the ‘Feature Builder Power Tool’. Unaware of this, FBPT customers who had taken a bet on the technology were left high and dry and without an alternative, or roadmap, as was the whole software factories community.

Until very recently, the ‘Feature Builder Power Tool’ project has been slowly languishing. With many bugs, installation issues, a poor authoring experience, bad ratings, and no encouragement and support from the Microsoft Visual Studio team. Sadly, the project has suffered a great deal of loss over the last few years, and has even angered a few.

However, there is now some great news about the FBPT project. If you remember, at the start of this post, I mentioned that the FBPT was a component of a larger strategy around delivering a full suite of software factory tooling. The other components of that strategy came together, with the guidance workflow piece, into the NuPattern project. There is a great story to tell here one day, but the short story is that NuPattern was designed to build upon the guidance component that was shipped in the FBPT, and extend it out much further to complete the overall tooling strategy, and it is still evolving. NuPattern was to be the set of domain specific development tools and integration platform that you built and ran your software factories upon. However, the NuPattern project called ‘PLATU’ at the time, was concealed from public view and so this remaining part of the strategy was invisible to people interested in how the FBPT technology was going to evolve, and what Microsoft was doing in that space.

The NuPattern project has always had a very large and deep binary dependency on the runtime component of the FBPT, right from the start. This is because it not only drove the requirement for building the FBPT technology in the first place, but it also needed to deliver the missing piece around domain specific development tooling that was needed to build a software factory or toolkit. About a year ago NuPattern (called ‘VSPAT’ at the time) was finally released.

As the FBPT wasn’t supported for VS2012 or later, the NuPattern project faced the reality of having a stagnant foundational dependency, that prevented shipping NuPattern for VS2012. After several months of negotiation and due process with Microsoft, they contributed the source code of the runtime components of FBPT to the NuPattern project. This single and celebrated collaborative act enabled the NuPattern project to finally ship a VS2012 version, and removed the crippling stagnant dependency. And with that one move, support for the core runtime components of the FBPT have moved to the NuPattern open source community. Great news for anyone who was either interested in, or still interested in the ‘Feature Builder Power Tool’.

NuPattern has always had guidance workflow support. And its has always had its own supported authoring experience for building guidance workflows, that is a great deal easier and far more intuitive than using UML Activity diagrams. Which makes creating guidance workflows available to all Pro/Prem and Ultimate customers in NuPattern!

If you are still using, or used the ‘Feature Builder Power Tool’ extension to build ‘Feature Extensions’, and you saw value in the concept of sharing guidance workflows. And you want to create more of them - look to building a NuPattern Toolkit instead. A NuPattern toolkit brings a far superior platform for your guidance and automation to be experienced by your Visual Studio users. (and just quietly, its a great deal easier to create and support than a feature extension).

That said, there is no direct and supported path to migrate a ‘Feature Extension’ built with FBPT to a NuPattern toolkit. You can however, keep the code and guidance you may have had in your feature extension, and with some rework, repurpose them in a NuPattern toolkit. The concepts are almost identical because NuPattern has always used the foundation of the FBPT runtime. Same concepts, same classes, but now a different namespace, and richer context for your guidance.

 

In a nutshell: for all those on the ‘Feature Builder Power Tool’ or those who lost faith in the FBPT project, and still have an interest in the technology - check out the NuPattern project and give us your suggestions and feedback on how to continue to evolve contextual and automated guidance for you.