Uploaded image for project: 'Ivy'
  1. Ivy
  2. IVY-434

refactor Ivy source code to improve readibility

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.4.1
    • 2.0
    • None
    • None

    Description

      Ivy needs some refactoring to ease the understanding of its code base for new developers. The migration to ASF is good moment to make this refactoring.

      Note that I open this issue really too late because most of the work is already done, but I want to keep track of what has been done in something easier to include in the release notes than the mailing lists.

      So I will copy some info from the mailing list to this issue:
      On 1/29/07, Xavier Hanin <xavier.hanin@gmail.com> wrote:
      Main focus:
      + split the Ivy class by features in:
      ++ IvySettings, which will be the result of the configure step (I do
      not use configuration to avoid confusion with module configurations)
      ++ ResolveEngine, which will be responsible for dependency resolution
      ++ RetrieveEngine, responsible for the retrieve step
      ++ and so on for each features/tasks
      The Ivy class will preserve an API similar to the existing one, but
      will only be a Facade to other classes. Moreover, methods taking too
      many parameters (like resolve) will be refactored to take a fewer
      number of parameters, using a class (like ResolveOptions for instance)
      to group those which are not first class parameters

      I will also work on the dependency resolution algorithm, and
      especially on IvyNode. I will split it into at least two classes, one
      representing the node in the dependency graph, and one with data
      related to the traversal of this graph during the resolution process.

      Another thing I'd like to address is to reduce the number of classes
      in the same package, and the number of packages of the same level
      (namely org.apache.ivy.* packages), to move to something more
      structured and hopefully less confusing.

      This refactoring will introduce many API incompatibilities, but it
      should hopefully help people to understand the code.

      This is only the big picture, I'll keep you informed of my progress,
      and try to process by steps to allow frequent feedback and
      discussions.

      Attachments

        Activity

          People

            xavier Xavier Hanin
            xavier Xavier Hanin
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: