Dave Burke : Freelance .NET Web Developer specializing in Online Communities

Beach Week Chronicles: On Community Server Documentation

Anyone who hangs in the Community Server Forums has read someone else say (or has themselves written) that we need more Community Server documentation.  I may have complained about aspects of Community Server in the past, but the lack of documentation has never been one of them.

I'm bringing up this subject because I don't know what kind of documentation other developers and Community Server administrators are looking for. I've seen a lot of requests for Application API Documentation because it's easier to read through a document than scan through the code...which is a point I have to chew on a bit. 

Let's see, an API doc will list a method, what it does, and how many overloads there are. It would give you a class's base class and that base class's base class.  It will describe what the object does and maybe even provide some sample code on how to use it.

I'm not saying that's a bad thing, not at all.  But there are certain issues that I think we need to consider before thinking a traditional API is a good idea for Community Server and a wise investment for either the community or for Telligent to undertake.

First, we (as in Community Server enthusiasts) have the SOURCE code.  We enjoy the equivalent of the character Ram in Tron going wild with delight because he was able to drink from a pure energy source.  That's what the Community Server SDK is, it's a pure stream.  If I see a method in, say the Weblogs class, I can Ctrl-Shift-F and search on “ThatParticularMethodName(“ with a single parenthesis to catch all uses and all overrides.  What's the base class of some particular class?  It's right there.  What are all of the properties in this object?  It's right there, either in its class or derived class.  Plus we have an incredibly rich debugging environment in Visual Studio 2005 that we can use to reveal a wealth of detailed information about Community Server.  That's one reason why I can't agree with investing in classic Application API Documentation for Community Server.

A second consideration is that Community Server is a really young product.  I mean, REALLY young.  Community Server 1.0 was released in March 2005.  I remember it well; because it was released right about the time I was preparing for a dotText Code Camp presentation.  Here it is, July 2006, barely 16 months later, and we have a radically different (all would also agree, a radically better) Community Server.  It's stunning to look back on all that's been achieved since March 2005.  And look at the extent of changes between CS 2.0 and CS 2.1.  We also know the entire Theming and Skinning model is going to get an overhaul in CS 2.2, so there's not much likelihood that this accelerated rate of change and progress we've been seeing in Community Server is going to slow down any time soon.

I'm saying a couple of things here about Community Server’s youthfulness and vitality.  1) 16 months may be enough time to create traditional API documentation for a product that doesn't change much, but the current version of the CS 2.0 API has very little in common with it's 1.1 API predecessor of just 10 months ago.  I suspect that the CS API of 10 months from now will have very little in common with its 2.1 API counterpart of today.  This app changes fast.  If we can at the very least record and chronicle the ongoing changes that the rock-n-roll Telligent Developers are making to Community Server, I think we're doing ALLLL-right.

This is a subject that is personally very important to me because, while my role at Telligent may be not clearly defined, I am charged as a "Community Server Evangelist."  By definition I am to get information to developers and users about all aspects of Community Server.   While I might not personally think that Application API Documentation is a worthwhile investment, I want to be sure I understand the type of documentation users are looking for.  Until a better plan comes along, there are other avenues like the new Forums FAQs (not to mention the Forums themselves!), Community Server Docs, the [DailyNewsShort], and information like the recent White Papers that will evolve to hopefully address each of our individual Community Server needs and interests.




[tags: Community Server]

Comments (6) | Post RSS RSS comment feed

Posted on 7/24/2006 9:26:00 PM by Dave Burke
Categories: Community Server
Tags: no tags for this post

Related posts

Comments (6) -

7/25/2006 12:53:37 AM Permalink

While I would agree that the API has changed dramatically between versions, I also understand the desire for developers to have a better understanding of how CS works. One thing we could definitely improve is comments, both xml style and inline. For folks who use the Visual Studio's Object Browser, we are doing a disservice by not accurately reflecting the current state of a class, parameter, or other member. For folks reading/modifying the code, it's also critical that whatever comments exist are accurate, and any "weird" code is explained. Personally, I'd love to see this in the CS v2.x timeframe, though I'm not sure there's time to do a complete once over all the source.


As a side note, I think the API has changed because the focus has been on improving the experience, adding features and fixing bugs. Without time set aside for explicit API design, the interface (from a code perspective) can quickly deteriorate as items are fixed or requirements change. As we begin to focus on our CS v3.0 product and the full web services stack, I think we'll be in a much better place, in regards to API design, out of necessity. When folks download the CS source, they're still thinking of CS as a large product. Once a services layer is available, folks will begin to treat CS as more of an engine with a firm API that they program against. In that scenario, stability and documentation will be need to be a high priority.

Jose Lema |

7/25/2006 2:44:11 AM Permalink

Jose, you half (or 1/3, 1.5, pi/5, pick a number) beat me to what I wanted to say Wink.

The API documentation is indeed pretty bad. Of course those of use who've been involved since the early days of CS don't have as many issues as someone who is just now dl'ing the SDK. Just as a quick exercise the other evening I attempted to look at the source from a 'noob standpoint, and wow, the API for CS is A) huge B) quite complicated (even for seasoned developers such as myself) and C) largely undocumented.

