Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 4 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,20 +170,10 @@ Normal builds use the **latest published spec release**, not the spec's `main` b

## Contributing

Pull requests are welcome.

- Sign your commits: `git commit -s` (DCO is required)
- Use [Conventional Commits](https://www.conventionalcommits.org/) for PR titles,
for example `docs: fix typo on the model page`
- Run `make cleanup` before committing

Come talk to us first if you're planning something large:

- **Slack:** [#gemara](https://openssf.slack.com/archives/C09A9PP765Q) on OpenSSF Slack
- **Meetings:** every other Thursday — see the
[OpenSSF calendar](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ)

Maintainers are listed in `_data/maintainers.yml`.
Pull requests are welcome. See the
[Contributing guide](https://gemara.openssf.org/community/contributing) on the
site for the full guidelines, including sign-off requirements and AI
attribution expectations.

---

Expand Down
7 changes: 7 additions & 0 deletions _data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
url: /
- title: Community
url: /community/
children:
- title: Overview
url: /community/
- title: Contributing
url: /community/contributing
- title: Maintainers
url: /community/maintainers
- title: Roadmap
url: /roadmap
- title: Tutorials
Expand Down
11 changes: 11 additions & 0 deletions _includes/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,18 @@ <h1 class="site-title">

<div class="trigger">
{%- for item in site.data.navigation -%}
{%- if item.children -%}
<details class="nav-dropdown">
<summary class="page-link">{{ item.title | escape }}</summary>
<div class="nav-dropdown-menu">
{%- for child in item.children -%}
<a class="page-link" href="{{ child.url | relative_url }}">{{ child.title | escape }}</a>
{%- endfor -%}
</div>
</details>
{%- else -%}
<a class="page-link" href="{{ item.url | relative_url }}">{{ item.title | escape }}</a>
{%- endif -%}
{%- endfor -%}
</div>
</nav>
Expand Down
49 changes: 49 additions & 0 deletions assets/css/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,44 @@ a[href^="http"]:not([href*="gemara"]):not([href*="openssf"]):not(.social-media-l
}
}

.nav-dropdown {
position: relative;

summary {
cursor: pointer;
list-style: none;

&::-webkit-details-marker {
display: none;
}

&::after {
content: "▾";
margin-left: var(--spacing-xs);
font-size: 0.75em;
}
}

.nav-dropdown-menu {
display: flex;
flex-direction: column;
position: absolute;
top: 100%;
left: 0;
min-width: 160px;
padding: var(--spacing-xs);
background: var(--color-bg-primary);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
z-index: 10;

.page-link {
padding: var(--spacing-xs) var(--spacing-sm);
}
}
}

@media screen and (max-width: 768px) {
position: relative;

Expand Down Expand Up @@ -625,6 +663,17 @@ a[href^="http"]:not([href*="gemara"]):not([href*="openssf"]):not(.social-media-l
width: 100%;
padding: var(--spacing-sm) var(--spacing-md);
}

.nav-dropdown {
width: 100%;

.nav-dropdown-menu {
position: static;
border: none;
box-shadow: none;
padding: 0 0 0 var(--spacing-md);
}
}
}
}

Expand Down
66 changes: 66 additions & 0 deletions community/contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
layout: page
title: Contributing
nav-title: Contributing
---

Thanks for your interest in contributing to Gemara! Contributions of all
kinds are welcome including docs, schemas, SDKs, examples, and ideas. This page
covers a few things worth knowing before you open a pull request, including
how we like AI-assisted work to be attributed.

## Getting started

- Sign off your commits with `git commit -s` (see [DCO](#dco) below).
- Use [Conventional Commits](https://www.conventionalcommits.org/) for PR
titles, for example `docs: fix typo on the model page`.
- Run `make cleanup` before committing to clear out generated files.

Planning something larger? Come say hello first. We're happy to help shape
the idea:

- **Slack:** [#gemara](https://openssf.slack.com/archives/C09A9PP765Q) on OpenSSF Slack
- **Meetings:** every other Thursday — see the [OpenSSF calendar](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ)

## DCO

Gemara uses the [Developer Certificate of Origin](https://developercertificate.org/),
so please sign off your commits with `git commit -s`. The sign-off says that
you wrote the change, or otherwise have the right to submit it. So it should
be yours, even when an AI tool helped you write it.

## Working with AI

AI-assisted contributions are welcome. We just ask that you be open about
where AI was involved, so reviewers and future maintainers understand what
they're looking at. Please refer to the Linux Foundation's [Generative AI Policy](https://www.linuxfoundation.org/legal/generative-ai)
for additional guidance.

### Commits

When AI helped author a commit, add an `Assisted-by:` trailer naming the tool:

```
Assisted-by: Claude Code <noreply@anthropic.com>
```

Please don't use `Co-authored-by:` for AI tools (this is blocked by our branch protections).
The DCO sign-off is a statement made by a person, so co-authorship should reflect the humans
involved.

### PRs, issues, and comments

If an AI generated or largely drafted a PR description, issue, or comment,
add a 🤖 so it's clear which text is AI-generated and which is yours.

### Understanding what you contribute

Whether a change is hand-written or AI-assisted, the goal is the same: you
should understand it well enough to walk someone through it. A good rule of
thumb is to imagine explaining the change months from now. You might not
remember every function name, but the reasoning, the design, and the
packages it relies on should still feel like yours.

If a change gets that kind of understanding, it's in good shape. If it
doesn't yet, it's worth spending a bit more time with it before asking for a
review.
8 changes: 2 additions & 6 deletions community/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,8 @@ nav-title: Community
- **Slack:** [#gemara](https://openssf.slack.com/archives/C09A9PP765Q) on OpenSSF Slack
- **Meetings:** Bi-weekly on alternate Thursdays - see the [OpenSSF calendar](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ)
- **GitHub:** [gemaraproj/gemara](https://github.com/gemaraproj/gemara)

### Meet the Maintainers

{% for maintainer in site.data.maintainers.maintainers %}
- {{ maintainer.name }}, {{ maintainer.organization }} (@{{ maintainer.github }})
{% endfor %}
- **Contributing:** see the [Contributing guide](/community/contributing)
- **Maintainers:** meet the people behind Gemara on the [Maintainers page](/community/maintainers)

### Projects and Working Groups

Expand Down
16 changes: 16 additions & 0 deletions community/maintainers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
layout: page
title: Maintainers
nav-title: Maintainers
---

Gemara is maintained by a group of contributors across the community. These
folks review contributions, guide the project's direction, and are happy to
help you get started.

{% for maintainer in site.data.maintainers.maintainers %}
- {{ maintainer.name }}, {{ maintainer.organization }} (@{{ maintainer.github }})
{% endfor %}

Want to get involved? See the [Contributing guide](/community/contributing)
or come find us on [Slack](https://openssf.slack.com/archives/C09A9PP765Q).
Loading