I would like to share with you a proposal we've been internally discussing
for the last days. It's related to 3.0, the split of Core, the modules and
the Mercurial repositories. You'll be the number one audience affected by
these decisions, so your opinion is welcome!

With our current structure we have Core from one side (pi/main) and the
modules in another. This makes sense in 2.50, because Core in this version
is useful by itself, it doesn't need other modules to work. In 3.0 the
story changes: Core is not of use by itself, it needs other modules to
work.

So let me share with you the challenges we have and 2 possible solutions:
one that uses our old approach and another one that proposes a different
solution.

Challenges:

* 3.0 is a distribution of Core + 15 modules.
* Developers: creating and maintaining a development environment.
* Issue tracker, Mantis: reporting bugs.
* SCM, Mercurial: multiple major versions.
* CI, Hudson: how to promote Core + 15 modules as a group.
* Packaging of the release.

Possible solutions:

1) Continue as we are now. Use pi/main for Core and a repository per
   module, no matter if it's part of the 3.0 distribution or not.

  * Pros:

    - It's clean: once repository per entity. One repository for all
    the major versions of a module.

  * Cons:

    - Developers:

      . Creating a 3.0 development environment means cloning pi + 15
      modules. Maintaining it means updating 16 repositories.

      . Reproducing someone's environment is more difficult: you need to
      gather info about 16 repositories and update to those exact
      revisions.

    - Issue tracker:

      . It's hard to faithfully report an issue describing the revisions
      you are using. Currently "product version" (e.g. pi) and "SCM
      revision" affect to Core only. What about the rest of the 15 modules?
      e.g. pi in changeset fde3456cb fails with APRM in changeset
      67764fecb. Oh, and the application.kernel in 5feca23b, etc. Even if
      we can add this as a note, there's no way to filter this when
      searching.

    - CI:

      . This is one of the most difficult parts. Promoting 16 repositories
      in a synchronized manner. We'd need 2 repositories per module. We
      already have pi and main for Core. We'd need the same for the rest
      of the modules.

      . Hudson is not designed to use multiple repositories in a nice
      manner.  It's not possible to view what changes are being tested
      using the interface when you're using 16 repositories.

    - Packaging:

      . You have to externally keep track of what modules versions match
      with what core version.

2) As 3.0 is a distribution of modules, take those 15 modules and add them
   into the pi/main repositories, inside the modules directory.

  * Pros:

    - Developers:

      . Creating a 3.0 development environment means cloning pi. And
      maintaining it means updating 1 repository. Similar to our current
      2.50 approach.

      . Reproducing someone's environment is simple: there's only 1
      revision ID.

    - Issue tracker:

      . It's easy to faithfully report an issue because there's only 1
      revision

    - CI:

      . The promotion is simplified tremendously. 1 repository, 1
      promotion.  From pi to main, as usual.

      . We can continue making use of the Hudson interface to view changes.

    - Packaging:

      . No need to externally keep track of what modules match with that
      Core version.

  * Cons:

    - The 3.0 modules would reside in pi/modules. And the 2.50 modules in
      erp/mods.

    - If you want a 3.0 module which is part of the distribution you need
      to clone the entire pi repository.

    - If we want to develop a new major version of a module included in the
      3.0 distribution, then we'd need to create a separate repository for
      that module.

Additional possible questions: in solution 2), what if I want to develop
a new feature in my module? Simple, create a branch of pi and do it as
usual.

Feel free to fire up your questions, comments or additional proposals.



Regards,

Juan Pablo


------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Openbravo-development mailing list
Openbravo-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-development

Reply via email to