[OPEN-ILS-DOCUMENTATION] documented developmnt

Grace Dunbar gdunbar at esilibrary.com
Wed Feb 9 12:56:11 EST 2011


  On 2/8/11 11:23 PM, Dan Scott wrote:
Dan,
For brevity, I'm leaving out all the things that we agree completely 
on.  ;-)
>> I think we have two sides of the equation; contracted development with a
>> company like Equinox, or community development.  Obviously, the solution
> Ideally, contracted development should be community development. And for
> the most part, that's what has been happening with the code: for much of
> the acquisitions work, for example, Bill and Lebbeous committed their
> code in progress as it was developed to the public Evergreen repository;
> it didn't land in great big hunks.
Well, of course!  When we are working on our contracted development we 
commit early and often to trunk and welcome feedback from the 
development community.  My distinction was that whatever process and 
standards the community would have of the developers needs to be applied 
to all developers including those who are not working for a vendor.
>> Why aren't vendors providing documentation automatically?  Historically,
>> Equinox has provided many of our clients the option of paying for the
>> end-user documentation of the features we're creating.  Almost every
> I'm not sure it's realistic to expect every developer shop to offer
> high quality documentation as one of its services.
I actually think every development shop *should* offer documentation.  
No offense to developers but the way many of you think (and name things) 
and the way librarians think can cause some confusion.  Even basic 
documentation is better than nothing (obviously).
> That said, the party that enters into the contract has to have somehow communicated what it
> wants from the developer shop.
Indeed.  Basic blueprints and desired use/outcome.
> In the case of acquisitions, I know the KCLS requirements had been set
> out to a fine degree of precision very early on - but these must have
> changed.
Great example!  The KCLS requirements for Circulation, for example, were 
set forth with a high degree of specificity.  However, as we worked 
through the development and provided proof of concepts or rough 
interfaces, things changed.   Those things were identified and noted as 
the project moved forward in TRAC.  The TRAC notes have a lot of private 
dialogue and shorthand between the project managers, the client, and the 
developers.  Those notes simply aren't fit for community dissemination 
but they're all we have.  And, of course, after 8 or 16 months, some of 
the notes that were made are cryptic at best.  I'm not sure if KCLS kept 
a changelog of their requirements on their end, I suspect they may have 
been too busy to do so.
> Maybe your clients aren't convinced that Equinox has professional
> writers on staff? I'm not saying that you don't (I honestly have no
> idea), but that's another reason why a client would not want to pay for
> a service from a given company.
Our Professional Education Manager, Sally Fortin, has been writing our 
documentation for over a year and has been contributing  everything she 
has written to the community at the time the development was delivered 
to the client (usually before it was included in a release).  I can 
think of two examples of her work off the top of my head.
http://docs.evergreen-ils.org/1.6/draft/html/actiontriggers.html
http://docs.evergreen-ils.org/1.6/draft/html/admin-booking.html

> perhaps the community should simply insist
> that any new features that don't have sufficient documentation (and
> tests, but that's the subject for a different discussion list) need to
> stay out of the official release until such time as adequate
> documentation is available.
I understand what you're saying but I don't think that what you've 
described is moving us toward the building blocks of a process.  I think 
that the community and all of it's stakeholders can and should agree to 
a basic standard for brief documentation that must accompany all new 
features.
For example:
-list of required permissions and descriptions
-basic description of intended use cases
-basic outline of intended order of steps
-brief description of UI layout and features
-known issues

