Difference between revisions of "Development Resources/HOWTO/The Eclipse Code Namespace Policy"

From Eclipsepedia

Jump to: navigation, search
(Maven Repositories)
 
(6 intermediate revisions by one user not shown)
Line 1: Line 1:
 
Eclipse projects must carefully manage their namespaces in order to help identify the producer of components and avoid namespace collisions.
 
Eclipse projects must carefully manage their namespaces in order to help identify the producer of components and avoid namespace collisions.
  
Exceptions to these guidelines must be approved by the Project Management Committee and the EMO.
+
Some of the content here is presented in the form of guidelines ("should"), and some in the form of rules ("must"). In general, it's about being a good citizen and playing well with others. We believe/hope that exceptions to the rules are rare; exceptions to rules must be approved by the Project Management Committee and the EMO.
  
=Java Package Names=
+
=Languages=
Java package names take the standard [http://en.wikipedia.org/wiki/Reverse-DNS reverse DNS] form:
+
==Java Package Names==
 +
 
 +
Java package naming conventions are well-established and so Java package names '''must''' take the standard [http://en.wikipedia.org/wiki/Reverse-DNS reverse DNS] form:
 
  org.<forge>.<shortname>.<component>.*
 
  org.<forge>.<shortname>.<component>.*
 
Where:
 
Where:
* ''forge'' is the short name of the hosting forge, e.g. "eclipse", "locationtech", or "polarsys";
+
* ''forge'' is the short name of the hosting [[Forges|forge]], e.g. "eclipse", "locationtech", or "polarsys";
 
* ''shortname'' is the short name of the project (i.e. the last segment of the project id), e.g. "dali", "egit", "udig"; and
 
* ''shortname'' is the short name of the project (i.e. the last segment of the project id), e.g. "dali", "egit", "udig"; and
 
* ''component'' is project-specific
 
* ''component'' is project-specific
Line 20: Line 22:
 
* e.g. <code>org.eclipse.graphiti.core</code>, not <strike><code>org.eclipse.modeling.mdt.graphiti.core</code></strike> or <strike><code>org.eclipse.mdt.graphiti.core</code></strike>.
 
* e.g. <code>org.eclipse.graphiti.core</code>, not <strike><code>org.eclipse.modeling.mdt.graphiti.core</code></strike> or <strike><code>org.eclipse.mdt.graphiti.core</code></strike>.
  
=OSGi Bundle Names=
+
==Scala Package Names==
  
OSGi Bundle names follow the same rules as [[#Java Package Names|Java Package Names]].
+
TBD
  
=Java Archive (JAR/WAR/EAR) Names=
+
=Packaging/Distribution=
 +
==OSGi Bundle Names==
  
TBD
+
OSGi Bundle names '''must''' follow the same rules as [[#Java Package Names|Java Package Names]].
 +
 
 +
==Maven Repositories==
 +
{{Warning|This is a work in progress.}}
 +
These guidelines/rules apply primarily for Eclipse Foundation-hosted Maven repositories. We believe that it is in the best interests of the broader community to consistently apply these guidelines/rules outside of that scope as well.
 +
 
 +
===Maven Group Ids===
 +
The Maven group id '''must''' follow the standard reverse DNS naming convention:
 +
org.<forge>
 +
Where:
 +
* ''forge'' is the short name of the hosting [[Forges|forge]], e.g. "eclipse", "locationtech", or "polarsys";
 +
 
 +
Examples:
 +
* <code>org.eclipse</code>
 +
* <code>org.locationtech</code>
 +
* <code>org.polarsys</code>
 +
 
 +
For discussion, please see [https://locationtech.org/bugs/show_bug.cgi?id=28].
 +
 
 +
===Maven Artifacts===
 +
 
 +
===Maven Versions===
  
=JavaScript=
+
==Java Archive (JAR/WAR/EAR) Names==
  
 
TBD
 
TBD

Latest revision as of 14:04, 14 August 2014

Eclipse projects must carefully manage their namespaces in order to help identify the producer of components and avoid namespace collisions.

Some of the content here is presented in the form of guidelines ("should"), and some in the form of rules ("must"). In general, it's about being a good citizen and playing well with others. We believe/hope that exceptions to the rules are rare; exceptions to rules must be approved by the Project Management Committee and the EMO.

Contents

[edit] Languages

[edit] Java Package Names

Java package naming conventions are well-established and so Java package names must take the standard reverse DNS form:

org.<forge>.<shortname>.<component>.*

Where:

  • forge is the short name of the hosting forge, e.g. "eclipse", "locationtech", or "polarsys";
  • shortname is the short name of the project (i.e. the last segment of the project id), e.g. "dali", "egit", "udig"; and
  • component is project-specific

Multiple component segments are permitted.

Examples:

  • org.eclipse.emf.core, org.eclipse.emf.edit, org.eclipse.emf.edit.ui; and
  • org.locationtech.udig.resources

Java package names use the "flat" or "short" project name in the third segment; they should not include, for example, the name of the top-level project or any parent/container project.

  • e.g. org.eclipse.graphiti.core, not org.eclipse.modeling.mdt.graphiti.core or org.eclipse.mdt.graphiti.core.

[edit] Scala Package Names

TBD

[edit] Packaging/Distribution

[edit] OSGi Bundle Names

OSGi Bundle names must follow the same rules as Java Package Names.

[edit] Maven Repositories

Warning2.png
This is a work in progress.

These guidelines/rules apply primarily for Eclipse Foundation-hosted Maven repositories. We believe that it is in the best interests of the broader community to consistently apply these guidelines/rules outside of that scope as well.

[edit] Maven Group Ids

The Maven group id must follow the standard reverse DNS naming convention:

org.<forge>

Where:

  • forge is the short name of the hosting forge, e.g. "eclipse", "locationtech", or "polarsys";

Examples:

  • org.eclipse
  • org.locationtech
  • org.polarsys

For discussion, please see [1].

[edit] Maven Artifacts

[edit] Maven Versions

[edit] Java Archive (JAR/WAR/EAR) Names

TBD


This page is moderated by the EMO.