On Fri, Jul 24, 2009 at 1:55 AM, Minh Nguyen<nguyenmi...@gmail.com> wrote:
>
> Hi folks,
>
> I just come across a document outlining some barriers to growing a
> community around an open source project. You can get it at this blog
> post:
>
> http://blogs.gnome.org/bolsh/2009/07/22/barriers-to-community-growth/

**Vision and product**

Mission Statement is clearly defined and helps people know what we are
doing, and usually very easily answers the question, "should Sage do
X?".  It is: "Create a viable free open source alternative to Maple,
Magma, Matlab, and Mathematica."

Sage is different than many other math software projects in that (1)
we use a mainstream language (Python) and (2) we put much effort into
building technical and social relationships with other projects and
research groups.  Also, the Sage project is perhaps more ambitious
than many other projects.

** Install issues **

* Is your software packaged for popular distributions?

We fail here mainly in not having a native windows version.

*  Does the make install target work well?

Yes

* Do you use system versions of dependencies when available?

Famously no.   But I believe we make the right choice here, because of
the extreme level of rigor and correctness requires for mathematics,
and the rapid improvement (=general instability) of the components of
Sage.

* Is the configuration of the package more complicated than it needs to be?

No, you just type "make".  Sage is amazingly trivial to configure.

* Is there a good README and INSTALL on getting started, and a “Getting
started” page on your website?

Yes, definitely.  Plus quick help on sage-support.

*  Is there an easy migration path for data from one version to another?

Yes. In theory, all data automatically migrates and "just works".  (Of
course there are some problems in practice, e.g., with recent symbolic
differentiation code.)

** Build issues **

* Do you use uncommon build tools or development tools?

Nope.  We make building easy.

* Does the software have a large number of dependencies?

NOPE!   They write "Software with a large number of dependencies may
be good architecturally, re-using code wherever possible. But it makes
building the software more complicated, sometimes requiring a new
developer to struggle with different  toolchains, build procedures and
packaging issues."    I think we do very good on this point.

* Do you require dependencies which are not commonly available in a typical
Linux distribution?

Nope!  They say "Worst of all is depending on software which is not
commonly available, and which  depends on another uncommonly available
package. A developer can spend hours chasing down rabbit holes looking
for the correct versions of required packages."   During at least the
first 2 years of Sage, this would have been half of the dependencies
of Sage, and would have taken weeks, not hours, for a typical
developer to sort out.

* Do you require dependencies whose API changes frequently, making it
difficult for the user to know if they have the right version?

Nope!

* Do you develop in an uncommon programming language, requiring learning
a new language and the installation of a large number of packages?

Nope! They list the common "good" languages as "C, C++, C#, Java,
Python, Perl and Ruby", so we're good with our main languages being
Python + C.

* Is the source code easy to find and easy to download on the website?

Definitely.

* Does the software take a long time to build?

Depends what "long time" means.  They write " Does the software take a
long time to build?  They write "OpenOffice.org famously takes over a
day to build on a powerful development workstation. Recompiling a
one-line change can take hours. Correcting build failures and setting
up the initial build environment can take a skilled engineer a week or
more. This barrier to entry is far too high."  Given what Sage gives
you, and that one can immediately develop with binaries, I would say
we even do fine by this metric.   I had no idea building OpenOffice
from source is that much harder than Sage.

** Product architecture issues **

*  Is there a good architecture overview document?

No, not good enough.  I did give a series of 4 talks 2 months ago that
were an architectural overview, and should turn them into
documentation...

*  Have you identified the three or four most likely changes a developer will
need to make, and tailored developer guides for those tasks?

No, that would be a good idea for a tutorial.    What are they?
   * add a new function to some existing class
   * improve plotting in some way
   * fix/improve something in the GUI notebook server
   * add a new ring/field/element

* Is there a community documentation repository? Is it maintained and
accurate?

Yes, yes for the most part.  He says " I suggest recruiting members of
the community who are passionate about this kind of resource to get
involved as official “wiki editors”, in the same style as wikipedia.
Daily pruning prevents wild outgrowth of wikis. "

* Does your product have a modular architecture that allows newcomers to
make small contributions without understanding how everything works?

Yes, definitely.  Thanks Python and that Sage is built out of a
hundred components.

* Are proposed contributions evaluated quickly?

