[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Contributing to LedgerSMB, What, Why, and How

Hi all;

I figured it would be time to send out an email discussing
contributions and encouraging them.  It also lays out my vision for
what the LedgerSMB contributor community should eventually look like.
I expect contributions to occur in roughly types:  Primary
contributions for modules, secondary contributions based on specific
business needs, and solicited contributions by people looking for ways
to participate.

So let's start off with my vision of where I would like the LedgerSMB
community to go.  The community right now is largely a collection of
some independent service providers and consultants around me and to a
lesser extent Command Prompt.  Virtually every aspect of the software
I seem to have a hand in.  Currently I have made over 2/3rds of the
commits in the history of the project.  This structure limits the
scalability and robustness of our community, and while I have no doubt
that there are others who could step in to take my place, we would be
better off with more heavy contributors (it would mean a much larger
user base, and hence more business for everyone, to be honest).

What I envision is a set of interlocking "expert communities" each one
with one or more central experts, other strong contributors, and a
user base.   The overall community would still be under the umbrella
of LedgerSMB.  The goal is that of a community which cuts across
different types of members and helps businesses and users find
eachother.  This is not likely ever to be a benevolant dictatorship
but rather a guild-like group run by committee.  The life-blood are
the small businesses which offer services and support based on
LedgerSMB and help bring it to new customers.


So, suppose you have an idea that would make LedgerSMB better.   This
can be made into a reality by any of three ways.  You can discuss the
change with the community, get feedback and buy-in, make the changes
yourself, and contribute them to the community, you can pay someone to
do this for you, or you can try to convince people that their
businesses will benefit by providing some of the labor and/or cost
involved.  In general, the advantages of doing things the first way
both to the individual who puts in the work and to the community
outweigh the other options, if this is coming from a business that
wants to make money offering services on the software.

This is far more of the case when we are talking about new
functionality that doesn't exist.  Implementing new functionality
allows an individual to become the "go-to" person in a subfield of
LedgerSMB.  For example, if someone wants to create a simple MRP
module, this would allow them to enter into the community as a
resident expert of a particular topic, and this is helpful.  My
suggestion to anyone who wants to start a business in an area
currently unserved or underserved is do it, and get as much help from
the community as you can.  This could be anything from selling
pre-configured servers to building functionality for new markets.

There is an important corollary here.  In the past people have come to
me and asked for feedback about other markets, and when they have
found out I have put time and energy into planning a *possible*
business entry, they back off.  In general the major result is that I
get busy, don't enter the market, and they don't either.  This is not
a good pattern.  My feeling is that even if I am in a specific
business market anyway, I will generally be happy to help new people
enter it.  There is no reason to think that the customer target
markets will be identical and even if they are, there's only so much I
can do.   I'd rather have a smaller piece of a larger pie than a
larger piece of a smaller one.

To date, we have received a few primary contributions including the
new contact management schema (Joshua Drake), the new single payment
interface (David Mora), the new tax and template systems (Seneca
Cunningham), and the new installation documentation and tools (Erik
Huelsmann).  I am sure I am missing some people but those are the ones
that come to mind.

II:  Secondary contributions

Very little needs to be said here.  We are getting a certain number of
these.  Keep them coming.  I would however suggest that anyone who is
trying to make contributions here and build a business should feel
free to advertise the fact that they are a contributor.

III:  Solicited Contributions

So, suppose you want to start a business making money with LedgerSMB
and you are looking for a way to build your skills at developing the
software, as well as provide a way of differentiating yourself from
your competition.  It can be helpful to get involved, know what folks
are trying to get done, and start making contributions.  Such
contributions can help build subject-matter expertise not only on the
software side but also on the business process side as ideas for
changes get discussed, etc.  As we work on replacing the old code with
new code, this is an important area where people can get involved, and
where solicited contributions can become primary ones.

For example, between 1.3 and 1.4, I expect to be working on refining
the framework a bit and moving over old code for financial
transactions to the new approach.  If anyone wants to help lighten the
load that would naturally be appreciated.  But if someone wanted to
target something else, like project management or goods and services,
this would be appreciated too.  I expect to put up a list of things we
would like additional help with when possible.

IV:  Specific concerns

"So I don't know Perl or PostgreSQL very well."

That's ok.  Nearly all of the software is done in PostgreSQL stored
procedures and HTML forms via TemplateToolkit.  Getting the database
stuff right and the user interface right is a large part of the work.
You can always contribute the parts you can and try to work with
others to get the rest of it put together.  If nothing else, it will
drastically decrease the effort others have to put into tying
everything together.  Do what you can.  Let others pick up the rest.

Of course everything will have a learning curve regarding how we do
things, so don't let any of that stop you from slowly talking on other
parts you are less familiar with.

Best Wishes,
Chris Travers