You are not logged in Log in Join
You are here: Home » DevHome » Subversion » RepositoryOrganizationNotes

Log in
Name

Password

 
 

History for RepositoryOrganizationNotes

??changed:
-
Repository Organization Notes

  Principles behind and incidental info about the organization of the
  repository.  This is actually the notes accumulated during design of
  the organization.

  Repository Organization Requirements

    - The organization of the repository should be designed 
      to value clarity and ease of collaboration over ease of 
      performing mechanical processes (such as making release 
      distributions). Release-making scripts will be responsible 
      for creating "release bits" that are appropriate, and 
      "release bits" may or may not look like what is in the 
      repository. 


    - The organization should support our open development process 
      and be compatible with "product" processes. For example, it 
      should be possible for a "shepherd" to manage a particular 
      part of the repository and manage development in the Fishbowl.
      At the same time, a "product" shepherd must be able to manage 
      a product lifecycle (which includes that part of the repository
      as a component part) without imposing too much overhead on the 
      component shepherd.

      This means, for example, that the Zope (product) shepherd must 
      be able to tag a specific revision of ZODB (component) for 
      inclusion in a specific version of the product bits. It should 
      be possible to do this (possibly for several products) with 
      a relatively lightweight amount of coordination. It should also 
      be able to happen in a way that doesn't impede the lifecycle 
      of the component (which implies that our branching policy may
      need to change somewhat to avoid "freezes" outside of the product).

    - Some parts of the repository can be used in multiple ways, and 
      have software bits that are unique to a particular usage (like 
      things only useful in a release distribution, but not in a 
      direct-checkout sort of usage). It is up to the shepherd of 
      a repository area to arrange things so that they are useful 
      in the appropriate contexts. For example, the ZEO part of the 
      repository might manage things like start and stop scripts 
      that are only used for a packaged release in a separate 
      subdirectory so that it is not in the way for use as a checkout. 
      The "release builder" for ZEO would be responsible for moving
      them to whatever place was appropriate in the release bits.

    - Software artifacts in the repository that have an identity 
      should manage any documenation related to that identity in that 
      place in the repository. For example, ZODB is a component part of 
      Zope, but it is also commonly used as a component in other systems
      (and may have its own standalone release cycle). ZODB-specific 
      documentation should be managed in the repository with the 
      software. Scripts, CVS modules or other mechanisms used to make 
      "release bits" should take appropriate action if the documentation 
      needs to be augmented or moved around in the release bits.

    - Some community users like to "run from CVS", which has not been 
      a problem until now because the repository (basically) reflected 
      the "release bits", making it possible to "run a checkout". It is 
      a goal to retain this ability, though it will likely be implemented 
      using CVS "modules" that build configurations of repository bits 
      that are shaped like release bits and can be run directly.

    - The repository organization should largely reflect the areas 
      of responsibility of various "shepherds", and be as self-contained 
      as possible. Shepherds are expected to know what is going on in 
      their bits of the repository, and have given people write access 
      with the understanding that they are only to make changes to their 
      own bits. Keeping things self-contained will help prevent accidents.

    - The repository organization should strongly encourage the use of 
      Python packages. Things that are not currently packages will live 
      in an area with a derogatory name, just to make us dislike putting
      things there and want to move things out. 

  Issues

    - Should there be a higher-level "technology area" organization,
      like "templating", "persistence", "relational", etc.? The 
      reality is that (at least in the beginning) shepherds will 
      be scarce - too scarce to have one for each DB adapter for
      example. One solution would be to have the "templating" shepherd,
      "persistence" shepherd, etc.

      **Resolution**: no, we are going to keep the repository as flat 
      as possible, as management process is too fluid to design the 
      repository around it.

    - Should "documentation" be a top-level area? This would relate 
      basically to what Amos and Mike are currently doing on SF. 
      Should it continue at SF? We don't have to answer that immediately 
      to achieve the goals of this project.

      **Resolution**: yes, documentation will be a top-level area. Most 
      likely the current SF documentation repository will move there.

  The New Repository Organization

    Here is the proposed repository organization.

<pre>

  Packages
    AccessControl
    App
    BTrees
    DateTime
    DocumentTemplate
    HelpSys
    Interface
    OFS
    SearchIndex
    Shared
    StructuredText
    Testing
    TreeDisplay
    ZClasses
    ZLogger
    ZODB
    ZPublisher
    Zope
    ZServer
    ZEO
    webdav

  Products
    ExternalMethod
    MIMETools
    MailHost
    OFSP
    PythonScripts
    SiteAccess
    StandardCacheManagers
    ZCatalog
    ZGadflyDA
    ZSQLMethods
    ZopeTutorial
    PageTemplates

  Documentation
    TheZopeBook
    ZopeDevGuide
    etc.

  Releases
    Zope
    CMF
    etc.

  Binaries
    xxx

  JunkPile ![known as 'Cruft' in the actual implementation]
    Zope core stuff not located elsewhere
    ExtensionClass
    BTree
    cPickle?
    PCGI
    zlib

</pre>

<hr solid id=comments_below>


jim (May 10, 2001 3:34 pm; Comment #1)  --
 <pre>
 >     - The organization of the repository should be designed 
 >       to value clarity and ease of collaboration over ease of 
 >       performing mechanical processes (such as making release 
 >       distributions). Release-making scripts will be responsible 
 >       for creating "release bits" that are appropriate, and 
 >       "release bits" may or may not look like what is in the 
 >       repository. 
 </pre>
 
 Overall, I agree, however, I do think that there *is* an important bit of machinery that should be supported. It should be easy to check out releases.
 That means that organization of a release should be possible via CVS
 modules.
 
jim (May 10, 2001 3:40 pm; Comment #2)  --
 <pre>
 >       This means, for example, that the Zope (product) shepherd must 
 >       be able to tag a specific revision of ZODB (component) for 
 >       inclusion in a specific version of the product bits. It should 
 >       be possible to do this (possibly for several products) with 
 >       a relatively lightweight amount of coordination. It should also 
 >       be able to happen in a way that doesn't impede the lifecycle 
 >       of the component (which implies that our branching policy may
 >       need to change somewhat to avoid "freezes" outside of the product).
 </pre>
 
 If a particular configuration can be expressed via a CVS module, then this
 can be done in a very straightforward fashion.
 
 <pre>
 >     - Software artifacts in the repository that have an identity 
 >       should manage any documenation related to that identity in that 
[86 more lines...]