|
| 1 | +# Open Resource Library |
| 2 | + |
1 | 3 | [](https://zenodo.org/doi/10.5281/zenodo.11508637) |
2 | 4 |
|
3 | | -# Open Resource Library |
| 5 | +An open source toolkit for students and researchers getting started with open source software development. |
| 6 | + |
| 7 | +Maintained by [VERSO (Vermont Research Open Source Program)](https://verso.w3.uvm.edu) at the University of Vermont. |
| 8 | + |
| 9 | +**Live site:** [verso-uvm.github.io/Open-Resource-Library](https://verso-uvm.github.io/Open-Resource-Library) |
4 | 10 |
|
5 | | -Learn, explore, and create open source practices. |
| 11 | +--- |
6 | 12 |
|
7 | | -UVM |
| 13 | +## What's Inside |
| 14 | + |
| 15 | +The library is organized into three sections: |
| 16 | + |
| 17 | +- **Concepts** — foundational ideas: version control, testing, debugging, APIs, CI/CD, licensing, ethics, and more |
| 18 | +- **Tools** — practical guides: Git, GitHub, VS Code, Python, Docker, pyenv, SSH, and more |
| 19 | +- **VERSO Standards** — project conventions for commit messages, micro-commits, and AI use |
| 20 | + |
| 21 | +--- |
8 | 22 |
|
9 | 23 | ## Contributing |
10 | 24 |
|
11 | | -**TODO** |
| 25 | +Contributions are welcome — from fixing typos to adding entirely new pages. All skill levels are welcome. |
| 26 | + |
| 27 | +### Getting Started |
12 | 28 |
|
13 | | -### Local development |
| 29 | +1. **Fork** the repository on GitHub |
| 30 | +2. **Clone** your fork locally |
| 31 | +3. **Create a branch** for your changes: `git checkout -b your-branch-name` |
| 32 | +4. Make your changes (see [Editing Content](#editing-content) below) |
| 33 | +5. **Commit** with a descriptive message |
| 34 | +6. **Push** your branch and open a **Pull Request** |
14 | 35 |
|
15 | | -To work on the Open Resource Library (ORL) locally, you must have [Bun](https://bun.sh) installed, as it is the runtime and package manager of choice for the ORL. |
| 36 | +### Local Development |
16 | 37 |
|
17 | | -##### Install dependencies |
| 38 | +You need [Bun](https://bun.sh) installed. Bun is the runtime and package manager used by this project. |
| 39 | + |
| 40 | +**Install Bun:** |
| 41 | + |
| 42 | +```bash |
| 43 | +# macOS / Linux |
| 44 | +curl -fsSL https://bun.sh/install | bash |
| 45 | + |
| 46 | +# Windows (PowerShell) |
| 47 | +powershell -c "irm bun.sh/install.ps1 | iex" |
| 48 | +``` |
| 49 | + |
| 50 | +**Install dependencies:** |
18 | 51 |
|
19 | 52 | ```bash |
20 | 53 | bun i |
21 | 54 | ``` |
22 | 55 |
|
23 | | -##### Start the development server |
| 56 | +**Start the development server:** |
24 | 57 |
|
25 | 58 | ```bash |
26 | 59 | bun start |
27 | 60 | ``` |
28 | 61 |
|
29 | | -This will open a browser window to [localhost:3000](http://localhost:3000), which will be updated live with any changes you make to the library. |
30 | | -(Note: you may append `--no-open` to this command to prevent the opening of a new browser window) |
| 62 | +This opens a browser window at [localhost:3000](http://localhost:3000) and updates live as you edit files. Add `--no-open` to prevent the browser from opening automatically. |
31 | 63 |
|
32 | | -##### Build the site |
| 64 | +**Build the site:** |
33 | 65 |
|
34 | 66 | ```bash |
35 | 67 | bun run build |
36 | 68 | ``` |
37 | 69 |
|
38 | | -##### Preview the built site |
| 70 | +**Preview the built site:** |
39 | 71 |
|
40 | 72 | ```bash |
41 | 73 | bun serve |
42 | 74 | ``` |
43 | 75 |
|
44 | | -This also open a browser window to [localhost:3000](http://localhost:3000) which will allow you to preview what the site will look like in production. |
45 | | -(As with the dev server, `--no-open` may be provided to prevent the opening of a new browser window) |
| 76 | +This also opens [localhost:3000](http://localhost:3000) so you can preview what the site will look like in production. |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## Editing Content |
| 81 | + |
| 82 | +All content lives in the `docs/` directory as Markdown files. Each subdirectory is a category in the sidebar. |
| 83 | + |
| 84 | +### Directory Structure |
| 85 | + |
| 86 | +```text |
| 87 | +docs/ |
| 88 | +├── introduction.md # Landing page |
| 89 | +├── concepts/ # Conceptual guides |
| 90 | +│ ├── _category_.yml # Sidebar config for this category |
| 91 | +│ ├── apis.md |
| 92 | +│ ├── ci_cd.md |
| 93 | +│ ├── command_line.md |
| 94 | +│ ├── debugging.md |
| 95 | +│ ├── documentation.md |
| 96 | +│ ├── package_management.md |
| 97 | +│ ├── security_basics.md |
| 98 | +│ ├── testing.md |
| 99 | +│ ├── version_control.md |
| 100 | +│ └── ... |
| 101 | +├── tools/ # Tool-specific guides |
| 102 | +│ ├── _category_.yml |
| 103 | +│ ├── docker.md |
| 104 | +│ ├── git.md |
| 105 | +│ ├── github.md |
| 106 | +│ ├── python.md |
| 107 | +│ ├── pyenv.md |
| 108 | +│ ├── ssh.md |
| 109 | +│ ├── vscode.md |
| 110 | +│ └── ... |
| 111 | +└── verso-standards/ # VERSO project conventions |
| 112 | + ├── _category_.yml |
| 113 | + ├── commit-messages.md |
| 114 | + └── ... |
| 115 | +``` |
| 116 | + |
| 117 | +### Adding a New Page |
| 118 | + |
| 119 | +1. Create a `.md` file in the appropriate category directory |
| 120 | +2. Start with a `#` heading — this becomes the page title and sidebar label |
| 121 | +3. Write content using standard Markdown (see [Markdown Guide](https://www.markdownguide.org)) |
| 122 | +4. Docusaurus admonitions (`:::tip`, `:::warning`, `:::info`) are available for callout boxes |
| 123 | + |
| 124 | +### Category Configuration |
| 125 | + |
| 126 | +Each category has a `_category_.yml` file that controls its sidebar appearance: |
| 127 | + |
| 128 | +```yaml |
| 129 | +position: 2 # Position in the sidebar |
| 130 | +label: Concepts # Display name |
| 131 | +collapsed: false # Whether the category starts collapsed |
| 132 | +link: |
| 133 | + type: generated-index |
| 134 | + title: Concepts Overview |
| 135 | +``` |
| 136 | +
|
| 137 | +### Page Metadata |
| 138 | +
|
| 139 | +Pages can have front matter at the top to control their sidebar position and title: |
| 140 | +
|
| 141 | +```markdown |
| 142 | +--- |
| 143 | +sidebar_position: 1 |
| 144 | +sidebar_label: Custom Sidebar Label |
| 145 | +--- |
| 146 | + |
| 147 | +# Page Title |
| 148 | +``` |
| 149 | + |
| 150 | +### Docusaurus Features |
| 151 | + |
| 152 | +This site uses [Docusaurus 3](https://docusaurus.io). Beyond standard Markdown, you can use: |
| 153 | + |
| 154 | +- **Admonitions** for callout boxes: `:::tip`, `:::note`, `:::warning`, `:::danger`, `:::info` |
| 155 | +- **Code blocks** with syntax highlighting: ` ```python `, ` ```sh `, ` ```yaml `, etc. |
| 156 | +- **Tables**, **links**, and standard GFM (GitHub Flavored Markdown) |
| 157 | + |
| 158 | +For more features, see the [Docusaurus documentation](https://docusaurus.io/docs). |
| 159 | + |
| 160 | +--- |
| 161 | + |
| 162 | +## Style Guide |
46 | 163 |
|
47 | | -### Editing content |
| 164 | +When writing new pages, aim to match the existing style: |
48 | 165 |
|
49 | | -The actual content of the library is stored as markdown files within the `docs` directory. |
50 | | -Each subdirectory of `docs` acts as a category, which then gets auto-generated into groups in the sidebar. |
| 166 | +- Write for undergraduate students — clear, direct language, no assumed expertise |
| 167 | +- Use second person ("you") to address the reader |
| 168 | +- Define terms before using them |
| 169 | +- Include practical examples and code snippets |
| 170 | +- Add a **References** section at the bottom with links to further reading |
| 171 | +- Use `:::tip` for helpful hints, `:::warning` for important cautions |
51 | 172 |
|
52 | | -For categories, the `_category_.yml` file may be used to modify a number of metadata options. |
53 | | -Namely, the category's position within the sidebar with the `position` key, label with the `label` key, whether it starts collapsed with the `collapsed` key, and more. |
| 173 | +--- |
54 | 174 |
|
55 | | -Each page also has metadata you can modify using the markdown file's [front matter](https://jekyllrb.com/docs/front-matter/). |
56 | | -By default, the page title in the browser and sidebar will be taken from the first `h1` or `#` header on the page, |
57 | | -these values can be modified with the `title` and `sidebar_label` keys respectively. |
58 | | -A page's position on the sidebar can also be modified with the `sidebar_position` key, similar to how category positioning works. |
| 175 | +## License |
59 | 176 |
|
60 | | -That covers the basics of editing the ORL, but Docusaurus is an extensive tool with many so-far unused features. |
61 | | -If you would like to learn more about Docusaurus and it's features, you can do so at the [Docusaurus docs](https://docusaurus.io/docs). |
| 177 | +See [LICENSE](LICENSE) for the license terms for this project's content. |
0 commit comments