On Feb 1, 2011, at 10:53 AM, Tom Davis wrote:

> On Tue, Feb 1, 2011 at 12:58 PM, Glyph Lefkowitz <gl...@twistedmatrix.com> 
> wrote:
> 
> On Jan 31, 2011, at 11:41 AM, Tom Davis wrote:
> 
>> Thoughts?
> 
> 
> Priority #1 for most people who are enthusiastic about documentation is to 
> come in and write a ton of additional documentation.  But this is a lot like 
> trying to fix a large, broken, untested system by writing a pile of new, 
> untested code, because "this time we'll get the design right".  What were the 
> problems with the way the previous documentation got written?  How did we end 
> up with this mess, and what is going to be done differently this time?  Most 
> importantly, what is the metric by which we will judge this new documentation 
> to be better?

I'm still really interested in concise answer to that last question there.  
What are the priorities for what you're trying to improve?  What you've listed 
here is "the steps you're going to take in order to improve it" but I have yet 
to see a lucid description of the problem in detail.

> Those tutorials aren't new at all; they were taken (often verbatim) from the 
> "using twisted.web" document. Writing a ton of new documentation really isn't 
> my goal at all. My goals are threefold:
> Reorganize existing documentation in a way that makes it more accessible.
Accessible to whom?  How will reorganizing it make it more accessible?  One way 
to interpret this statement is that your goal is to remove all diagrams, 
because the documentation is currently not accessible to the blind.  I'm pretty 
sure that's not what you mean, but it's a good example of how ambiguous this 
statement is :).  (Plus, the couple of blind developers I've talked to about 
Twisted didn't seem to have a problem with the docs...)
> Edit existing documentation to conform to a task (howto/tutorial/etc.) vs. 
> expanded learning model. (the whole instant gratification thing and all that)
OK, I'm on board with that.  Except that in order to understand the tutorial 
documentation you need a good backing of reference docs, so it's not like you 
can just choose one over the other.  And we have lots of tutorial docs (c.f. 
the infamous finger tutorial) which are in the tutorial / task-oriented 
paradigm but don't teach much that's directly useful.
> Gradually update / replace code listings with "current best practices" 
> examples that are tested.
No arguing with that at all, that sounds great.

> I know you want an actual *layout* for the reorganization.

Not really.

What I want is a clear understanding of what you intend to change.  I usually 
get that by reading a diff: it's easy to read a diff and see what changed in 
the old versus the new version of something.  I can tell if it's an improvement 
without having to digest the entire content.

But the structure of <http://docs.recursivedream.com/twisted/> is a sprawling 
mess of placeholders and half-finished ideas.  It's different from the existing 
documentation in lots of ways; it has a completely different stylesheet (which 
I assume is some standard Sphinx thing we will get rid of with the consistent 
theming work in Kevin's sphinx transition).  I don't know what I'm looking at 
or how to appreciate it.

This is why I started off by complaining about the separate git repository.  If 
you're going to work in a separate repository and a separate format and not 
produce diffs that I can skim, then it's very hard to comment intelligently on 
your strategy, and you need to take an immense amount of care to call out the 
sections you consider complete, what exactly you want feedback on, and areas 
where you have or haven't added new content (so you can't be blamed for issues 
in old content that you're not trying to update).

Note that diffs against Kevin's sphinx output would basically satisfy this same 
requirement, even if that output isn't really complete and those diffs would 
need to be re-created when the final conversion occurred.  At least there would 
be a set of deltas to look at rather than a whole new structure which is mostly 
scaffolding.

> I want to give that to you, but it requires going through all the 
> documentation and making sure it fits in the reorganized layout or making 
> sections for it when it doesn't which is far more time consuming than 
> providing a layout for the "task" piece, as I did here. I'm basically just 
> saying "How-tos should have a standard layout with these sections; here's a 
> stub of one such how-to as incompletely adapted from the current 
> documentation".

Even going back and reading your original message to this thread now, I can't 
tell that this is what you were asking for review of.  Even now I'm not 
entirely sure what you mean.  Do you mean that you want feedback on the 
sections on 
<http://docs.recursivedream.com/twisted/projects/web/tasks/serve/index.html>?  
Or the way that 
<http://docs.recursivedream.com/twisted/projects/web/tasks/serve/serve.html> is 
split out into separate tasks?

If you are interested in getting a review of the template or the outline, 
please write up the template itself with a description of what should go into 
each section.  Then you could link from the template to web/tasks/serve/index 
and say "and here's an example of some existing documentation applied to this 
outline".  But since I have no idea what the generic purpose of each section 
is, I can't comment on whether the sections are a bad idea or the 
classifications of certain sections of existing docs is a bad idea or if it's 
just too incomplete for me to comment on.

Plus, such a template would serve as a critical tool for new documentation 
authors (of which I hope we get a few), allowing for a consistent style to be 
followed by multiple authors writing task-oriented documentation for different 
parts of Twisted.  The lack of such meta-documentation is the root of many 
issues with the current docs: when we're writing code for Twisted, we have a 
very clear idea of what the coding standards are, but when we approach 
documentation, the individual author just writes whatever random style happens 
to suit them on that day.  There's no guidance.

> I think most of this is a huge misunderstanding as to my goals both in 
> general and for the particular section critiqued here. Perhaps I should have 
> completed it before putting it up for review. I just felt it was better to 
> get something out here just in case everybody hated the entire direction 
> rather than spend a ton of time slicing the current web server docs the way I 
> personally feel they should fit together in order to properly serve the 
> audience.

Soliciting feedback is good.  I still think that these discussions have been 
very productive.  The issue I have isn't that it's unfinished, it's that there 
are no guard-rails on the unfinished sections, so it's easy to careen off into 
the stuff that I'm not really supposed to be paying attention to. A 
substantially larger document with that same problem would have been a disaster 
to try to review, so early feedback is better; hopefully as you produce 
something bigger you'll also alleviate the difficulty of review somehow.

> If all that comes out of your efforts is a new, different pile of 
> documentation, that's not entirely without value; different audiences 
> understand things in different ways, so someone might pick it up and 
> understand Twisted as a result.  But I very much doubt that's going to move 
> us from a general impression of "bad docs" to a general impression of "good 
> docs".
> 
> More specific criticism:
> 
> "This is a Twisted Task"?  I feel like I'm about to start reading about a 
> Task object or something related to the twisted.internet.task module.  Or 
> maybe that this is an exercise.  A document explaining how to do a task is 
> rarely called a "task" itself.  Mostly they're called "How-To"s, actually.  I 
> understand you're trying to get away from old terminology but this seems 
> awkward and forced.
> I just started using this terminology because it seemed common within our 
> conversations. How-to/tutorial would likely be less confusing.

OK.  For what it's worth I share your desire for a new / better term but I 
can't think of one.
> "You should be familiar with Resources"?  That is really broad and 
> wide-ranging and should be a hyperlink to another tutorial.
> It was just a placeholder; it should link to a section in the web server 
> overview docs that talks about Resources. There are other things on that 
> list, too (Site object, yada yada). Although, like I said, it's merely 
> incomplete.

I suppose my comments above about meta-documentation and a deeper explanation 
of the template are my response to this; if it were clearer what the structure 
were really supposed to be representing it would be easier to ignore minor 
flaws like this or recommend improvements 
>  Plus, I think that most people interested in these tasks will want to learn 
> about how to get simple tasks done first, before moving on to a more abstract 
> / theoretical understanding of the model behind them.
> I completely agree. That's my whole point with starting off using *twistd*, 
> despite its limitations or whatever. 

Obviously from my other message I'm a fan of this approach.
> More importantly: this is a very wishy-washy definition of the audience.  Is 
> it for system administrators?  Software developers?  DevOps people?  Graphic 
> designers?  Power users?  What level of experience do they need with Python?  
> With networking?  With HTTP?
> The latter should all be under "Prerequisites" whereas "audience" should 
> probably be a new howto standard section that's currently overlooked (perhaps 
> above "Prerequisites"?)

It seems to me that "audience" is the section and "prerequisites" should be a 
sub-section of that.  After all prerequisites are really attributes of the 
audience, not the document :).
> "Other configuration options are available"?  This should be a list of links 
> to other documents that might help with some of those options.  Documentation 
> which says "and then you could do something else" without telling you what 
> else or why is needlessly confusing.
> I agree. There are lots and lots of lines to connect even from such a 
> simplistic tutorial. I wanted to get feedback on the layout rather than the 
> final web project documentation which should certainly include links to 
> twistd option docs and probably a half dozen other things I haven't linked to 
> yet.

