blob: 2a8071b313deb4803320e58bb361c529573cdf9a [file] [log] [blame]
[[starting]]
== Starting an Open Source Project at {forgeName}
Before getting started, it's important to know what is required
of {aForgeName} project. The Eclipse Foundation will take ownership
of many aspects of the project to ensure that the project and its
assets are are managed in an open and vendor-neutral manner. This
takes the form, for example, of the Eclipse Foundation retaining
ownership of project's trademarks on behalf of the community, and
carefully managing who has write access on project resources such as
source code repositories and distribution channels. {forgeName}
projects are obligated to use certain <<project-resources-and-services,resources>>
assigned to the project by the Eclipse Foundation and conform to
logo and trademark guidelines. New project sponsors must engage in the
process of transitioning an existing project with the intent to continue
development of the project code and growth of the community and ecosystem
around the project.
It's also important to know what new projects don't give up. The project
team retains control of the project's direction by virtue of
regular contribution to the project. The contributors to the project
retain ownership of their contributions (those contributions are used
under license by the project). Project leads are required to
ensure that other individuals who present themselves to the project
are given uniform opportunity to participate, but project team gets to
establish the rules for participation (within certain parameters). The project
team is responsible for determining development methodology, establishing
plans, etc. Existing owners of the project code retain their ownership.
{forgeName} open source projects start with a proposal that is made
available to the community for review. At the end of the 'community
review' period, we engage in a 'creation review', and then
provision the project resources.
[graphviz, overview, svg]
.An overview of the Project Creation Process
----
digraph {
// Graph properties
bgcolor=transparent
// Nodes that define the key points in the process
node [shape=box;style=filled;fillcolor=white;fontsize=12];
proposal[label="Project Proposal", group=g1];
community[label="Community Review", group=g1];
review[label="Creation Review", group=g1];
provision[label="Provision", group=g1]
// Nodes that define things that we need
node [shape=plaintext;fillcolor=transparent;fontsize=10]
approval [label="EMO\nApproval"]
trademark [label="Trademark\nReview"]
mentors [label="Mentors"]
paperwork [label="Committer\nPaperwork"]
// Stitch the key points together
proposal -> community -> review -> provision
// Use grey lines to add in the things we need
edge [color=grey]
approval -> community
mentors -> review
trademark -> review
paperwork -> provision
// Force the trademark and mentors boxes to
// be on either side of the main process points.
// Do this by creating invisible lines that would
// cross if they are on the same side.
node[style=invis] ic
edge [style=invis]
trademark -> ic
mentors->provision
}
----
Use the {createurl}[web form] to create a new project proposal.
Instructions are provided on the form. All new proposals are created
in 'draft' mode, and are accessible only by the original author and
anybody designated as a project lead or committer in the proposal.
Only those individuals designated as a project lead may edit the
proposal.
NOTE: Keep track of the URL of the proposal. We do not provide
public links to the document until after the proposal is opened for
community review.
A proposal must minimally include a description of the project, a
declaration of scope, and a list of prospective members (project
leads and committers) before we make it accessible to the public
for 'community review'.
When you feel that the proposal is ready, send a note to
the Eclipse Management Organization (EMO) at {emoEmail} requesting that
the proposal be made available to the public for review. The EMO
will review the proposal and may provide feedback before initiating
the 'community review' period.
At the beginning of the 'community review' period, the EMO will
announce the proposal on several channels (the {activityUrl}[Project
Activity News] page, Twitter, the
{proposalsForum}[Proposals Forum], blog post, and an email note
to the Eclipse Foundation members and committers). The EMO will
also open an record in the Eclipse Foundation's issue tracker--an
instance of Bugzilla--to track the progress of the proposal;
the proposal's author and project leads will be copied on that record.
A proposal will be open for community review for a minimum of two
weeks.
The Eclipse Foundation holds the 'trademark' for all {forgeName} projects.
Trademark assignment is undertaken prior to the creation of any new
project. If you already have a trademark on your project name, that
trademark must be assigned to the Eclipse Foundation. Be advised that
trademark assignment can be a time-consuming process (it can take hours,
days, or weeks depending on the circumstances surrounding the name).
If you currently hold the trademark, you will be asked to complete a
{trademarkTransferUrl}[Trademark Transfer Agreement].
The proposal must list at least one mentor from the Architecture Council.
Members of the Architecture Council have considerable experience with
Eclipse Foundation practices, and the {edpUrl}[Eclipse Development Process].
If you are already in contact with mentors who agree to help you with
your project, please do list them in the proposal. Otherwise, the
EMO will engage directly with the Architecture Council to identify
mentors as necessary. Mentors are available to the project through the
incubation phase; they are released from their duties when the project
<<release-graduation,graduates>>.
When the project name trademark has been secured, a mentor has been
identified, and the proposal contents are finalized, the EMO will schedule
a 'creation review'. Reviews--which run for a minimum of one week--are
scheduled twice a month, generally concluding on the first and third
Wednesday of each month. The creation review may overlap with the
'community review' period.
NOTE: Creation reviews tend to always be successful. They should be
considered low stress as the hard work has already been done in
advance of the start of the review.
Following the creation review, the EMO will initiate the provisioning process.
To gain committer status, some <<paperwork,committer paperwork>> must be completed
as part of the provisioning process. The exact nature of that
paperwork depends on several factors, including the employment status
of the individual and the Eclipse Foundation membership status of their employer.
NOTE: If you can be ready with the paperwork in time for the completion of the
creation review, then we can move quickly through the provisioning process.
When we initiate provisioning, committers will be sent an email with
instructions; please don't send any paperwork in until after you receive
those instructions.
[[starting-after-provisioning]]
=== After Provisioning
The Webmaster will send a note announcing the completion of the provisioning
process. Before you commit any code into your project repository, you must
submit your project's <<ip-initial-contribution,_initial contribution_>> and
list of third-party libraries for review by the IP team.
[graphviz, post-creation, svg]
.Post creation activities
----
digraph {
// Graph properties
bgcolor=transparent
// Nodes that define the key points in the process
node [shape=box;style=filled;fillcolor=white;fontsize=12];
ic[label="Submit\nInitial Contribution", group=g1];
git[label="Push to Git", group=g1];
build[label="Build and Distribute\n(milestones)", group=g1];
release[label="Release", group=g1];
// Nodes that define things that we need
node [shape=plaintext;fillcolor=transparent;fontsize=10]
ip_checkin [label="IP Team\n\"Check-in\""]
ip_approval [label="IP Team\nApproval"]
// Stitch the key points together
ic -> git -> build -> release;
// Use grey lines to add in the things we need
edge [color=grey]
ip_checkin -> git
ip_approval -> release
}
----
Do not commit any code to your project's source code repository until after
you receive _check-in_ permission from the IP Team. Once you've received that permission,
you can create and distribute _milestone_ builds for your first release. You must
wait until after the IP Team has approved your initial contribution and use
of third-party libraries before you do any official <<release,releases>>.
NOTE: Project teams interact with the IP Team via the <<ip-ipzilla,IPZilla>>
system using <<ip-cq,Contribution Questionnaires>> (CQs). The IP Team will
indicate check-in permission by adding the +checkin+ keyword and final
approval by setting the state of the CQ to +approved+.
[[starting-project-phases]]
=== Project Phases
All new projects start in the 'incubation phase' (a project in the
incubation phase is said to be 'incubating'). The classification of
a project in the incubation phase is not a statement about the quality
of the project's code; rather, incubation phase is more about the
project team's progress in practicing the open and public processes
necessary to establish the three communities (developers, adopters,
and users) around the project.
.The Incubation Logo
image::images/Egg-incubation.png[]
In order to alert potential consumers of the incubating nature,
projects in the incubation phase must include 'incubation branding'.
The project team must:
* Display the incubation logo on their project web page (if they have one);
* Display the incubation logo on their project's primary download page;
* Include the word "incubation" in the filename of all downloadable
files (when technically feasible) for builds and milestones;
* When technically feasible, include the word "incubation" in features
(e.g. about dialogs, feature lists, and installers).
There are no incubation branding requirements for general
user interface elements.
NOTE: For projects that produce OSGi artifacts, include the word
"incubation" in the 'Bundle-Name', feature names, and p2 repositories.
The word "incubation" should not be included in technical
namespaces (especially when it may result in confusion when the project
leaves incubation). e.g. an OSGi bundle's 'Bundle-SymbolicName', or a
Java package name.
Incubating projects that correctly conform to the incubation branding
rules outlined above may take advantage of the <<ip-parallel-ip, Parallel
IP Process>>. They are encouraged to produce milestone builds, make
releases, and grow their community.
When the project code is ready (e.g. stable APIs) and the project team
has learned to operate as an open source project according to the
Eclipse Development Process, the project may opt to 'graduate' into
the 'mature phase'.
Most of the lifetime of {aForgeName} project is spent in the mature phase.
A mature project is one that:
* Is a good open source citizen with open, transparent, and meritocractic behavior;
* Regularly and predictably releases IP clean extensible frameworks and exemplary tools; and
* Actively nurtures the three communities: developers, adopters, and users.
[[starting-faq]]
=== Frequently Asked Questions
[qanda]
How do I find Architecture Council mentors? ::
You don't have to find them yourself. Focus on the content of the
proposal. We can solicit mentors from the Architecture Council after
the proposal has been opened for community review.
Can I change the proposal after it is posted? ::
Yes. The proposal can be changed any time before the start of the
start of the creation review.
When do I submit my code for review by the IP team? ::
Submit your code (initial contribution) for review after the project
has been provisioned. The Eclipse Webmaster will let you know via
email when provisioning is complete.
Does the new project have to use Git? ::
Yes. Git is the only source code management system that is currently
permitted for new projects.
Can I host my project code on GitHub? ::
New projects can make use of <<resources-github,GitHub>>. Official project repositories
must be moved under the {gitHubUrl}[{forgeName} Organization] at GitHub.
Official repositories are subject to the same intellectual
property due diligence rules and processes that all Eclipse project
repositories must follow.
How long should I let my project incubate? ::
It depends. Community expectations are one factor. Team experience
with open source is another. If your team is new to open source,
it may make sense to stay in incubation a little longer than a
seasoned team with a mature code base might. As a general rule,
though, projects should plan to leave incubation within a year.
Does the mature project code that I'm bring to {forgeName} need to incubate? ::
Yes. All new projects start in the incubation phase. Remember
that incubation is as much about the project team learning about
how to operate as an open source project as it is about the
project code. Project teams that "get it" can opt to exit
incubation quickly (e.g. with their first release) if that
makes sense for the team and the community.
What do all these terms (e.g. EMO) mean? ::
Please see the <<glossary,glossary>>.