As you may have already heard, Sandcastle [1] was officially released to the web (RTW) through CodePlex on January 15, 2008. The license that was chosen is the Microsoft Public License (Ms-PL) [2], but keep an eye on it because it may change [3]. There are still a few unanswered questions that I have [3] about how Microsoft's work on Sandcastle will continue and how it will affect DocProject, but things are looking very positive.
In this blog post I'd like to express a few of my goals and ideas for DocProject and maybe even try to establish some preliminary timeline. And of course, if you have any thoughts your feedback will be welcomed :)
The End of Phase 1
With the help of community feedback and my propensity for being anti-social in favor of sitting in a dark room, programming, DocProject's long initial development phase is nearing an end. The next release, which you can read about in my blog (DocProject 1.10.0 RC Preview [4]), brings together a few long-awaited features that will hopefully start to make DocProject into a useful help authoring tool (HAT) [5]. I'm going to try for Monday, January 21st, to release 1.10.0 RC, and I'm hoping that the worst-case scenario will be the following Friday.
From there I expect to deploy only one more Release Candidate that contains various outstanding bug fixes and feature requests and then I'll freeze DocProject's feature set for Visual Studio 2005. The following deployment, 1.12.0, should therefore be the first DocProject Production release. Expect that in March, 2008.
Visual Studio 2005 vs. Visual Studio 2008
I expect to have my own licensed copy of VS 2008 Standard edition sometime before the end of February, but until then I've decided that I will not be concentrating on any new deployments for DocProject 2008 Beta, although I'm very excited about using VS 2008 and I'll certainly jump on that bandwagon as soon as I can.
So for now, you can expect development to continue like normal for VS 2005. But once I start concentrating on VS 2008, I'm probably going to freeze the feature set for VS 2005, distribute the first Production release of DocProject 1.x, and then switch gears for .NET 3.5 and, possibly, VS Package development. I intended to eventually release DocProject as a true package, hopefully with its own editors and actual project types [6] (i.e., DocProject and DocSite Templates [7] that are recognized by Visual Studio as distinct project types, with their own property pages, etc.).
After DocProject 1.x goes into stabilization (the end of phase 1) I'll certainly provide support for it and help people whenever I can if they have questions about how to modify the source code or how to add additional features themselves. Although, the only official deployments that you'll see will probably be major releases that fix a large number of bugs.
Well that's my plan anyway because in the last couple of DocProject 2008 releases I've realized that maintaining two versions of the project is almost like double the work; however, since Visual Studio 2008 will allow me to target the .NET 2.0 Framework I may be able to work on both versions of DocProject simultaneously, without much additional effort. If that's true then hopefully I won't feel the need to freeze the DocProject 1.x feature set. Although, technically I can't really freeze DocProject's feature set anyway since it's open source ;)
DocProject Documentation
I plan to distribute compiled help for DocProject 1.x that consists of both API reference and conceptual documentation after the first Production release. I'd say that a week or two should be enough time to author useful, preliminary documentation. After that I'll probably just add content here and there and deploy whenever I reach certain milestones that I define on the fly.
A .chm will be downloadable from CodePlex and the installer will present you with the option to have DocProject's help content (.HxS) merged with Visual Studio's help. I'm even considering hosting a DocSite as an online reference and as a great working example of DocProject's and Sandcastle's capabilities.
Phase 2
The next phase will pickup with the development of DocProject 2008, targeting Visual Studio 2008 and the .NET 3.5 Framework. The timeline will probably start sometime in March, 2008. From there I hope to deploy on a monthly basis as I've done with DocProject for the past year+ (since December, 2006 as a matter of fact).
Planning
Although DocProject, in the next release [4], will provide first-class support for building mixed reference and conceptual documentation, unbounded filtering capabilities, much improved performance and a mostly finalized API, I still see lots of room for improvement. Namely, in the area of content-based features such as for authoring topics and localization. Also, here's a few of the outstanding tasks [8] that I'm going to look into for DocProject 2008:
- Running DocProject in areas of heightened security (e.g., Vista with UAC enabled).
- SQL Server full-text search provider for the DocSite templates.
- Microsoft Word and Adobe PDF output.
- The ability to annotate comments with developer notes.
- Automatic token replacement.
- Some new DocSite skins, maybe including one that makes judicious use of SilverLight. (Documentation might start looking better than the software it documents, if I achieve my goal, that is ;)
- Change control and better support for team scenarios; e.g., the ability to have a server that continuously builds live documentation to keep it up-to-date.
- The development of a simple community wiki for the DocSite templates, which I guess we can start calling the "DocSite Community Wiki" feature (sure, some might say it's a rip-off of the MSDN Community Content Wiki idea, and I guess they'd be correct ;). This should be very useful in team scenarios for large, volatile, hosted documentation sets.
- The ability to register multiple Build Process Components [9] per project, with a management UI as well. I may even turn the Sandcastle/Deployment [10] engine into a BPC that can be added to any DocProject or DocSite.
- Other various user-defined tasks (bug fixes and feature requests).
I have even more ideas that I've been tossing around for a while, so I hope to aggregate them into a blog post and eventually add them as work items in CodePlex. And if you have any ideas for DocProject features please let me know!
Development
Development will target Visual Studio 2008 and the .NET 3.5 Framework, and as I mentioned previously, I'm definitely considering rewriting areas of DocProject as a true VS Package with its own custom editors and project types. I'm also considering using WPF for the interfaces. There will be a learning curve but it's one that I'm going to have to accept eventually (and I really do want to learn).
Collaboration
I expect to continue collaborating with community members to find bugs and DocProject's potential for new features. It seems to me that the experience of DocProject users has been positive, so I'd like to continue working on DocProject in the future in the same way as I've been for the last year. But if you feel differently please let me know. Even though it's open source I'd still like to provide an acceptable level of service and support in my free time since the time that I put into helping end-users is also time that I'm putting into DocProject (even if it's just thought), which helps to make a better product even for me to use.
Extensibility
It might also be worth noting that I'm going to maintain the "openness" of DocProject by continuing to introduce new public APIs and areas for extensibility whenever possible. With the limited feedback that I've received, I'd say that DocProject's high level of extensibility was a success. A few people have mentioned to me that their businesses have created custom build engine providers [11] and build process components, and I've even used BPCs to help people debug issues in the past. Actually, my favorite feature of DocProject might actually be the build process component, which, incidentally, doesn't really have anything in particular to do with documentation.
Deployment
It's hard to predict when the first Production release for DocProject 2008 will be deployed, but if I can use the past year as a metric then I'd say another year from now is certainly reasonable, and possibly even longer than might be required. To be honest, I think the summer of 2008 is a reasonable goal as long as I keep my eyes on the prize.
Phase 3
At the start of phase 3 I hope to have already achieved my major goals for DocProject, which includes much better integration into Visual Studio and additional features that will make authoring documentation extremely simple and, in many cases, automated. Thanks to Sandcastle I believe that this goal is attainable.
For the future I think I'm aiming for much better external support so that non-Visual Studio users will be able to benefit from DocProject's features as well. The team-based features that I mentioned previously might get pushed into this phase, but we'll see how it goes. And finally, I'd like to hear your ideas for where you'd like to see DocProject go. After I'm able to meet most of my own goals I'd like to brainstorm with the community to come up with some new and innovative ideas to be a part of DocProject in the future.
References
[1] Sandcastle on CodePlex, http://www.codeplex.com/Sandcastle
[2] Microsoft Public License (Ms-PL), http://opensource.org/licenses/ms-pl.html
[3] CTP, License and Source Code, http://www.codeplex.com/Sandcastle/Thread/View.aspx?ThreadId=20557
[4] Dave Sexton's Blog: DocProject 1.10.0 RC Preview, http://davesexton.com/blog/blogs/blog/archive/2008/01/15/docproject-1-10-0-rc-preview.aspx
[5] Help authoring tool. (2008, January 9). In Wikipedia, The Free Encyclopedia. Retrieved 11:22, January 17, 2008, from http://en.wikipedia.org/w/index.php?title=Help_authoring_tool&oldid=183180723
[6] DocProject Work Items: VS 2008 Shell and Extensibility, http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=14029
[7] DocProject Components, http://www.codeplex.com/DocProject/Wiki/View.aspx?title=DocProject+Components
[8] DocProject Work Items, Advanced List, http://www.codeplex.com/DocProject/WorkItem/AdvancedList.aspx
[9] DocProject's Build Process, Build Process Components, http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Build+Process#BuildProcessComponent
[10] DocProject Sandcastle/Deployment Plug-In, http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Sandcastle+Deployment+Plugin
[11] DocProject tutorial: Creating a Build Engine Provider, http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating+a+Build+Engine+Provider