(Again, go write up the layout explicitly first, and then I can provide more 
useful feedback!)
> The WSGI example totally glosses over how you get your code onto sys.path 
> (PYTHONPATH etc), says that 'helloworld' is a module/package (which is it?  
> why are both options given?).  This is an extremely confusing area for 
> newbies, which is why it actually makes a bit of sense to me that the 
> web-in-60-seconds WSGI tutorial starts with a callable defined in the .tac.  
> Not a good practice in the long term, but it allows the user to immediately 
> get some feedback and have some notion of how things are wired together 
> without having to debug Python's import system first.
> Fair enough. This point was also not covered in the official docs, where I 
> got the instructions from. Regardless, I have no intention of including 
> how-tos that gloss over anything; either they work "out of the box" or are 
> edited until they do.

I guess this is another nitpick that wasn't really about the layout.  Sounds 
like we feel the same way, at any rate.
> .rpy scripts are for deployment, not debugging; I was a little concerned 
> seeing that bullet point on the outline.  (See 
> <http://twistedmatrix.com/documents/10.2.0/web/howto/web-in-60/rpy-scripts.html>.)
> Huh? The docs you link to claim:
> 
> So, while rpy scripts may be useful for testing out ideas, they're not 
> recommend for much more than that.
> 
> Am I missing something here?

Well, "testing out" and "debugging" aren't quite the same thing.  And I'd 
probably recommend RPYs for more than that :).  I was linking to that document 
just to provide an expanded explanation of the functionality; personally I find 
it obvious why RPYs are super useful from that example, so I mostly just ignore 
that comment.  (Perhaps this doc needs to be updated, but let's please not 
hijack this already-sprawling thread for discussion of the merits and flaws of 
RPYs...)

