We are taking several steps to improve contrib and the facilities used
to host Clojure development. The goal is to make it easier and more
desirable to work on the Clojure project, and encourage more libraries
to be developed within the project.

There are several impediments to people working in or on contrib, and
within the Clojure project. The community is obviously vibrant, as
there are many independent libraries. But fewer people work on Clojure
itself or on libraries intended for inclusion in Clojure. I'd like
that to change.

Although there have been recent efforts to make contrib more modular
from the Maven perspective (thanks Stuart Sierra!), it is still a
monolithic repo. Logically, the individual libs are more independent
than the repo structure would indicate. It should be much easier to
obtain, build, version, distribute, branch, test and modify individual
libraries.

Some of these problems flow from historical choices made by the
project. In particular, without money, boxes and the staff to maintain
machines on the net, I chose free project hosting service providers -
first SourceForge, then Google Code, and most recently GitHub and
Assembla. In all cases, there was a tension between project and user
management and code granularity. It would have been difficult to
manage the contrib libs as independent projects/repos.

Several things have changed recently that enable a better strategy.
GitHub has added an organization feature that lets us manage users at
the organization level and put multiple repos under the organization.
Contegix is donating a hosted box so we can run our own server (thanks
Contegix!), and the Clojure/core team now exists and is (voluntarily,
and among other things) providing much needed administrative support
(thanks Clojure/core team!).

The New Model

Contrib libraries will be independent repos under the Clojure GitHub
organization. All contributions to these libraries will be
contributions under the CA (therefor, no pulls). The primary authors
will have substantial independence in terms of versioning. branches
and releases etc, and it will be easy to obtain and work on a contrib
library a la carte.

We will be moving from Assembla to a self-hosted installation of the
Atlassian suite, which they generously make available for free to open
source projects (thanks Atlassian!). It will give us a superior wiki
and bug tracking system. We will initially have support for Jira,
Confluence and FishEye, and will be able to centrally manage users
with Crowd.

Individual contrib projects will get documentation and planning space
in the Confluence wiki, and a dedicated subproject in the Jira
tracking system.

Contrib is not a Standard Lib

People often ask if contrib constitutes a standard library. It has
always been a goal of contrib to support exploratory work of the
community that might or might not become part of Clojure proper, so
the simple answer is no. As volunteer open source efforts, each
library is likely to differ in quality, maturity and attention level.
In that respect, they don't differ from all of the other libraries on
GitHub. And with the new model, you will be using the same criteria in
evaluating a contrib library as you do any other open source library -
documentation, participation, recommendations, activity, stability,
bug reports etc. And you'll only consume as much of contrib as you
desire. Libraries will succeed on their merits. It is our plan to
reserve the 1.0.0+ designations for the more mature and widely
accepted libraries when they reach that point. That's as much
sanctioning as I anticipate for the near term.

You've Got to be In it to Win it

Why work within the Clojure project? Because you want your work to
eventually become part of Clojure and the Clojure distribution. You
want to tap into the core development effort and have an impact on it.
You are interested in collaborating on how best to make a set of
things work together in a coherent way, as Clojure does.

Isn't the GitHub free-for-all easier? Yes, but with this new setup,
only very slightly so. The easiest thing is not necessarily the best
thing. Participating in a project involves cooperation and compromise,
and stewardship implies responsibility.

Moving Forward

We will be working on getting the existing contrib libraries moved
over to the new model. Meanwhile, I'm happy to announce three new and
exciting contrib libraries that are kicking off the new model:

Chris Houser's Finger Tree - http://github.com/clojure/data.finger-tree
Chas Emerick's Network REPL - http://github.com/clojure/tools.nrepl
Michael Fogus's Unification Library - http://github.com/clojure/core.unify

These are terrific contributions, and good examples of things that
will have the greatest impact by being part of the Clojure project.
Thanks guys!

There are still some infrastructure things being worked out as regards
Confluence, Jira etc, and the Conj is keeping everyone busy at the
moment, but I expect this all to be in full swing shortly thereafter.
You can follow along here: http://dev.clojure.org/

I'm looking forward to seeing many of you at the Conj!

Rich

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to