> That would give, say, Kathy Lussier's group the option of contracting
> for the development of a new feature they want added to Evergreen, and
> writing the documentation for it themselves (they have to come up with
> the requirements documents anyway, and they need to sign off on what has
> been developed, so they're arguably in the best position to document
> their workflows according to the emerging design at the same time as
> they're testing the code that is being developed to satisfy their
> needs).
I think a distinction should be made here between documenting workflows 
and documenting functionality.  Take the Booking Module, for example. 
Mohawk graciously went ahead and expanded their development to include 
the ability to create "resources" like rooms or laptops, so that 
libraries could create and reserve those things for patrons.  This 
wasn't something that Mohawk intended to use - they mainly wanted the 
ability to reserve books/dvds for academic staff.  For example, a 
professor wants to show a dvd in class on May 22 and she reserves it 
ahead of time to ensure it is available to her at that time.  So how 
Mohawk uses their development (Mohawk's workflow) isn't going to 
necessarily be good documentation of the functionality.  The same thing 
applies to Acquisitions and Serials.  There are many ways to approach 
acquisitions and serials - start from a PO, start from a selection list, 
start from a cart at Ingram; do you barcode your serial issues, do you 
bind your serial issues, do you process items centrally or at the 
branches? (and on and on)

That is all workflow, policy and procedure and it is all going to be 
different from place to place.  I think the job of the community and DIG 
should be to try to document the features in their entirety (probably 
including some sample workflows for reference) and let local 
institutions make use of that work to modify it to their local needs.  
Because it the development is being done out in the open by the whole 
community then the code really isn't being developed to satisfy their 
needs - it's being developed to satisfy *a* need and should be made 
flexible enough to accommodate multiple needs (aka workflows).

> My suggestion is to treat the documentation like code: get it out there and
> write in the open, starting from stubs and outlines, right alongside the
> code (maybe even in the same repository as the code). Yes, things
> change, but documentation can change with it.
That sounds great and if that's what DIG wants then I'm game to try it 
out. I must say though that I'm afraid that process might just end up 
being extra work.  We have had experience writing documentation for 
several projects both small and large.  In our experience, it simply 
wasn't effective to try to write any documentation until the project was 
in the testing phase because too many things change.
> Change is good!
It is - but not when you end up re-writing something 5 times.
> SIDETRACK:
> If your primary concerns are about having to update the documentation
> because the screen layout changed, then either the UI needs to be
> redesigned, or you're focusing on documenting the wrong things.
Despite what your innuendo would indicate, I never stated that I had 
concerns about updating documentation.  I was just saying that, in my 
opinion, it wasn't an efficient workflow.
>   The trick is to be able to describe the concepts clearly
> ("So, serials are composed of the following elements: distributions,
> which are X and interact with libraries like so; streams, which are Y;
> subscriptions, which are Z; issuances, which are FOO") and then list the
> tasks and the corresponding places in which those tasks are
> accomplished.
>
>  From there, documenting how to perform a task on a given screen should
> be close to mechanical. ("Step 1. In the Foo panel, select the target
> library from the Bar widget. The Frambazzle dialog opens.... Step 2...")
This is a fallacy of composition - if I have all the concepts of the 
development outlined and described then the development is clear and 
documentation practically writes itself.

Writing good, useful documentation isn't about describing the 
components.  And, in the course of community development, those 
components often change, which is the point I'm trying to make.  The 
overall end result doesn't change (ordering items via EDI from Baker and 
Taylor) but steps, processes, names, etc. *do* change.  Why?  Because 
we're doing community development and things change based on feedback.

However, providing the outline and basic structures for feedback from 
the community during development is useful for development - but I don't 
think as useful for documentation.  And if the place where the outline 
and structure is available to the community is updated with changes and 
progress, then that becomes VERY useful when the time comes to document 
the feature.
> A colleague of mine used to say "If the UI's a dog, the help will bark."
> If the help is barking early on in the documentation process, that might
> be early enough to suggest that some change would be good. If the
> documentation is held off until the end, though, then that's a missed
> opportunity for feedback.
I disagree.  There are ways to update the path of development which 
allows for feedback without creating documentation- see above.  Creating 
documentation before the development is close to being finished is 
putting the cart before the horse.  I don't write a summary of my summer 
reading program's success on the second week of the program, I wait 
until the last week.   But I do make notes and update my data along the 
way...
> Now, getting the documentation out at the time of release?  That should
> be an achievable goal for Equinox; however, I can't speak for the
> community developers - and all the developers should be held to the same
> standard.  Since there isn't a "client" who is commissioning the work,
> perhaps the community developers could use DIG as they go along their
> development path to provide testing and documentation.

> I hope that Equinox doesn't see itself as being separate from DIG or
> community development. Crazy idea: if part of the release standard was
> "no new feature goes into the official release without adequate
> documentation" and DIG was the arbiter of what "adequate" meant, then it
> would be a level playing field for all.
Dan, I'm sorry if my comments weren't clear.  Let me reiterate: Equinox 
has the in-house tools to provide basic documentation for every 
development project they are undertaking going forward.  We believe we 
owe that to the community.  The other developers in the community 
(vendor or non-vendor) will need a mechanism for providing documentation 
with their development.  I think if the community agrees that DIG should 
be the arbiter of what development goes into a release based on 
documentation we should at least agree on a basic well-defined standard.

> Keeping features out of an official release due to a lack of
> documentation may be a crazy idea, yes. But a boy can dream. I think
> these (who decides what's in an official release? Hey, should the docs
> be part of the release tarball? Or at least offered for download as a
> separate tarball?) are very healthy discussions to have. Development is
> development, whether it's paid for via a contract, or paid for via a
> salaried position, or paid for via somebody's volunteer time when their
> kids are asleep and they could be doing 1000 other things. Documentation
> is exactly the same, and is arguably as valuable as the code underlying
> the features it explains.
>
I don't think anybody is arguing that documentation is important.  And 
the discussion of how to handle the documentation aspect of Evergreen 
development is past due.  I will be the first person to admit that we 
regret not being able to provide excellent documentation for every 
feature we've worked on.  We really are committed to working with 
everyone in the community to resolve this in a way that makes sense.

Thanks for the spirited debate!
Grace

-- 
Grace Dunbar
COO
Equinox Software, Inc.
gdunbar at esilibrary.com
1-877-OPEN-ILS  x5579
www.esilibrary.com




More information about the OPEN-ILS-DOCUMENTATION mailing list