He writes "When proposed patches are received, are they reviewed in a
timely manner, or  can they stay unreviewed in your issue tracker for
weeks or months? Do you track average and longest unreviewed patch
time regularly? This is a key metric for  community satisfaction."

I think our patch review process is too slow since indeed things do
stay unreviewed for weeks (and sometimes months).  We must find ways
to do better here.  So far, Tom Boothby has been by far the most
successful at setting an example of how to improve this critical
aspect of Sage development, IMHO.


** Project infrastructure **

*  Do you have a developer mailing list?

Yes.

* Do you have a users forum?

Yes

*  Do you have bug tracking software?

Yes

* Do you have a wiki?

Yes

* Do you provide a platform for community contributions?

Yes, at least through interact on the wiki's.   Maybe we should do
better though, and make it easier for people to post official
nontrivial contributions that haven't been refereed.... I don't know.

* Do you have a real-time communication channel?

Yes.  The document amusingly says: "There is a down-side to IRC which
should be kept in mind. Over time, the people who will be most active
in IRC will tend to be people whose only contribution to  your project
is being active in IRC. This is not necessarily a good thing. Bear
this  in mind later, when we talk about the “No asshole rule”. "

* Do prominent community members blog? Is there an aggregation of their blogs?

Yes.

** Behavioral norms **

* Have you documented accepted behavioral norms?   Does your project
have a community Code of Conduct?

No.  Should we? What would it say?

* Do you enforce a “No asshole rule”?

The document says: "The cost of not enforcing a rule of no deliberate
rudeness, no ad hominem attacks, and making sure that in general
people remain civil is that uncivil behavior will become the norm for
your forums."

I think we do a good job of avoiding rudeness, especially during the
last few months we have been doing better and better.  The forums are
I think very civil and when people are offended, they feel comfortable
saying so, and there is always a quick apology.

* Are employees and community members held to the same behavioral
standards?

Yes, though maybe this wasn't always the case for us.

** Governance & transparency **

* Are all of the project's decision makers on the developer mailing list?

Yes.   They go on to say "In many corporate projects, the most
damaging dynamic is when a decision gets made by someone not on the
developer mailing list, and is thus completely unaccountable to the
community for the decision. It is damaging for your community, who
feels ignored."  As much as possible, all Sage decisions are made "on
list".

* Has your community/corporate governance structure been clearly
documented?

They write "Many forms of technical governance are possible. A
dictatorship with a “benevolent dictator for life” is one popular
system, rule by committee is another,  and all too often anarchy is
the system which bubbles up, usually after an initial project founder
moves on to other things. The important thing is to document your
governance structure."

Our governance structure is decision making by very public developer
voting whenever possible, and BDFL (me) in those cases when decisions
just need to be made.   I try to take this responsibility very
seriously.

*  Is there a clear path for external contributors to become core committers?

Yes.  Implement it and post a patch.   (This is mainly a "company question").

* Are all your developers active on the mailing list?

Yes.

*  Do you get key contributors together regularly?

Yes!! (Sage Days)

* Do new employees get the keys to the house on their first day?

Not applicable.

*  Does the community participate in product roadmap discussions?

Yes.  This was a recent change with the creation of the sage-release
mailing list.

*  Are all decisions made in public?

Yes, as much as possible.

* Are you managing confidentiality?

Not applicable

** Legal barriers **

* Do you have a JCA?

NO.  They write "Joint copyright assignment is often required from
external contributors in corporate driven Open Source projects.  This
is not a fatal barrier to entry, but it will certainly dissuade some
developers. "

* Do you have an “always Free” commitment?

Yes.

* Do you have a trademark policy?

No.  They write "Many projects have had trouble reconciling copyright
and trademark law. The most prominent case is Mozilla Firefox and
Debian Iceweasel. A well defined trademark  policy, outlining what you
consider acceptable use of your trademarks in community usage of
artwork and derived versions of the software, will go a long way to
alleviating these issues. "

Obviously the above should be on our todo list.  Is anybody reading
this interested in doing something about this?   A starter would be to
trademark "sagemath" or "SageMath" and maybe a logo, and come up with
a policy statement.  This is not of personal interest to me yet, and
it hasn't happened yet, but I strongly encourage somebody to do it!

* Do you have a GPL policy for externally developed modules?

They write "Do you have a policy in place concerning what is covered
by the GPL, and what is not?"

We can't do anything like that because we don't own enough of the
copyright of the components of Sage.

-- William

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to