Skip to content

Commit a849426

Browse files
committed
docs(contributing): clarify repository purpose and contribution standards
1 parent fd2a611 commit a849426

1 file changed

Lines changed: 267 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
# Contributing Guidelines
2+
3+
Thanks for helping improve the BitDevs Socratic Seminar archive!
4+
5+
This repository stores the topics, links, and resources discussed in our Socratic Bitcoin seminars.
6+
Each post corresponds to a specific meetup and serves as a public record of what was covered.
7+
8+
This document explains **what** we accept and **how** to contribute so we stay consistent.
9+
10+
## Contents
11+
- [Scope of contributions](#scope-of-contributions)
12+
- [Citation & link policy](#citation--link-policy)
13+
- [Contribution workflow](#contribution-workflow)
14+
- [Branch naming conventions](#branch-naming-conventions)
15+
- [Commit message conventions](#commit-message-conventions)
16+
- [Pull Request (PR) process](#pull-request-pr-process)
17+
- [Squashing & merge strategy](#squashing--merge-strategy)
18+
- [Style guide (Markdown)](#style-guide-markdown)
19+
20+
---
21+
22+
## Scope of contributions
23+
24+
This guide covers two main types of contributions:
25+
26+
- **Meetup content and topic suggestions** – adding or updating posts with topics, links, and summaries for specific Socratic seminars.
27+
- **General repository maintenance** – documentation, layouts, scripts, CI configuration, and other housekeeping.
28+
29+
The bullets below focus on meetup content. For general repository work, the sections on **Contribution workflow**, **Branch naming conventions**, and **Commit message conventions** also apply.
30+
31+
We welcome:
32+
33+
- **Meeting notes** (agendas, link lists, brief summaries)
34+
- **Topic summaries** (background, trade-offs, relevant work)
35+
- **Resource lists** (papers, PRs, BIPs, mailing-list threads)
36+
- **Corrections/improvements** (typos, clarifications, structure)
37+
- **New templates** that improve the contributor experience
38+
39+
We avoid:
40+
41+
- Opinionated essays (unless clearly marked as editorial and approved)
42+
- Non-Bitcoin content unrelated to Socratic Seminar topics
43+
44+
If you only want to **propose topics** (without editing files yourself), you can open an Issue like:
45+
46+
> `Topics for Socratic #NNN`
47+
48+
and list the suggested links. In that case, the sections **Scope of contributions**, **Citation & link policy**, and **Style guide (Markdown)** are the most relevant.
49+
50+
---
51+
52+
## Citation & link policy
53+
54+
This archive is meant to point to **public resources** and capture **what was discussed**, not who said what in the room.
55+
56+
When adding topics:
57+
58+
- Prefer **canonical, stable URLs**:
59+
- Bitcoin Core / other repos on GitHub
60+
- BIPs from the official BIPs repository
61+
- bitcoin-dev / delvingbitcoin threads
62+
- arXiv papers, project documentation, blog posts
63+
- Avoid:
64+
- URL shorteners whenever possible
65+
- Tracking parameters (`utm_*`, etc.) when it doesn't break the link
66+
- X/Twitter links are acceptable if they are the main source
67+
- Respect privacy:
68+
- Don't link to **private chat logs**, closed groups, or personal DMs
69+
- Don't include personal data about attendees (emails, phone numbers, doxxing, etc.)
70+
- When summarizing ideas from participants, it's fine to keep it anonymous unless they already publish under that identity
71+
72+
---
73+
74+
## Contribution workflow
75+
76+
1. **Open an Issue** (optional but recommended for bigger changes) and describe what you'll add or fix.
77+
2. **Fork** the repo and create a feature branch:
78+
79+
git checkout -b docs/2025-10-seminar-notes
80+
81+
3. **Make your changes** and commit them with a meaningful message.
82+
4. **Push your changes** to your forked repository:
83+
84+
git push origin docs/2025-10-seminar-notes
85+
86+
5. **Open a Pull Request (PR)** to the main repository and link it to the Issue (if applicable).
87+
88+
Try to keep each PR focused on **one meetup** or **one logical change** (e.g. "fix broken links in September 2025 post").
89+
90+
---
91+
92+
## Branch naming conventions
93+
94+
Use short, lowercase names with words separated by hyphens and, when useful, a simple prefix.
95+
96+
Recommended patterns:
97+
98+
- `feat/...` - new content or features
99+
- `fix/...` - bug fixes or corrections
100+
- `docs/...` - documentation-only changes (README, CONTRIBUTING, templates)
101+
- `chore/...` - maintenance, refactors, or build-related changes
102+
103+
Examples:
104+
105+
- `feat/2025-11-socratic-040`
106+
- `docs/add-contributing-guide`
107+
- `fix/typo-2025-09-topics`
108+
- `chore/reorder-readme`
109+
110+
If you create the branch from the GitHub UI, try to avoid generic names like `patch-1` and prefer something descriptive.
111+
112+
---
113+
114+
## Commit message conventions
115+
116+
We follow a style based on [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), for example:
117+
118+
- `feat: nov meetup`
119+
- `feat(header): add X (@curitibabitdevs) link to navigation`
120+
- `feat(_posts): arkade announcement`
121+
- `fix(_posts): update meetup links`
122+
- `fix: remove duplicated topics`
123+
- `2025-09 (#68)`
124+
125+
General rules:
126+
127+
- Write commit messages in **English**.
128+
- Start with a **type**, optional **scope**, then a **short description**:
129+
130+
<type>(optional-scope): short description
131+
132+
- Keep the subject line concise (ideally ≤ 50 characters).
133+
- Use the body (optional) to explain **why** you're changing something, not just **what** changed.
134+
135+
Common types:
136+
137+
- `feat` - new posts, new sections, or new functionality
138+
- `fix` - corrections that change what readers/users see (broken links, wrong dates, incorrect metadata, typos that change meaning)
139+
- `docs` - README, CONTRIBUTING, or other documentation-only updates
140+
- `chore` - repository maintenance (moving/renaming files, updating CI or dependencies, non-user-visible cleanups)
141+
- `refactor` - restructuring scripts or configuration without changing behavior
142+
- `style` - purely stylistic changes (whitespace, line wrapping, indentation) with no change in meaning
143+
- `test` - adding or adjusting tests (if the repo grows tests later)
144+
145+
In practice:
146+
147+
- Use `fix` when something is "wrong" from the reader's point of view (404 links, incorrect info, broken formatting in the rendered page).
148+
- Use `style` when you're only changing formatting/whitespace for readability.
149+
- Use `refactor` when you're improving the structure of helper scripts or config without changing behavior.
150+
- Use `chore` for general housekeeping that doesn't fit the above (moving posts, updating CI configs, bumping dependencies).
151+
152+
Examples for this repository:
153+
154+
- `feat(topics): add socratic seminar 040`
155+
- `feat(posts): add nov 2025 meetup`
156+
- `fix(links): update delvingbitcoin URLs for september`
157+
- `docs: add contribution guidelines`
158+
- `chore(posts): reorder sections by topic`
159+
160+
If you are working on a seminar topic file and that's the only change in the PR, a short and focused subject like below is fine:
161+
162+
- `2025-09: add socratic seminar topics`
163+
164+
---
165+
166+
## Pull Request (PR) process
167+
168+
When opening a PR, please:
169+
170+
1. **Keep it focused.**
171+
Ideally, one PR = one meetup post or one small set of related fixes.
172+
173+
2. **Sync with `main`** before opening:
174+
175+
git fetch upstream
176+
git checkout main
177+
git pull upstream main
178+
git checkout your-branch
179+
git rebase main
180+
181+
3. **Run checks locally** if the repository provides them (e.g. linters, test scripts, or static site build).
182+
Example: `make` / `make test` / `jekyll serve`, as documented in the README.
183+
184+
4. **Write a clear PR description.**
185+
A simple template you can follow:
186+
187+
Summary
188+
-------
189+
- Add topics for the November 2025 Socratic seminar.
190+
- Include links to BIPs, PRs, and Delving Bitcoin threads.
191+
192+
Details
193+
-------
194+
- Meetup date: 2025-11-05
195+
- Sections: Announcements, Bitcoin, Lightning, Misc
196+
197+
Checklist
198+
---------
199+
- [ ] Links render correctly in Markdown preview
200+
- [ ] No private or non-public resources referenced
201+
202+
5. **Address review comments.**
203+
- Push follow-up commits in the same branch.
204+
- Prefer adding new commits rather than force-pushing while the review is active (maintainers can squash at merge time).
205+
206+
A maintainer will review your changes and either approve, request small fixes, or start a discussion if something is unclear.
207+
208+
---
209+
210+
## Squashing & merge strategy
211+
212+
To keep the history readable, we generally:
213+
214+
- Use **"Squash and merge"** for most PRs so that each PR becomes a **single logical commit** on `main` (often one commit per meetup or per change-set).
215+
- Occasionally keep multiple commits (regular merge) when the history inside the PR is meaningful on its own.
216+
217+
Force-pushing (`git push --force-with-lease`) to your **own feature branches** is a common practice to keep the commit history clean, especially **before** a PR is opened or when you're squashing WIP commits.
218+
219+
Once a PR already has review comments, prefer adding new commits instead of rewriting history, unless a maintainer explicitly asks you to rebase or clean up the branch.
220+
221+
What this means for contributors:
222+
223+
- You **don't need** perfectly clean commits while you are iterating on your branch.
224+
- It's nice (but not mandatory) to clean up obvious "WIP" commits before asking for review.
225+
- Maintainers will pick an appropriate merge strategy. If we squash, we'll make sure the final commit message follows the conventions above.
226+
227+
Please:
228+
229+
- Never push directly to `main`.
230+
- Avoid force-pushing to branches that already have review comments unless you're explicitly asked to rebase/cleanup.
231+
232+
---
233+
234+
## Style guide (Markdown)
235+
236+
To keep the archive consistent and easy to read:
237+
238+
- **Headings**
239+
- Start sections at `##` and use `###` for subsections.
240+
- Use a small, predictable set of sections, for example:
241+
- `## Avisos` / `## Announcements`
242+
- `### Bitcoin`, `### Lightning`, `### Mining`, `### Maneiro` / `### Misc`.
243+
244+
- **Lists**
245+
- Use bullet lists for topics, with descriptive link text:
246+
247+
* [BIP-444: Reduced Data Temporary Softfork](https://github.com/bitcoin/bips/pull/2017) - softfork proposal to reduce block data.
248+
* [LND 0.20.0-rc2](https://github.com/lightningnetwork/lnd/releases/tag/v0.20.0-beta.rc2)
249+
250+
- Prefer **descriptive link text** instead of bare URLs.
251+
252+
- **Language**
253+
- File content can follow the meetup's usual language (e.g. Portuguese or English).
254+
- **Commit messages and PR descriptions should always be in English.**
255+
256+
- **Formatting details**
257+
- Try to wrap lines around ~100 characters to keep diffs readable.
258+
- Avoid trailing whitespace and unnecessary blank lines.
259+
- Keep YAML front-matter and indentation consistent with existing files.
260+
- When adding new files, copy from a recent existing post/template to match structure.
261+
262+
- **Code & configuration**
263+
- If you touch any scripts or configuration files:
264+
- Follow the existing style in that language (indentation, quoting, etc.).
265+
- Prefer small, focused changes that are easy to review.
266+
267+
Thanks again for contributing and helping to keep our Socratic archive useful and consistent!

0 commit comments

Comments
 (0)