Skip to content

ContributingGuidelines

jclingan edited this page Feb 28, 2024 · 1 revision

Guidelines for contributing to the MicroProfile project

Ways to contribute

Documentation Formatting Guidelines

Per a recent discussion and "vote" on our Google Group Forum, it has been decided that AsciiDoc will be our preferred documentation formatting language. Please use AsciiDoc (.adoc) for creating and formatting any proposals, specifications, README files, CONTRIBUTING files, etc as you develop artifacts for the MicroProfile project.

License of the contributed resources

All code and resources submitted via a pull request or directly (by a committer) should be licensed under the Apache License Version 2.0

License header

All files must include a license header. Moreover, a NOTICE file should exist for each repository. Author tags under a license header are optional and not mandated by the Eclipse foundation. It's strongly recommended to abide by the following templates:


A license header (included in the beginning of each file):

/**********************************************************************
* Copyright (c) {DATE} Contributors to the Eclipse Foundation
 *
 * See the NOTICES file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * You may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
**********************************************************************/

{DATE} can either be a single year or a range of years separated by a comma.


NOTICE file (in the root of each repository):

SPDXVersion: SPDX-2.1
PackageName: Eclipse Microprofile
PackageHomePage: http://www.eclipse.org/microprofile
PackageLicenseDeclared: Apache-2.0

PackageCopyrightText: <text>
{Legal Entity 1}
{Legal Entity 2}
{Legal Entity 3}
...
</text>

The NOTICE file also has to be included in all distribution artifacts (JAR, WAR, etc.).


The templates were discussed with Eclipse mentors:

Deliverable group and artifact naming convention

We have decided here on the mailing list that we'll use the following convention for (maven) artifact and group names:

  groupId: org.eclipse.microprofile.<subproject> for all subprojects (specs/features or any other project like conference app)
  artifactId: microprofile-<subproject>-<submodule>

Examples:

    org.eclipse.microprofile.config : microprofile-config-api  - for the Config API
    org.eclipse.microprofile.config : microprofile-config-tck - for the Config TCK

    org.eclipse.microprofile.conference : microprofile-conference - for Conference Demo app
    org.eclipse.microprofile.conference : microprofile-conference-session - for the session module of the Conference app

The same project will have the same groupId for all artifacts (including parent).

Java package naming conventions

CDI API package names

The CDI API classes should be placed in a subpackage inject of the API. E.g., if the API package is named org.eclipse.microprofile.abcspec, then the package name for the CDI API should be org.eclipse.microprofile.abcspec.inject. This is to follow the convention used in javax.inject and javax.enterprise.inject.

The discussion about this convention is on the mailing list here.

Category:MicroProfile