Skip to content

Commit 26456ad

Browse files
authored
chore: Legal - Added project governance documents (#41)
1 parent 511febb commit 26456ad

File tree

4 files changed

+316
-0
lines changed

4 files changed

+316
-0
lines changed

CONTRIBUTING.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# **Contributing to Tangle**
2+
3+
First off, thank you for considering contributing to Tangle\! We're excited to have you here. This project is open-source, and we value every contribution, from bug reports to new features.
4+
5+
This document guides you through the process.
6+
7+
**Quick Links:**
8+
9+
* `GOVERNANCE.md` Project Governance (How we make decisions)
10+
* `SECURITY.md` How to report vulnerabilities
11+
* [Issue Tracker](https://github.com/TangleML/tangle/issues)
12+
13+
## **📜 How to Contribute**
14+
15+
We welcome contributions of all kinds\! Here are a few ways you can help:
16+
17+
* **🐛 Report Bugs:** If you find a bug, please [open an issue](https://github.com/TangleML/tangle/issues/new?template=bug_report.md). Include as much detail as possible, like your environment, steps to reproduce, and the expected outcome.
18+
* **✨ Request Features:** Have an idea? [Open a feature request](https://github.com/TangleML/tangle/issues/new?template=feature_request.md). We'd love to hear it.
19+
* **📝 Improve Documentation:** If you see typos or areas where docs could be clearer, please submit a Pull Request\!
20+
* **🧑‍💻 Write Code:** Help us fix bugs or build new features.
21+
22+
## **🧑‍💻 Your First Code Contribution**
23+
24+
Ready to submit your code? Here's the workflow we follow for external contributors.
25+
26+
### **1\. Set Up Your Environment**
27+
28+
1. **Fork** the repository to your own GitHub account.
29+
2. **Clone** your fork to your local machine:
30+
3. Create a **new branch** for your changes:
31+
32+
### **2\. Make Your Changes**
33+
34+
Write your code, write your tests, and make sure all existing tests pass.
35+
36+
### **3\. Contributor License Agreement**
37+
38+
We require that all contributions adhere to the **Developer Certificate of Origin (DCO)** https://developercertificate.org and **the Apache 2.0 License** https://opensource.org/license/apache-2-0. By submitting a Pull Request, you are certifying that you agree to these terms.
39+
40+
This ensures that:
41+
42+
1. You have the right to submit this code.
43+
2. Your contribution will be licensed under the project's **Apache License 2.0**.
44+
45+
This is the full text of the DCO:
46+
47+
**Developer's Certificate of Origin 1.1**
48+
49+
By making a contribution to this project, I certify that:
50+
51+
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
52+
53+
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
54+
55+
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
56+
57+
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
58+
59+
### **4\. Submit a Pull Request**
60+
61+
1. Push your branch to GitHub.
62+
2. Go to the Tangle repository on GitHub and open a **Pull Request (PR)**.
63+
3. In your PR description, explain *what* you changed and *why*. If your PR fixes an open issue, link to it using `Closes #123`.
64+
4. A Maintainer will be assigned to review your PR. They may ask for changes.
65+
5. Once your PR is approved and all CI checks pass, a Maintainer will merge it into the main branch.
66+
67+
That's it\! We're incredibly grateful for your contribution.
68+

GOVERNANCE.md

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
# **Project Tangle Governance**
2+
3+
## **Tangle Software Vision**
4+
5+
The Tangle system helps users create and run ML experiments and production pipelines. Any batch workflow that has beginning and end can be orchestrated via a pipeline.
6+
7+
## **Tangle Project Governance Vision**
8+
9+
Grow the project in a manner that welcomes a wide community of stakeholders and enables the future handoff to a vendor-neutral non-profit foundation.
10+
11+
## **Purpose and scope**
12+
13+
* This document outlines the governance model for the Tangle project, including how decisions are made and how various community members can get involved.
14+
* Applies to all repositories under https://github.com/TangleML and affiliated tooling, documentation, and community channels.
15+
16+
## **Values**
17+
18+
* Transparency: Decisions and rationales are public and recorded.
19+
* Inclusivity and neutrality: Multiple organizations and independent contributors can participate meaningfully.
20+
* Security and quality: Changes meet defined standards and guardrails.
21+
* Sustainability: Reduce single-maintainer/vendor risk and build a healthy maintainer pipeline.
22+
23+
## **A three-pillar governance model**
24+
25+
1. Alexey Volkov @Ark-kun \- founder and Project Lead.
26+
2. Open Source Community \- can contribute code, become maintainers and join Technical Steering Committee (TSC) once it is formed.
27+
3. Shopify \- initial sponsor, administrator of GitHub & security response, owner of domains and trademarks.
28+
29+
## **Project structure**
30+
31+
* License: Project consists of Open Source Software licensed under the Apache License, version 2.0 in `LICENSE`.
32+
* Components:
33+
* [tangle](https://github.com/TangleML/tangle) \- Tangle is a web app that allows the users to build and run Machine Learning pipelines without having to set up a development environment.
34+
* [tangle-ui](https://github.com/TangleML/tangle-ui) \- Tangle frontend code \- based on Cloud Pipelines Studio
35+
* [website](https://github.com/TangleML/website) \- The source code for [TangleML.com](https://TangleML.com)
36+
* Releases:
37+
* [https://github.com/TangleML/tangle/releases](https://github.com/TangleML/tangle/releases)
38+
* [https://github.com/TangleML/tangle-ui/releases](https://github.com/TangleML/tangle-ui/releases)
39+
* [https://huggingface.co/TangleML](https://huggingface.co/TangleML)
40+
* PyPI (details TBD)
41+
* Documents: `LICENSE`, `CONTRIBUTING.md`, `SECURITY.md`, `RELEASING.md`, `TRADEMARK.pdf`
42+
43+
## **1\. Roles**
44+
45+
This project formally recognizes the following roles.
46+
47+
### **👤 Everyone (Users)**
48+
49+
Anyone who uses the project is a community member. We value your contributions, and you are encouraged to:
50+
51+
* Use the software.
52+
* Provide feedback and report bugs by opening Issues.
53+
* Join community discussions (e.g., on GitHub, Slack, or mailing lists).
54+
* Advocate for the project.
55+
56+
### **🧑‍💻 Contributors**
57+
58+
A **Contributor** is anyone who makes a contribution to the project. Contributions can include:
59+
60+
* Submitting code via a Pull Request (PR).
61+
* Improving documentation.
62+
* Reviewing PRs from other contributors.
63+
* Triaging issues and helping other users.
64+
65+
Contributors are expected to follow the project's [Contributing Guidelines](https://github.com/TangleML/tangle/blob/master/CONTRIBUTING.md).
66+
67+
### **🧑‍🔧 Maintainers**
68+
69+
**Maintainers** are active and trusted contributors who have demonstrated a long-term commitment to the project. They have **write access** to the repository and are responsible for its day-to-day health. More details on how to become a project maintainer are listed below.
70+
71+
**Responsibilities:**
72+
73+
* Reviewing and merging Pull Requests.
74+
* Guiding the project's technical direction.
75+
* Triaging and managing issues.
76+
* Helping new contributors.
77+
78+
The current list of Maintainers is:
79+
80+
* *tangle*
81+
* @Ark-kun
82+
* *tangle-ui*
83+
* @Ark-kun
84+
* @camielvs
85+
* @maxy-shpfy
86+
* @Mbeaulne
87+
* *website*
88+
* @Ark-kun
89+
* @maxy-shpfy
90+
91+
### **🚀 Release Managers**
92+
93+
* Coordinate releases, tags, changelogs, artifact signing, and backports.
94+
* Operate per `RELEASING.md`.
95+
* The Release Managers is a subset of the maintainers that are assigned additional system permissions to perform the release process. (for example to publish to PyPi)
96+
97+
### **🛡️ Security Team**
98+
99+
* Receives and triages private vulnerability reports; coordinates fixes and advisories.
100+
* Operates per `SECURITY.md`; may include external members approved by the Project Lead or TSC.
101+
102+
### **👑 Project Lead**
103+
104+
For a new project, transparency is key. Tangle has been started with a Project Lead to drive the project. The project and Project Lead are supported by Shopify.
105+
106+
The **Project Lead** is responsible for the overall strategic vision of the project and for making final decisions when community consensus cannot be reached.
107+
108+
* **Project Lead:** Alexey Volkov @Ark-kun
109+
110+
As the project grows, this role will be retired and transferred to a Technical Steering Committee.
111+
112+
### **🏛️ Technical Steering Committee (TSC)**
113+
114+
The Technical Steering Committee will grow as an organizationally diverse set of maintainers is achieved. Once the size of the TSC reaches 10, the Project Lead role will become an elected role with a 1 year term. The Project Lead chairs the TSC and can appoint new members from the current Maintainers. Once the TSC has 5 members, voting will be introduced to elect new members for 1 year terms.
115+
116+
* Size: 3-10 members, growing with the size of the project. Composition aims for diversity across organizations and expertise.
117+
* Responsibilities: Strategy, roadmap approval, governance changes, tie-break decisions, high-impact/controversial changes.
118+
* Publishes meeting notes and decisions.
119+
* Members of the TSC are a subset of the project Maintainers chosen to represent different community stakeholders. (To retain their TSC seat, TSC members must maintain active maintainer status)
120+
121+
As a reflection of the three pillars vision, 3 seats on the TSC will represent the 3 pillars of Community, Shopify and the Project Leader.
122+
123+
## **2\. Decision Making**
124+
125+
This project operates on a **consensus-seeking** model. We try to find solutions that most members can agree with.
126+
127+
### **Day-to-Day Decisions (Pull Requests)**
128+
129+
1. **Pull Requests** are the primary method for making changes.
130+
2. PRs should be reviewed by at least one Maintainer who is not the author.
131+
3. If a PR is straightforward (like a bug fix or documentation) and receives an approval, it can be merged by a Maintainer.
132+
4. The author of a PR should generally not merge their own PR unless it's a critical fix or they have received explicit approval from another Maintainer.
133+
134+
### **Major Changes & Disagreements**
135+
136+
For substantial changes (e.g., new features, API changes, or changes to the project's direction), a more formal process is used:
137+
138+
1. **Proposal:** The change is proposed by opening a **GitHub Issue** with a clear description.
139+
2. **Discussion:** The community discusses the proposal. This is the time to raise concerns, suggest alternatives, and build consensus.
140+
3. **Resolution:**
141+
* **Consensus:** If the repository’s Maintainers agree, a Maintainer can mark the proposal as "accepted," and work can begin.
142+
* **No Consensus:** If a clear consensus cannot be reached the matter will be escalated to the TSC.
143+
144+
It is expected that a more formal RFC process is instituted for major changes as the project grows. This will be instituted by the Project Lead or Technical Steering Committee and this document updated via the processes in the current version.
145+
146+
## **3\. How to Become a Maintainer**
147+
148+
We actively want our best contributors to become Maintainers. The path is simple: **contribute consistently and help others.**
149+
150+
A new maintainer can be nominated by a current maintainer. Maintainers are voted in by a simple majority among current maintainers. Eligibility to become a maintainer is based on active contribution and volume of at least 30 merged pull requests in the last year. A different set of maintainers may be maintained for each repository (e.g website, tangle, tangleUI). A subset of maintainers will have organization wide permissions and responsibility. Maintainers can lose their status if they haven’t contributed (code, discussion participation, other duties) in more than one year.
151+
152+
## **4\. Amending This Document**
153+
154+
This governance document is not set in stone. Proposed changes shall be made public for 30 days and decisions will be made by the TSC.
155+
156+
## **5\. Project Infrastructure**
157+
158+
Project infrastructure such as GitHub, CI, Hugging Face, PyPi, etc. are administered by the TSC with access permissions assigned to Maintainers, Release Managers, and Security Team members in accordance with this document.
159+
160+
## **6\. Ownership**
161+
162+
Shopify is the owner of the Tangle name, Trademark, Logo and Domain. In the event of Shopify losing interest in developing and maintaining the project, Shopify plans to donate these assets to a suitable steward. It is intended that that suitable steward might be an appropriate vendor-neutral non-profit open source foundation (for example, CNCF).
163+
164+
## **Contact**
165+
166+
* General questions: (TBD: Google Groups? Slack?)
167+
* Security reports: [https://github.com/TangleML/tangle/security](https://github.com/TangleML/tangle/security)
168+

RELEASING.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# **Release Process**
2+
3+
This document outlines the process and policies for creating a new release of the Tangle project.
4+
5+
This guide is primarily intended for project Maintainers and designated **Release Managers** (as defined in `GOVERNANCE.md`).
6+
7+
## **1\. Versioning**
8+
9+
Tangle follows **Semantic Versioning 2.0.0** (https://semver.org/\#semantic-versioning-200). All release tags must adhere to this specification.
10+
11+
Given a version number `MAJOR.MINOR.PATCH`, we increment:
12+
13+
* `MAJOR` version for incompatible, breaking API changes.
14+
* `MINOR` version for new, backwards-compatible functionality.
15+
* `PATCH` version for backwards-compatible bug fixes.
16+
17+
**Pre-1.0.0:** While the project is in its early stages (version `0.x.y`), breaking changes may be introduced in `MINOR` releases.
18+
19+
## **2\. Release Cadence**
20+
21+
Tangle does not have a fixed release schedule (e.g., "every 6 weeks").
22+
23+
* **Minor/Major** releases are cut when a sufficient number of features or changes have accumulated on the `main` branch.
24+
* **Patch** releases are made on-demand to address critical bugs or security vulnerabilities.
25+
26+
## **3\. Release Process**
27+
28+
Releases will be available at https://github.com/TangleML/tangle/releases
29+
30+
Releases will be published to PyPI and/or Hugging Face (details TBD)
31+
32+
Update the website and documentation https://tangleml.com/
33+
34+
Any disputes or disagreements related to the release process will be handled in accordance with the decision making section of GOVERNANCE.md.
35+
36+
## **4\. Support & Backport Policy**
37+
38+
* **Supported Versions:** We provide active support for the **latest `MINOR` release** (e.g., `v0.2.x`).
39+
* **Security Fixes:** Critical security vulnerabilities will be backported to the previous `MINOR` release, at the discretion of the Security Team.
40+
* **Bug Fixes:** We do not generally backport non-critical bug fixes. We encourage all users to upgrade to the latest version.
41+
42+
## Appendix
43+
44+
Current list of Release Managers:
45+
46+
* @Ark-kun
47+
* @camielvs
48+

SECURITY.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# **Security Policy**
2+
3+
The Tangle team takes the security of our project seriously. We appreciate the efforts of security researchers and our community to help us ensure our software is secure.
4+
5+
## **Reporting a Vulnerability**
6+
7+
**Please do not report security vulnerabilities through public GitHub issues.**
8+
9+
We use GitHub's Private Vulnerability Reporting feature, which allows you to privately disclose a security vulnerability to the project maintainers.
10+
11+
1. **Go to the "Security" tab** of the Tangle repository.
12+
2. Click on **"Report a vulnerability"** or go directly to `https://github.com/TangleML/tangle/security/advisories/new`
13+
3. Fill out the form with as much detail as possible, including:
14+
* A description of the vulnerability.
15+
* The component or code path affected.
16+
* The version(s) affected.
17+
* Steps to reproduce the issue or a proof-of-concept (PoC).
18+
* Any potential impact (e.g., data exfiltration, denial of service).
19+
20+
### **Alternative Contact**
21+
22+
If for any reason you cannot use GitHub's private reporting, you can send an email to our private security-list: **`[email protected]`**. Please use "Tangle Security Vulnerability" as the subject line.
23+
24+
## **Our Commitment**
25+
26+
When you report a vulnerability to us, we commit to the following:
27+
28+
* We will acknowledge your report within **5 business days**.
29+
* We will work with you to understand the issue and confirm its validity.
30+
* We will provide a timeline for a fix and keep you updated on our progress.
31+
* We will coordinate with you on a public disclosure and advisory. We will credit you for your discovery unless you prefer to remain anonymous.
32+

0 commit comments

Comments
 (0)