Copy/paste from devel list:
When inheriting a site from a client and trying to figure it out, there are a number of things one normally does...
- Go to the content types listing and take a look at what types exist, and what the field definitions are for those types.
- Check out what roles there are, and what permissions are assigned to those roles.
- Check out what taxonomy vocabularies exist, and to which content types they're assigned
- etc.
This is all rather time-consuming, as it requires going to about 50 admin screens, and it's difficult to get a "big picture" of what's happening.
Having been asked to write a document containing some of these things on a site, I'm thinking of writing a module that basically nicely formats a db dump into an HTML page so you can get a bird's eye view of what the site entails.
Example output might be:
<h1>Site documentation for Example.com</h1>
<h2>Goals</h2>
[insert site goals here; why does the site exist? who's its target market?]
<h2>Overview of architecture</h2>
[insert overview of architecture here; how various pieces fit together and why]
<h2>Enabled module list</h2>
<ul>
<li><strong>Custom module</strong>: A custom module for the site. Description taken from .info file.</li>
<li><strong>Logintoboggan</strong>: Improves Drupal's login system.</li>
<li><strong>Pathauto</strong>: Provides a mechanism for modules to automatically generate aliases for the content they manage.</li>
</ul>
<h2>Content types</h2>
<h3>Page</h3>
A static page, like a contact page or an about page.
<h4>Fields</h4>
Title
Section (Vocabulary)
Body
<h3>Announcement</h3>
A news announcement on the site.
<h4>Fields</h4>
Title
Category (Vocabulary)
Description (Body)
Attribution (Text)
<h2>Roles</h2>
<ul>
<li><strong>anonymous user</strong>: [insert description here]</li>
<li><strong>authenticated user</strong>: [insert description here]</li>
<li><strong>administrator</strong>: [insert description here]</li>
</ul>
<h1>Site documentation for Example.com</h1>
<h2>Goals</h2>
[insert site goals here; why does the site exist? who's its target market?]
<h2>Overview of architecture</h2>
[insert overview of architecture here; how various pieces fit together and why]
<h2>Enabled module list</h2>
<ul>
<li><strong>Custom module</strong>: A custom module for the site. Description taken from .info file.</li>
<li><strong>Logintoboggan</strong>: Improves Drupal's login system.</li>
<li><strong>Pathauto</strong>: Provides a mechanism for modules to automatically generate aliases for the content they manage.</li>
</ul>
<h2>Content types</h2>
<h3>Page</h3>
A static page, like a contact page or an about page.
<h4>Fields</h4>
Title
Section (Vocabulary)
Body
<h3>Announcement</h3>
A news announcement on the site.
<h4>Fields</h4>
Title
Category (Vocabulary)
Description (Body)
Attribution (Text)
<h2>Roles</h2>
<ul>
<li><strong>anonymous user</strong>: [insert description here]</li>
<li><strong>authenticated user</strong>: [insert description here]</li>
<li><strong>administrator</strong>: [insert description here]</li>
</ul>Perhaps this would include an intermediary step (a form) would let you enter in broad descriptions for the site, plus descriptions for roles, etc. Because this info could be just about anything, it could be stored maybe as a serialized array somewhere?
It could also have the option to export a blank template which you could fill in manually when you spec out a new client site.
I was thinking also of a settings page where you can turn on/off the sections you wish to be included. And it would have to implement a hook so other modules could expose their things to being included in the documentation output.
What do you think? Crazy idea? Stupid idea? Anyone interested in helping to spec something like this out?
-Angie

Comments
You know, as I dig into this...
I wonder if this almost could be an export format of the Import/Export API: "site documentation" (and maybe "install profile", to satisfy another feature request someone made on the dev list). It looks like there might be quite a bit of overlap between the two.
Great idea, something we need
Wonderful idea, my company is in the process of switching the majority of our websites over to Drupal and this is a major issue for us, as we go from one site to another. I'll definitely keep an eye on this thread.
Many uses
Another brilliant idea, Angie.
Such a module would have many uses. In addition to the use cases you outlined, I can see it being useful to administrators who have many sites running from the same code (like us) who want to check that a certain group of sites are configured the same way. To the extent that your idea could be extended a bit to summarize the entire configuration, that would be fantastic.
Right now it takes us much of a day to configure a site once it's installed, because we are using many modules. We do have install profiles which preset many things, but there are some things which still need to be done by hand. Since we migrate these sites to newer releases, change configurations now and then, and add sites to groups with similar configurations, the ability to quickly discern the differences, i.e. the settings which need to be "fixed", would be really valuable.
Good documentation is always valuable, and since this proposed module would generate documentation directly from the "ground truth" of the database of the site, it would always be accurate (good) for that point in time.
Three cheers for Angie, I say!
Awesome
I will try to keep some of these ideas in mind as I work on my module. I am building it so each "piece" is separately callable, so that could lend itself to turning functions on and off easily.
The hook idea is an exciting one that hadn't entered my mind because I really wasn't sure how many other people might want something like this.
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
Well...
I have a lot of this already done, but there doesn't seem to be much interest in seeing what I have and what more needs to be done.
http://nanwich.info/drupal_collection/system_information_module
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
I just read your writeup
and it looks good --
RE this quote from the end of your post: "Maybe the Drupal-powers-that-be will accept this module as a contributed module." -- have you applied for a CVS account? If not, apply. If you have applied and are waiting, ask for an update --
Your module is a solution that people will be looking for, and it puts ideas into code -- nice work.
Cheers,
Bill
FunnyMonkey
Yes, I have applied - again
I think they feel that someone with less than a year of Drupal is unworthy.
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
I looked up the CVS queue at
I looked up the CVS queue at your original application to contribute a SiteNotes module. It was declined for the following reason:
In defense of AjK, this doesn't look like you were rejected for being with Drupal <1 year...
Also
Also, the description of the module (originally back in March) lends itself for confusing it with "just another bunch of fields". That is why it was declined perhaps.
The module now (as I understand it) pulls information from other sources, and has logic to do so, and hence CCK is not a fit here.
Drupal development and consulting 2bits.com
Personal Baheyeldin
Drupal performance tuning, development, customization and consulting: 2bits.com, Inc..
Personal blog: Baheyeldin.com.
Yes that's what he said and
He never bothered to answer my appeal of his decision in which I provided more information. BTW, his "fiddling" with menu settings is incorrect - it doesn't work; it must be done in a module. And the module has been popular even though it wasn't accepted - it now has 17 users.
I have re-applied for this module. I am awaiting their response. Hopefully it will be more favorable this time.
But I get that kind of treatment frequently from some of the "older" users of Drupal. I also feel that I am occasionally dissed for being a woman.
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
CVS Account granted
Step 1 - code - mostly done
Step 2 - CVS - coming soon
Step 3 - documentation - done
Step 4 - publish - waiting for me to learn CVS
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
Run into a CVS problem
I've run into a CVS problem. As soon as that gets fixed, it will be there. The code is already in CVS; it just won't create the project.
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
...but there doesn't seem to
Don't worry, plenty read and don't comment. Welcome to Developer Self-marketing 101. :)
Test it out
Because of a CVS conflict, I had to change the name. It is now the Site Documentation Module.
The documentation page is at http://drupal.org/node/144837
I still have some ideas for new sections to add. Also, I still need some ideas on what kind of information modules might want to pass back from a "hook_sitedoc."
Nancy W.
Drupal Cookbook (for New Drupallers)
Adding Hidden Design or How To notes in your database
Nancy Dru
Good
I think this is a great idea. It would sure be very useful! I hope you'll go ahead and do it.
Julie, Web Designer currently working on the How To Get Erection project.
Julie, Web Designer currently working on the How To Get Erection project.