Skip to content

Commit 51bc198

Browse files
committed
Initial commit: OCCT community projects registry
11 entries (5 applications, 2 examples, 1 library, 3 wrappers). - MIT license - Cayman Pages theme (no front-matter; same Markdown serves both repo preview and Pages site) - Issue templates for Project Registration / Removal-Correction - No CLA gate; metadata + Markdown only
0 parents  commit 51bc198

46 files changed

Lines changed: 1510 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
name: "Project Registration"
2+
description: "Register an OCCT-based open-source project for inclusion in the registry"
3+
labels: ["registration", "new"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Use this form to propose your project for inclusion in the
9+
registry.
10+
11+
**No CLA signature required.** Direct PRs are also welcome with
12+
no signature — see [`CONTRIBUTING.md`](../../tree/main/CONTRIBUTING.md).
13+
14+
**Scope:** community submissions are accepted only for
15+
**open-source** OCCT-based projects. Non-open-source third-party
16+
products are out of scope. (Commercial entries are limited to
17+
OCCT-team / Open Cascade SAS components, added directly by the
18+
OCCT team.)
19+
20+
**Maintainer consent.** Submissions through this form are recorded
21+
as `source: maintainer-confirmed`, because the affiliation
22+
confirmation below requires you to be the maintainer or have
23+
permission. The registry does **not** accept unsolicited
24+
third-party listings.
25+
26+
Please fill every required field — maintainers cannot guess
27+
license, homepage, or contact details. See
28+
[SCHEMA.md](../../tree/main/SCHEMA.md) for the underlying
29+
`project.yaml` schema this form maps to.
30+
31+
**Want to remove or correct an existing entry instead?** Use the
32+
[Project Removal / Correction](../../issues/new?template=Project%20Removal%20or%20Correction.yaml)
33+
form — it's much shorter.
34+
35+
When converting this issue into a registry entry, maintainers will
36+
auto-fill `slug` (from project name + category), `status: active`,
37+
and `added` (today's date). You don't need to provide these.
38+
- type: input
39+
id: name
40+
attributes:
41+
label: Project name
42+
description: "Display name as it appears on the project's own site."
43+
placeholder: "OCC C# Wrapper"
44+
validations:
45+
required: true
46+
- type: dropdown
47+
id: type
48+
attributes:
49+
label: Type
50+
description: "Top-level category the project belongs to (application, library, wrapper, or example)."
51+
options:
52+
- application
53+
- library
54+
- wrapper
55+
- example
56+
validations:
57+
required: true
58+
- type: input
59+
id: category
60+
attributes:
61+
label: Category
62+
description: "Proposed subfolder name under the bucket (kebab-case). Examples: viewers, modelers, inspectors, csharp, python, bim."
63+
placeholder: "csharp"
64+
validations:
65+
required: true
66+
- type: input
67+
id: tagline
68+
attributes:
69+
label: Tagline
70+
description: "One-line summary, max 120 characters."
71+
placeholder: "Wraps Open CASCADE Technology C++ classes for use from C#."
72+
validations:
73+
required: true
74+
- type: textarea
75+
id: description
76+
attributes:
77+
label: Description
78+
description: "2–4 paragraphs covering what the project does, who it is for, and how it relates to OCCT."
79+
validations:
80+
required: true
81+
- type: dropdown
82+
id: software-type
83+
attributes:
84+
label: Software type
85+
description: "Community submissions must be open-source. Commercial / free-of-charge entries are added only by the OCCT team."
86+
options:
87+
- open-source
88+
validations:
89+
required: true
90+
- type: input
91+
id: license
92+
attributes:
93+
label: License
94+
description: "SPDX identifier preferred (e.g. LGPL-2.1-only, MIT, Apache-2.0)."
95+
placeholder: "LGPL-2.1-only"
96+
validations:
97+
required: true
98+
- type: input
99+
id: homepage
100+
attributes:
101+
label: Homepage URL
102+
placeholder: "https://example.com/my-project"
103+
validations:
104+
required: true
105+
- type: input
106+
id: repository
107+
attributes:
108+
label: Repository URL
109+
description: "Optional — externals may not be on a public host."
110+
placeholder: "https://github.com/org/project"
111+
- type: input
112+
id: documentation
113+
attributes:
114+
label: Documentation URL
115+
description: "Optional."
116+
- type: textarea
117+
id: industries
118+
attributes:
119+
label: Industries
120+
description: "Comma-separated. Use values from _taxonomy.yaml. Examples: AEC, Aerospace, BIM, Manufacturing, Medical, General."
121+
placeholder: "General, Software Development"
122+
validations:
123+
required: true
124+
- type: textarea
125+
id: scopes
126+
attributes:
127+
label: Scopes
128+
description: "Comma-separated. Use values from _taxonomy.yaml. Examples: 3D viewer, CAD, Conversion, Mesh Generation, Wrapper."
129+
placeholder: "Wrapper, Authoring"
130+
validations:
131+
required: true
132+
- type: input
133+
id: languages
134+
attributes:
135+
label: Languages
136+
description: "Comma-separated programming languages."
137+
placeholder: "C#, C++"
138+
validations:
139+
required: true
140+
- type: checkboxes
141+
id: platforms
142+
attributes:
143+
label: Platforms
144+
description: "Select all platforms the project ships on."
145+
options:
146+
- label: Windows
147+
- label: Linux
148+
- label: macOS
149+
- label: Web
150+
- label: iOS
151+
- label: Android
152+
validations:
153+
required: true
154+
- type: input
155+
id: logo
156+
attributes:
157+
label: Logo or screenshot URL
158+
description: "Optional. Direct link to an image; maintainers may pull it into the registry folder."
159+
- type: checkboxes
160+
id: affiliation
161+
attributes:
162+
label: Affiliation confirmation
163+
description: "Required."
164+
options:
165+
- label: "I am the project maintainer, OR I have permission to register this project on the maintainer's behalf."
166+
required: true
167+
- label: "I confirm the information above is accurate to the best of my knowledge."
168+
required: true
169+
- type: textarea
170+
id: additional_context
171+
attributes:
172+
label: Additional context
173+
description: "Anything else maintainers should know (community size, notable users, integration sample availability, ...)."
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: "Project Removal or Correction"
2+
description: "Request removal or correction of an existing registry entry"
3+
labels: ["correction", "new"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Use this form to:
9+
- **remove** an existing entry from the registry, or
10+
- **correct** a fact (license, URL, description, ...).
11+
12+
**No CLA signature required.** A maintainer will land your change
13+
as a PR on your behalf.
14+
15+
For brand-new entries, use the
16+
[Project Registration](../../issues/new?template=Project%20Registration.yaml)
17+
form instead.
18+
- type: input
19+
id: entry-path
20+
attributes:
21+
label: Entry path
22+
description: "Folder path of the entry, e.g. `wrappers/python/pyocct`."
23+
placeholder: "wrappers/python/pyocct"
24+
validations:
25+
required: true
26+
- type: dropdown
27+
id: request-kind
28+
attributes:
29+
label: Request kind
30+
options:
31+
- Remove the entry
32+
- Correct a fact (license, URL, description, ...)
33+
- Other (explain below)
34+
validations:
35+
required: true
36+
- type: textarea
37+
id: details
38+
attributes:
39+
label: Details
40+
description: |
41+
For removal — short reason is enough.
42+
For correction — what's wrong and what should it say (cite a
43+
source if helpful).
44+
placeholder: |
45+
Example: "License is Apache-2.0, not LGPL-2.1-only — see
46+
https://github.com/<owner>/<repo>/blob/main/LICENSE"
47+
validations:
48+
required: true
49+
- type: textarea
50+
id: maintainer-evidence
51+
attributes:
52+
label: Affiliation / evidence (optional but recommended for removal & source upgrades)
53+
description: "How are you affiliated with the project? A link to your GitHub account on the project's MAINTAINERS file, an email signature on the project's domain, or similar is plenty."

.github/workflows/pages.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Deploy GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: false
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: actions/configure-pages@v5
23+
- uses: actions/jekyll-build-pages@v1
24+
with:
25+
source: ./
26+
destination: ./_site
27+
- uses: actions/upload-pages-artifact@v3
28+
29+
deploy:
30+
needs: build
31+
runs-on: ubuntu-latest
32+
environment:
33+
name: github-pages
34+
url: ${{ steps.deployment.outputs.page_url }}
35+
steps:
36+
- id: deployment
37+
uses: actions/deploy-pages@v4

.github/workflows/validate.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Validate registry
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
jobs:
9+
schema:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
- uses: actions/setup-python@v5
14+
with:
15+
python-version: "3.12"
16+
- run: pip install pyyaml
17+
- run: python3 scripts/validate_registry.py

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
_site/
2+
.jekyll-cache/
3+
.jekyll-metadata
4+
.bundle/
5+
vendor/
6+
Gemfile.lock
7+
.DS_Store

CONTRIBUTING.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Contributing to the OCCT Samples & Projects Registry
2+
3+
Thank you for proposing your project for the OCCT community registry. The
4+
registry is for **OCCT-team projects** and **open-source third-party
5+
projects** built on OCCT. **No CLA required** — the corpus is yaml
6+
metadata + Markdown, and contributions are accepted without signature.
7+
8+
## How to contribute
9+
10+
You can contribute either via an Issue (zero git knowledge needed) or
11+
directly via a Pull Request.
12+
13+
### 1. Project Registration issue — easiest
14+
15+
1. Go to **Issues → New issue → Project Registration**.
16+
2. Fill out every required field. Maintainers cannot guess license,
17+
homepage, or contact details.
18+
3. A maintainer will land your entry as a PR and ping you for review.
19+
20+
### 2. Direct pull request
21+
22+
1. Pick the right bucket: `applications/`, `libraries/`, `wrappers/`,
23+
or `examples/`. Use `examples/` for sample/demo apps that live in
24+
their own repositories (OCCT-team or community-maintained).
25+
2. Pick (or create) a category subfolder. If creating a new category,
26+
also add a one-paragraph `README.md` explaining what belongs there.
27+
3. Create your project folder using a kebab-case `slug`:
28+
`<bucket>/<category>/<slug>/`
29+
4. Copy an existing `project.yaml` (e.g.
30+
[`examples/csharp/occt-samples-csharp/project.yaml`](examples/csharp/occt-samples-csharp/project.yaml))
31+
and fill it in. The schema is documented in [SCHEMA.md](SCHEMA.md).
32+
5. Add a `README.md` with a longer description, screenshots, and links.
33+
6. Optionally, add a `snippets/` subfolder with runnable usage examples
34+
that show how the project consumes OCCT. Keep snippets minimal and
35+
self-contained.
36+
7. Open a PR. Title prefix: `Add <Project Name>`.
37+
38+
## Acceptance checklist
39+
40+
- [ ] Project is open-source **or** has clear public adoption + maintenance.
41+
- [ ] `project.yaml` validates against the schema in [SCHEMA.md](SCHEMA.md).
42+
- [ ] All `industries`, `scopes`, `software-type`, and `license` values come
43+
from [`_taxonomy.yaml`](_taxonomy.yaml). If a value is missing, add it
44+
to the taxonomy in the same PR.
45+
- [ ] `README.md` describes the project in 2–4 paragraphs and links to its
46+
homepage and repository.
47+
- [ ] You are the project maintainer, **or** you have permission to register
48+
the project on their behalf.
49+
50+
## Updating an existing entry
51+
52+
Open a PR editing the relevant `project.yaml` / `README.md`. Maintainers
53+
prefer a single-purpose PR per project. Use the title prefix
54+
`Samples - Update <Project Name>`.
55+
56+
## Removing an entry
57+
58+
If a project is abandoned or its maintainers request removal, set
59+
`status: archived` in `project.yaml` rather than deleting the folder. Hard
60+
removal is reserved for entries that violated the acceptance criteria.
61+
62+
### Maintainer takedown / correction requests
63+
64+
If you are the maintainer of a listed project and want the entry removed
65+
or corrected:
66+
67+
1. Open a GitHub issue with the title `Samples - Remove <project name>` or
68+
`Samples - Correct <project name>` — a short note explaining the
69+
request is enough, OR
70+
2. Reach the OCCT maintainers via the contact form at
71+
[dev.opencascade.org/webform/contact_us](https://dev.opencascade.org/webform/contact_us)
72+
(or the "Contact us" link on [occt3d.com](https://occt3d.com/)).
73+
74+
Removal takes effect on the current branch and in subsequent releases.
75+
Git history is retained as a normal part of version control; the
76+
repository does not rewrite history for routine removal requests.
77+
78+
## Provenance: the `source:` field
79+
80+
Every `project.yaml` declares how the entry came to exist:
81+
82+
| `source` value | When to use |
83+
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
84+
| `occt-team` | Authored or maintained by Open Cascade SAS / OCCT project. |
85+
| `maintainer-confirmed` | Project maintainer (or someone with their permission) registered the entry — either through the Project Registration flow on this repository, or had previously opted in via the [dev.opencascade.org listing form](https://dev.opencascade.org/webform/contact_us). |
86+
87+
Every entry must carry one of these two values. We do **not** add entries
88+
proactively from third-party public sources — the maintainer opts in (or
89+
the entry is OCCT-team authored).

0 commit comments

Comments
 (0)