blob: 9307ff3748a9ac74830066890d6b4d300830a16b [file] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
# Contributing to Apache Ossie (incubating)
Thank you for your interest in contributing to Apache Ossie! We welcome
contributions from everyone — whether you are a developer, a data engineer, a BI
analyst, or simply someone interested in the future of semantic interoperability.
Apache Ossie was formerly known as **Open Semantic Interchange (OSI)**.
> **Apache Ossie is an effort undergoing incubation at the Apache Software
> Foundation (ASF), sponsored by the Apache Incubator.** Incubation is required
> of all newly accepted projects until a further review indicates that the
> infrastructure, communications, and decision making process have stabilized in
> a manner consistent with other successful ASF projects. See the
> [DISCLAIMER](DISCLAIMER) for details.
Apache Ossie is governed by [The Apache Way](https://www.apache.org/theapacheway/),
the ASF's collection of principles and practices for building open, vendor-neutral
communities. If you are new to the ASF, the
[Apache Incubator](https://incubator.apache.org/) and the
[ASF New Committers guide](https://www.apache.org/dev/new-committers-guide.html)
are good starting points.
## Ways to Contribute
- **Specification Feedback**: Review proposed specification changes and share your perspective on the mailing list, GitHub pull requests, and issues.
- **Use Case Discussions**: Share how your organization uses semantic models and what challenges you face — this helps shape the specification to address real-world needs.
- **Code Contributions**: Contribute to validation tooling, converters, examples, or any other part of the project.
- **Documentation**: Help improve and expand the project documentation.
- **Community Support**: Answer questions, participate in discussions, and help onboard new contributors.
## Communication
At the ASF, **the mailing lists are the primary channel** for the project. Consensus
is built and decisions are recorded on the lists, so please bring discussions there.
A guiding principle of the Apache Way is: *if it didn't happen on the mailing list,
it didn't happen.*
- **dev@ossie.apache.org** — development and community discussion. Subscribe by
emailing `dev-subscribe@ossie.apache.org`, then browse the
[archives](https://lists.apache.org/list.html?dev@ossie.apache.org).
- **commits@ossie.apache.org** — automated notifications for commits, pull requests.
Subscribe via `commits-subscribe@ossie.apache.org`.
- **issues@ossie.apache.org** — automated notifications for issues.
Subscribe via `issues-subscribe@ossie.apache.org`.
- **private@ossie.apache.org** — the Podling Project Management Committee (PPMC)
private list, used only for confidential matters such as committer nominations.
Secondary, less formal channels (never a substitute for the lists when a decision
is being made):
- [GitHub Issues](https://github.com/apache/ossie/issues) and
[Discussions](https://github.com/apache/ossie/discussions)
- [Slack](https://join.slack.com/t/apache-ossie/shared_invite/zt-42zw4rflt-Gpve8_NFJq7AsdAQTY~SCg)
## Getting Started
1. **Subscribe to the dev list**: Email `dev-subscribe@ossie.apache.org` and introduce yourself.
2. **Read the Specification**: Familiarize yourself with the [core specification](core-spec/spec.md) to understand the semantic model format.
3. **Explore the Examples**: Review the [TPC-DS example](examples/tpcds_semantic_model.yaml) to see a complete semantic model in practice.
4. **Find something to work on**: Browse the [issues](https://github.com/apache/ossie/issues), or raise a topic on the dev list.
5. **Submit a Pull Request**: Fork the repository, make your changes, and submit a pull request. All contributions go through the review process described below.
## Contributor License Agreement (ICLA)
All contributions to Apache Ossie are made under the [Apache License 2.0](LICENSE).
By submitting a pull request or patch, you agree that your contribution is licensed
under those terms (see Section 5 of the license).
Before your first non-trivial contribution can be merged, and always before you are
granted commit access, you must have an
[Individual Contributor License Agreement (ICLA)](https://www.apache.org/licenses/contributor-agreements.html#clas)
on file with the ASF. If you are contributing on behalf of your employer, a
[Corporate CLA (CCLA)](https://www.apache.org/licenses/contributor-agreements.html#clas)
may also be required. Please keep individual commits signed off and attributed to
the correct author so that provenance is clear.
## Contribution Workflow
The project's canonical repository is hosted at
[github.com/apache/ossie](https://github.com/apache/ossie), mirrored from ASF
infrastructure (GitBox).
### Code, Documentation, and Tooling
Non-specification contributions (bug fixes, tooling, documentation, converters,
examples) follow standard GitHub pull request review:
1. Open an issue or start a thread on `dev@` for anything non-trivial, so the
approach can be discussed before significant work begins.
2. Fork the repository and create a topic branch for your change.
3. Submit a pull request with a clear description of the motivation and the change.
4. A committer reviews and merges once the change has at least one **+1** from a
committer and no unresolved **-1**. The project follows a review-then-commit (RTC)
model: changes are merged after review rather than committed first.
### Specification Changes
Changes to the Apache Ossie specification carry a higher bar and follow a structured
process:
1. **Proposal**: Announce the proposal on `dev@ossie.apache.org` and open a GitHub
pull request with a clear description of the motivation, the change itself, and
its impact on existing implementations.
2. **Discussion period**: The community has a minimum of 7 days (72 hours for a
formal `[VOTE]`) to review and discuss. Complex changes may require a longer
review window.
3. **Vote**: Once discussion has settled, a `[VOTE]` thread is called on the dev
list. See [Decision Making and Voting](#decision-making-and-voting) below.
## Decision Making and Voting
Apache Ossie strives for **lazy consensus** — proceeding when no one objects — and
falls back to a formal vote when consensus cannot be reached. Votes happen on
`dev@ossie.apache.org` so they are publicly recorded. Voters express:
- **+1**: In favor.
- **0**: Abstain / no strong opinion.
- **-1**: Against. For code and specification changes this is a **veto** and
**must** be accompanied by a technical justification; a valid veto can only be
resolved by addressing the stated concern.
Conventions:
- **Code and other changes** pass by lazy consensus: at least one binding **+1** and
no vetoes.
- **Specification changes** require at least three binding **+1** votes and no
vetoes.
- **Committer and PPMC nominations** are held on the private list and pass by lazy
consensus (no **-1** within 72 hours).
- **Procedural votes** (e.g. adopting a policy) pass by simple majority and cannot
be vetoed.
**Binding votes** on the podling are cast by PPMC members. Everyone is encouraged to
vote; non-binding votes are valued input that informs the outcome.
### Releases
As an incubating project, every release is approved in two stages:
1. A `[VOTE]` on `dev@ossie.apache.org` that passes with at least **three binding
+1 votes** from the PPMC and more +1 than -1 votes.
2. A second `[VOTE]` on `general@incubator.apache.org` that passes with at least
three binding +1 votes from the Incubator PMC (IPMC).
Releases are source releases distributed through official ASF channels and must
comply with [ASF release policy](https://www.apache.org/legal/release-policy.html).
## Community Values — The Apache Way
Apache Ossie follows [The Apache Way](https://www.apache.org/theapacheway/), built
on these principles:
- **Community over code**: A healthy, welcoming community is the project's most
important asset.
- **Meritocracy**: Merit is based on contribution and never expires. Any constructive
contribution earns merit — code, documentation, testing, community support, and
specification reviews all count.
- **Peer-based**: Every participant is treated as a peer regardless of employer
affiliation or seniority. Decisions are made by the community, not by any single
company or individual.
- **Consensus decision making**: We strive for consensus in all decisions. When full
consensus cannot be reached, a formal vote may be called.
- **Open Communications**: Technical discussions, design decisions, and specification
changes happen in the open on the mailing lists and other public resources.
Decisions are made asynchronously so contributors in every timezone can take part.
- **Responsible oversight**: The community collectively ensures the specification and
tooling remain high quality, secure, and aligned with the project's mission.
- **Vendor neutrality**: The project operates independently of any single vendor or
organization.
## Roles and Responsibilities
### Contributors
Anyone who contributes to the project in any form — code, documentation, bug reports,
specification feedback, or community support. Contributors are encouraged to
participate in all discussions and votes; contributor votes are non-binding but valued.
### Committers
Contributors who have earned write access to the repository through sustained,
high-quality contributions. Committers review and merge pull requests and have
binding votes on the project's technical decisions. All committers must have an ICLA
on file.
### Podling Project Management Committee (PPMC)
The PPMC is responsible for the overall direction and health of the podling —
technical direction, community growth, and oversight of releases. PPMC members'
votes are binding. During incubation, PPMC members work alongside the project's
mentors and, upon graduation, the PPMC becomes the project's PMC.
### Mentors
Experienced ASF members assigned by the Incubator to guide the podling through the
incubation process. Mentors are PPMC members who help the community learn the Apache
Way, and they shepherd release votes to the Incubator PMC.
### Incubator PMC (IPMC)
The [Apache Incubator](https://incubator.apache.org/) PMC provides oversight for all
podlings, including approving releases and reviewing quarterly podling reports until
the project graduates to a top-level project.
## Becoming a Committer
Committership is earned through sustained contribution to the project. There is no
fixed formula — the community recognizes contributors who demonstrate consistent,
high-quality involvement over time.
### What counts
Committer candidacy is based on the breadth and quality of your contributions across
any of these areas:
- Code contributions (converters, validation tooling, examples, tests)
- Specification feedback and review participation
- Documentation improvements
- Community support (answering questions, helping onboard others, discussion on the lists)
- Working group participation
### The process
1. Any PPMC member may nominate a contributor by starting a discussion on the private
list (`private@ossie.apache.org`).
2. The nomination includes a summary of the candidate's contributions and a rationale
for committer status.
3. The PPMC discusses and votes. A nomination passes by lazy consensus — if no **-1**
votes are received within 72 hours.
4. If the vote passes, the candidate is invited to become a committer. Once they
accept and their ICLA is on file, their Apache account is set up and write access
is granted.
5. The new committer is announced to the community and listed in the project
documentation.
There is no minimum time requirement. What matters is the quality, consistency, and
impact of your contributions. Contributors who show sound judgment and help grow the
community may also be invited to join the PPMC.
## Code of Conduct
All participants in the Apache Ossie community are expected to follow the
[Apache Software Foundation Code of Conduct](https://www.apache.org/foundation/policies/conduct).
We are committed to providing a welcoming and inclusive environment for everyone,
regardless of background or experience level. Concerns may be raised privately with
the PPMC (`private@ossie.apache.org`) or, for foundation-level matters, with the ASF
per the linked policy.
## Trademarks
Apache Ossie, Ossie, Apache, the Apache feather logo, and the Apache Ossie project
logo are trademarks of The Apache Software Foundation. Please review the
[ASF trademark policy](https://www.apache.org/foundation/marks/) before using any of
these marks.
## License
All content in this repository — including code, specification, and documentation —
is licensed under the [Apache License 2.0](LICENSE).
By submitting a contribution, you agree that your contribution will be licensed under
the same terms, as described in the [Contributor License Agreement](#contributor-license-agreement-icla)
section above.