- The Book of Dojo
- The Dojo Book, 0.4
- Part 1: "Introduction"
- Part 2: "Out of the Box" Dojo
- Part 3: "The Dojo Programming Model"
- Part 4: "More on Widgets"
- Part 5: "Connecting the pieces"
- Part 6: "Customizing Dojo Builds for Better Performance"
- Part 7: "Utilities"
- Part 8: "Internationalization and Accessiblity"
- Part 9: "Dojo Community"
- Part 10: "Fresh From The Shed" Dojo
- BookWriting
- Glossary
The Foundation
Submitted by ktiedt on Mon, 09/04/2006 - 12:56.
Why A Foundation?
Development of Cometd, the Dojo Toolkit, DWR, and OpenRecord are supported by an independent foundation which is set up as a 501c6 not-for-profit legal entity. Like other Open Source foundations, the Dojo Foundation provides infrastructure for development, shields individual contributors from liability, and helps to ensure that project communities are healthy and successful.To understand the relationship between the various projects and the Foundation, it helps to understand what the Foundation is responsible for, how the Foundation makes decisions, and what guiding principles shape these decisions. The Dojo Foundation handles:
- Licensing and distribution of Foundation projects
- Development infrastructure
- Sponsorship of new projects
- Project oversight (including accepting new committers)
Now that the Dojo foundation is several years old and has had a chance to discuss our choices with colleagues from other Open Source foundations, it is pretty clear that any new Open Source project that wants to start a Foundation should think twice. Or three times. In most cases, starting a new foundation shouldn't be necessary, but should it be, finding a good lawyer to assist in the process should be the first step anyone takes.
There appears to be a strong "language affinity" between the communities that spring up at Open Source foundations and that affinity tends to determine what types of projects happen in those communities. In the case of the Dojo Foundation, we inadvertently created the only JavaScript-centric Open Source foundation. As such, we view an important part of our role as being a neutral place where high-quality JavaScript work can get done. The Dojo Foundation today serves as a thin legal structure that attempts to impose as little bureaucracy into Foundation projects as possible while still achieving Foundation and project goals.
Foundation Goals and Principles
The Foundation hasn't adopted a set of official principles and goals at the time of this writing, but historically the Dojo Foundation has worked to:- Provide a level playing field for everyone who wants to be involved in Foundation projects
- Provide licensing terms that encourage adoption of Foundation projects
- Help potential contributors and sponsors understand what involvement in Foundation projects entails
Voting
Decisions inside the foundation are made based on a voting basis handled via mailing lists. Committers on any Foundation-sponsored project are eligible to vote on any Foundation matter and any committer may propose a vote on a topic. Votes are won or lost based on a simple majority of votes cast. Almost all votes take place on the dojo-contributors mailing list, a semi-public mailing list which all contributors to Foundation projects should be subscribed to. Votes are always conducted in a public forum with adequate time provided for all interested parties to cast a vote, traditionally 48 hours from the sending of the email that proposes the vote, but balloting may be left open longer. Since there isn't a formalized concept of membership in the Foundation, voting by committers is the way that the will of the Foundation is assessed.Licensing
The Dojo Foundation has straightforward licensing goals:- Encourage adoption
- Discourage political contention
- Encourage collaboration and integration with other projects
- Be transparent
- Release all code under the terms of the Academic Free License version 2.1 ("the AFL")
- Request a variance from the Foundation in order to release their code under additional licenses. Variances are granted by a vote of Foundation committers and are generally non-controversial as long as the proposed license meets the foundation licensing goals.
- Require that all contributors submit Contributor License Agreements to cover their original works which are submitted for inclusion.
- Provide a clear disclaimer of origin and copyright ownership when including or distributing 3rd party code. (example)
Foundation Projects
Today there are 4 Foundation-sponsored projects:Each project releases code independently, has their own development infrastructure (sometimes shared), and manages it's own community, including the introduction of new committers into their project.
Projects may organize themselves "internally" any way they wish, but in general, all critical project decisions should at least be subject to over-ride by committers of the project by a vote on the appropriate mailing lists.
New Committers
There are many ways to get involved in Foundation projects, and becoming a committer is the last and most significant way to get involved. Projects are free to invite new committers any way they see fit. The Dojo Toolkit project, for instance, and historically used a process like this:- Contributor starts to help others in project mailing lists and on IRC
- Contributor files CLA
- Multiple non-trivial patches are merged from the contributor
- Being impressed with the contributions of the contributor, a committer recommends to the project lead that the contributor be offered a spot as a committer.
- Project lead reviews the submitted patches and consults with others in the community to ensure that the contributor "is a good fit"
- New committer is added to the project
New Projects
From time to time, new projects are brought under the umbrella of the Dojo Foundation. This has historically been infrequent (less than two new projects per year). New projects are considered on an individual basis, and no one can simply declare a project to be a Dojo Foundation project. A majority vote of all committers on all Foundation projects is required for any new project proposal to be accepted. These votes take place on the dojo-contributors mailing list.The minimal requirements that any new project proposal should meet are:
- Clear title and license to all copyright and other IP that affects the code base. Since this will all be licensed through the Dojo Foundation once the
- Willingness to abide by Foundation licensing goals and policies
- Once accepted as a project, all project committers must submit CLAs
- All 3rd party code must be correctly noted
- No variances will be granted for licenses that are not in harmony with Foundation licensing goals (e.g., the GPL).
- No code without committers. The Foundation will not take on "abandonware" projects nor will any projects be considered that don't have a clear group of individual committers who will be dedicated to seeing the project succeed. Corporate-sponsored projects are fine so long as the resulting project will accept committers from outside the sponsoring corporation.
The Role of the Board
As noted in the introduction to this chapter, the Dojo Foundation is a thin legal "shim" that binds the various Foundation projects together under a single banner and set of guiding principles. As a result, little formalism is desired or required from the Foundation board or from Foundation projects. The Board simply carries out the will of the aggregated committers. Today, the Board is comprised of:- Alex Russell, President
- Dylan Schiemann, Treasurer and Secretary
Project Leads
Every project designates someone to hold the "project lead" position. Currently, these are:- Brian Skinner (OpenRecord)
- David Davis (Cometd)
- Alex Russell (Dojo)
- Joe Walker (DWR)
Cross-Project Pollination
There is no foundation-wide policy regarding how projects from one Foundation project are accepted into sister projects. It's up to each project to set these policies, but should a deadlock or impasse occur, Dojo Foundation Officers (the Board) reserves the right to settle the dispute.The Foundation strongly encourages each project to set up a transparent process for accepting committers from sister projects that is less onerous than the process for accepting external committers but leaves the exact details of how this happens up to each project.
