Package Manager

A package manager is being developed to easily distribute new versions of packages

What is a package ?

From a pure coding perspective, a package is a delivery unit which do not have cyclic dependecy.

  • A delivery unit : means it is cohesive. Usually this means a package is a piece of software which brings features related to each other
  • Without Cyclic dependency : the dependency between packages sould always be without cycle.
    A dependency package should never be forced to change because an afferent package has changed.

Chamilo's package

Currently we have different things we call packages :

  1. the common package
  2. each of the core app
  3. each of the optional app
  4. each of the content_object
  5. each of the external_repo driver
  6. each of the video_conferencing driver

Core app's are not (currently ) packages...

... because they depend on each other : admin depends on user, user depends on admin => cycle

that's ok but let's face it the core apps are modules of the same package => core

Additional Libraries are not packages...

... and they do not even exist in chamilo architecture.

We can do content_object but what if I don't want to provide a new "thing" to put in your repo but just a set of funtionality
We can do application but what if I really want to share functionalities betwwen several app
We can put things in common/libraries but let's keep that thing as light and stable as possible.

JS libraries are not packages

And that might be a problem because application depending on them must include them instead of sharing them.


The package manager will be a centralized tool for finding decentralized packages. This means that we need a way to find packages wherever they are. We probably need a concept of depot where to put archived package.

It would be great if we could use a Mercurial repository as a depot for a package. that way anybody would be able to provide a URL to its Mercurial repo to a Chamilo Administrator to install a custom package

Official Depot List

An official Depot List provided by Chamilo would be necessary as a starting point. Just like debian has its source.list, eclipse its repository or hudson its plugin list.

Description of a package

Additionally to a name an a textual description. that would be great if each package could optionally provide its status (alpha, beta, delta, manga, ....), some way to find its author (email address, web page, irc), and some way to discuss its features / bugs (forum, ticket)

Of course we also need what we have currently in : dependencies to other packages, dependencies to php version, dependencies to JS version, dependencies to HTML version, version of the packages

Who said community ?

The package status can be a great tool but it is up to the author to define it.

Maybe a voting/commenting system (even anonymous) could do a lot of for separating the good from the evil...

Updated by Anonymous over 11 years ago ยท 5 revisions