[MUD-Dev] TECH: Managing all your code

J C Lawrence claw at kanga.nu
Sat Jan 12 20:29:52 CET 2002


On Tue, 8 Jan 2002 14:41:55 -0500 (EST) 
Eric Rhea <eric at enkanica.com> wrote:

> I'm starting to feel the strain of managing a large number of
> projects, written in various languages and with each differing in
> size, length, and purpose. I think the management aspect of this
> would be a fairly common problem - if not, then what are you doing
> to keep it all under control? Is there some common app that most
> use to handle what source you have, the purpose of that snippet,
> licensing for that particular piece, etc?

There are several problems masquerading as one.

  1) The problem of keeping track of the many little bits and pieces.

  2) The problem of keeping track of what all the little bits and
  pieces mean, and what value they have.

  3) The problem of keeping track of how all the little bits and
  pieces change over time and how that changes their meaning

  4) The problem of keeping track of how all the little bits and
  pieces change over time and how that affects their value and
  integration with all the other little bits and pieces.

  5) The problem of finding the little bit that does or can do what
  you are interested in or looking for.

  6) The problem of determining and realising how all the little
  bits and pieces plug together and form an architecture.

  7) The problem of understanding what problems each of the little
  bits and pieces solves, AND what problems they also create in
  rendering that solution.

  8) etc (and there are quite a few etceteras to this list).

They're not simple problems.

Most interestingly they all sum to, "Understanding what is going on
and what it means".  The problem is that description is too general
to be much use.  So, in classical engineering fashion, you
sub-divide the problem and then try and solve the smaller bits to
see if you can't get a solution to the bigger problem that way.

Some common tools and subdivisions:

  Use a source change management tool (SCM).  ie a system to keep
  track of all your sources, how they change, who changed them,
  when, why, how, etc.  There are scores of products in this arena.
  They all have variously different strengths and weaknesses.  They
  all create additional problems of various calibres.  Common
  examples enclude CVS, SCCS, RCS, VCS, ClearCase, Perforce, ptools,
  VSS, BitKeeper and many many others.

  ObAdvocacy: I particularly dislike CVS (see prior rants) and
  like/use/advocate BitKeeper (http://www.bitkeeper.com/) in
  general for this area.

    An SCM tool can help with #1, parts of #3, and parts of #4.

  Source documenting systems range from things like JavaDoc (and its
  many variants for other languages) all they way down to Knuth's
  literate programming (http://www.literateprogramming.com/)
  efforts.  There's been a lot of effort in this area over a very
  long time.  The number of tools and attempted solutions in the
  space is bewilderingly large.

  ObAdvocacy: I like (and mostly don't use out of incorrigible
  laziness) JavaDoc (and its variants).  JavaDoc does good things in
  a fairly pain free manner (well, more pain free than most others).

    Source documentation systems can help with #2, #5, and bits of
    #6.

  Tracking systems have a similarly wide range of implementations,
  models etc.  I've never seen one I really liked (tho SGI's in
  house system came close) so I won't comment on details here.  Such
  systems are generally known as ticketing systems, bug tracking
  systems, or defect tracking systems (there is a subtle
  definitional difference between the three).

    Tracking systems can help with parts of #3, bits of #4, and some
    of #7.

  Documentation systems help define, dictate, and communicate
  architectures and understanding of systems.  This plugs into and
  is part of another whole field (which is quite enormous) called,
  "Knowledge Management".  The range of tools available here is
  massive.

  ObAdvocacy: I tend to like very simple easily edited tools for
  these aspects, and generally advocate WikiWikis, and in particular
  TWiki for the general case.  Nice tool.

    Documentation systems can help with bits of #1, most of #2,
    parts of #3, parts of #4, small bits of #5, #6, and parts of #7.

  Source browsers can help gain overviews of source sets, and, if
  integrated with SCM systems, how a source base evolves over time
  (note that they are different but related problems).  This tends
  to be a religious area with individuals having strong preferences
  and feelings about what works for them.

  ObAdvocacy: I'm rapturously in love with BitKeeper's "promerge"
  tool for watching source base evolution.  I also use XEMacs'
  oobrowser, exuberant etags, cscope, and other tools frequently for
  analysis of a static source base/architecture.

  Note: There was a minor thread on this area on the meta at kanga.nu
  list recently.  You might want to check the archives.

    Source browsers can help with #2, #3, parts of #4, #5, and bits
    of #7.

Summary:

  There are no perfect all encompassing solutions.  Its rather
  unlikely that there ever will be as the basic problem that's being
  solved is making sure that some human fully understands the
  design, architecture, construction, operation, implications, and
  history of a (set of) variously large and complex systems.

  That's a pretty personal thing, human understanding.  You can help
  it, but you can never guarantee it.

ObCommentary:

  That's why they pay architects the big bucks.

--
J C Lawrence                
---------(*)                Satan, oscillate my metallic sonatas. 
claw at kanga.nu               He lived as a devil, eh?		  
http://www.kanga.nu/~claw/  Evil is a name of a foeman, as I live.
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list