> My hope is that this reply clears up some confusion. However, feel free to 
> let me know if you think I simply don't have the mindset necessary to 
> "improve" the documentation in a way that is desirable. I had a hard time 
> learning Twisted in the beginning and to this day some really helpful 
> abstractions and just available projects / solved problems elude me.

This sounds like I'm discouraging you.  If that's the case, feel free to just 
tell me to sit this one out and wait until you're further along in the project. 
 I am trying to provide feedback to be useful to your efforts, but if you don't 
find it useful, then you can carry on with feedback from people who really need 
the docs.

> I think the reason for this is that I think a lot like Jacob 
> <http://jacobian.org/writing/great-documentation/> when it comes to 
> documentation and that's the sort of stuff I need to have in order to truly 
> grok something. Maybe that's what we all want here. Maybe it isn't, though. 
> And I'd really love to figure out which it is before I drive forward on this. 
> If we really are on the same page (and I'd certainly like to be), we've got 
> some hellish communication issues ;)

I'm a big fan of Jacob's in general and that essay series in particular as far 
as it comes to documentation, so I don't think that's the issue.  Obviously his 
methods have yielded a result that is well-regarded in the Django community.  
And I think we are on the same page about many things, and we don't need to 
agree about everything.

I'm still quite excited to have you working on our documentation.

(Except for his comment about API documentation generators; I think that 
epydoc/pydoc is hugely useful.  But I do agree that one shouldn't just run an 
auto-generator to spit out a rehash of the source code; one needs to write a 
ton of documentation in an appropriate format to be consumed by such a tool in 
order for it to be useful.)

Thanks and good luck,

-glyph

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to