One of the things that makes the .Net framework itself so easy to use is the enormous amount of time MS spent documenting it on MSDN/MSDN2. But, those docs weren't hand written, they were generated from comments themselves that the devs left in their code, ala nDoc style, which I guess gets me to my main point. Why isn't there an nDoc style (or even CHM style) API document available? Easy answer (and Dave, you nailed it in your post): The API wasn't documented inline as it was written. So yes, doing a once over throughout the entire codebase at this point probably isn't feasible.

All developers are guilty of it...who wants to write boring docs/specs/etc in their code, but it's a necessity, especially with a project that has as large of an outward facing presence as CS does (which is only going to get larger with subsequent releases). Going forward I believe there needs to be a rigorous framework in place for checking that devs have doc'd their classes thoroughly. Again, nDoc is a great tool for this (amongst others). Sure it's easy to fire up reflector, or fire up VS and hit ctrl-alt-j, but even better would be something like csdev.communityserver.org where we have a full API outline ala msdn, complete with code examples, related content, expected exceptions that methods can throw, etc. I do realize that hiring someone to go over the code and add comments would be an exercise in futility, but perhaps provide each dev with an hour or so a day with "documentation time" to go back over previous code they've written and, well...document it. And better sooner than later.

As of now (besides just reading through raw source code) my best documentation is Keyvan's Dev Guide series...mainly b/c he provides good examples.

sorry for the rant, but this is a big deal IMO Wink.

jayson knight |

7/25/2006 5:25:35 AM Permalink

"For folks who use the Visual Studio's Object Browser, we are doing a disservice by not accurately reflecting the current state of a class, parameter, or other member. For folks reading/modifying the code, it's also critical that whatever comments exist are accurate, and any "weird" code is explained."

Jose, thank you for this point and helping me understand the need.  This, along with you restating the issue, Jayson, shows me what could be done as a baseline, particularly when employing nDoc as you suggest.  As for comments, I can see your points and suppose I would find them useful.  Maybe it's because we've seen CS evolve from dotText, ASP.NET Forums and nGallery, but seeing comments that still exist in CS like "Do we need to convert words to hash codes?" reminds us that CS is a work in progress, always fluid and being re-architected all the time.  Heck, if I wanted an app that didn't change I would have stayed with dotText, but I knew ScottW and Telligent Developers would keep wowwing me with better and better code, that as soon as I had a handle on something it would be changed.  But that's getting off-track.  Sorry.

Thank you again guys for taking the time to detail a reasonable approach to API Documentation.  That's what I was hoping to learn, hearing from developers whose opinions I respect and where they think we should be on this.

daveburke |

7/25/2006 8:50:48 AM Permalink

With any viable commercial software product, there comes a certain level of expectation on the part of the User/Consumer.  That expectation includes being able to find necessary and accurate information, in an expedient manner, regardless of the subject matter or the medium used.  Until those expectations are met, no matter how great the product, Communuity Server's success in the marketplace will be heavily compromised.  

You started out by saying "I'm bringing up this subject because I don't know what kind of documentation [people] are looking for".  I'd like to suggest that the simple answer is "organized" documentation.  It's not about the topics covered or how the information is conveyed.  

More to the point, the CS Forums address virtually all aspects of Community Server, i.e., configuration, operation, customization, etc.  For better or worse CS Forums have become the first-line resource for information.  Given Community Server's "youthfullness and vitality" (which is NOT a valid defense by the way) the CS Forums may arguably be the most appropriate medium, but with some major shortcomings that beg human attention.

The problem, as I see it, is the significant lack of organization and poor (human)management of the "documentation" that IS available via CS Forums.  For any given subject, there are likely to be dozens or perhaps hundreds of individual threads.  Of these, far too many lead nowhere.  At best, it's like having a printed manual with a 500-page index... but no chapters or any other form of categorization.  

Instead of wondering what new books people might want to read, I would organize the library.

Paul Baker |

7/25/2006 9:05:50 AM Permalink

Paul, thank you very much for elaborating on the idea of "organized documentation."  That's extremely helpful.  It's the intent of the Forums FAQs which I happened to have compiled to a single timestamp post yesterday on the Daily News feed.

communityserver.org/.../539791.aspx

This is only weeks in the making and is something I have to be conscious of staying on top of every day.  It would also be an effort that would be better served by a group of contributors rather than a single individual.  Still working on getting it right.

I've taken your advice of Organizing the Library to heart and perhaps the FAQs may not be the best approach, but they're as close to a Table of Contents as I can conceive at the moment.

Good point on the marketplace expectations issue, as well, btw.

daveburke |

7/26/2006 1:21:23 AM Permalink

That's utter rubbish, you have a commercial product that you allow developers to extend, how can they do this easily without API documentation, you're just lazy if you ask me!

D |


Powered by BlogEngine.NET 2.0.0.36
Theme by Dave Burke