There is no problem with competitive packages, but we want to
    avoid pollution with 10 template classes, 7 different mail classes,
    and 3 different layers for databases doing the same only with
    different function names.
   
    First of all, do a reality check: Why do I want to commit a new
    package? Really bad answers are "To see my name in
    PEAR" or "I didn't understand the API of the existing
    class".
   
    A good reason for a new class is often, that you are missing a
    function, behaviour or speed in an existing implementation. In
    this case, you  should take a look at this class, if it possible
    to extend this class. If not, then you have a good reason to
    commit a new class. "If not" means, it isn't possible
    to add the required functionality without changing the basics of
    this class.
   
    If you write a new class, try to keep API compatibility with
    existing classes as far as possible! If it isn't  possible to keep
    the class compatible himself, try to create a wrapper class to
    keep compatibility. Don't care, if this wrapper needs a lot of
    time or memory, a wrapper class only has to keep compatibility and
    make migration easier.
   
    Committing a competitive class has to be announced on the PEAR developers mailinglist!