Skip to content

Commit a15eb9e

Browse files
authored
feat: add getting contributors started page (#198)
* add new page to navigation * update apache license link
1 parent b416968 commit a15eb9e

2 files changed

Lines changed: 305 additions & 0 deletions

File tree

src/components/Header/Header.jsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,17 @@ function Header() {
8181
<span className="text-color">Contribute</span>
8282
</DropdownToggle>
8383
<DropdownMenu>
84+
<DropdownItem>
85+
<NavLink>
86+
<Link
87+
to="/contribute"
88+
className="text-color"
89+
activeClassName="active"
90+
>
91+
Getting Started
92+
</Link>
93+
</NavLink>
94+
</DropdownItem>
8495
<DropdownItem>
8596
<NavLink>
8697
<Link

src/pages/contribute.jsx

Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
import React from "react";
2+
import { graphql, Link } from "gatsby";
3+
import { Row, Col } from "reactstrap";
4+
import Section from "../components/Section";
5+
import SEO from "../components/SEO/SEO";
6+
import Layout from "../layout";
7+
8+
function GettingStarted() {
9+
return (
10+
<Layout title="Getting Contributors Started">
11+
<Row className="justify-content-center align-items-start">
12+
<Col md="8" className="text-justify">
13+
<p>
14+
All beginnings are difficult, but the below mentioned learning
15+
resources for{" "}
16+
<Link className="text-success" to="#setup">
17+
Workspace Setup
18+
</Link>
19+
{` and `}
20+
<Link className="text-success" to="#engine-modules">
21+
{`Terasology's Engine & Module Land`}
22+
</Link>{" "}
23+
should help you to get started and set yourself up for success.
24+
</p>
25+
<p>
26+
Make sure to also join our{" "}
27+
<a
28+
className="text-success font-weight-bold"
29+
href="https://discordapp.com/invite/Terasology"
30+
>
31+
Discord
32+
</a>{" "}
33+
to get answers to your questions and help with any issues you might
34+
face.
35+
</p>
36+
</Col>
37+
</Row>
38+
<Section tag="h3" id="setup" title="Terasology Workspace Setup">
39+
<Row className="justify-content-center align-items-start">
40+
<Col md="7" className="text-justify">
41+
<p>
42+
Setting up your Terasology Workspace is the first step in your
43+
journey as a Terasology contributor. Follow the Contributor
44+
Quickstart and make sure you understand our multi-repo setup.
45+
</p>
46+
<p>
47+
If you are new to Git and GitHub, we also recommend to especially
48+
get familiar with the Git branching basics and GitHub forking
49+
workflow.
50+
</p>
51+
<p>
52+
Further, remember that all submissions must be licensed under
53+
Apache License, Version 2.0, that we encourage certain best
54+
practices regarding code style, commits and pull requests, and
55+
that we maintain a code of conduct.
56+
</p>
57+
</Col>
58+
<Col md="3" className="text-justify">
59+
<ul>
60+
<li>
61+
<a
62+
className="text-success"
63+
href="https://github.com/MovingBlocks/Terasology/wiki/Contributor-Quick-Start"
64+
>
65+
Contributor Quick Start
66+
</a>
67+
</li>
68+
<li>
69+
<a
70+
className="text-success"
71+
href="https://github.com/MovingBlocks/Terasology/wiki/Terasology's-Multi-Repo-Workspace"
72+
>
73+
Multi-Repo Workspace
74+
</a>
75+
</li>
76+
<li>
77+
<a
78+
className="text-success"
79+
href="https://learngitbranching.js.org/"
80+
>
81+
Learn Git Branching
82+
</a>
83+
</li>
84+
<li>
85+
<a
86+
className="text-success"
87+
href="https://docs.github.com/en/github/collaborating-with-pull-requests/working-with-forks/about-forks"
88+
>
89+
Working with Forks
90+
</a>
91+
</li>
92+
<li>
93+
<a
94+
className="text-success"
95+
href="https://www.apache.org/licenses/LICENSE-2.0"
96+
>
97+
Apache License, Version 2.0
98+
</a>
99+
</li>
100+
<li>
101+
<a
102+
className="text-success"
103+
href="https://github.com/MovingBlocks/Terasology/wiki/Code-Conventions"
104+
>
105+
Code Style Conventions
106+
</a>
107+
</li>
108+
<li>
109+
<a
110+
className="text-success"
111+
href="https://github.com/MovingBlocks/Terasology/blob/develop/.github/CONTRIBUTING.md"
112+
>
113+
Commits & PRs
114+
</a>
115+
</li>
116+
<li>
117+
<a
118+
className="text-success"
119+
href="https://github.com/MovingBlocks/Terasology/blob/develop/docs/CODE_OF_CONDUCT.md"
120+
>
121+
Code of Conduct
122+
</a>
123+
</li>
124+
</ul>
125+
</Col>
126+
</Row>
127+
</Section>
128+
<Section
129+
tag="h3"
130+
id="engine-modules"
131+
title="Terasology's Engine & Module Land"
132+
>
133+
<Row className="justify-content-center align-items-start">
134+
<Col md="8" className="text-justify">
135+
<p>
136+
We recommend to start contributing in Module Land rather than the
137+
Terasology Engine, especially if you do not have a lot of
138+
experience with Java or have not worked with an already existing
139+
and big codebase yet. However, the following concepts are
140+
important for both areas:
141+
</p>
142+
<ul>
143+
<li>
144+
<a
145+
className="text-success"
146+
href="https://github.com/MovingBlocks/Terasology/wiki/Entity-System-Architecture"
147+
>
148+
Entity Component System (ECS)
149+
</a>
150+
</li>
151+
<li>
152+
<a
153+
className="text-success"
154+
href="https://github.com/Terasology/TutorialAssetSystem/wiki"
155+
>
156+
Asset System
157+
</a>
158+
</li>
159+
</ul>
160+
</Col>
161+
<Col md="5" className="text-justify">
162+
<p>
163+
Contributing to <b>{`Terasology's Module Land`}</b> requires basic
164+
Java knowledge and interest in UI/UX, world generation or gameplay
165+
mechanics. Browse through our existing modules, see what we
166+
already have and what we might still be missing.
167+
</p>
168+
<p>
169+
To get started, you should make yourself familiar with module
170+
development and testing. Furthermore, you should to learn about
171+
module dependencies and world generation.
172+
</p>
173+
<ul>
174+
<li>
175+
<a
176+
className="text-success"
177+
href="https://github.com/Terasology"
178+
>
179+
{`Terasology's Module Land`}
180+
</a>
181+
</li>
182+
<li>
183+
<a
184+
className="text-success"
185+
href="https://github.com/MovingBlocks/Terasology/wiki/Developing-Modules"
186+
>
187+
Developing Modules
188+
</a>
189+
</li>
190+
<li>
191+
<a
192+
className="text-success"
193+
href="https://github.com/MovingBlocks/Terasology/wiki/Testing-Modules"
194+
>
195+
Testing Modules
196+
</a>
197+
</li>
198+
<li>
199+
<a
200+
className="text-success"
201+
href="https://github.com/MovingBlocks/Terasology/wiki/Module-Dependencies"
202+
>
203+
Module Dependencies
204+
</a>
205+
</li>
206+
<li>
207+
<a
208+
className="text-success"
209+
href="https://github.com/Terasology/TutorialWorldGeneration/wiki"
210+
>
211+
World Generation Tutorial
212+
</a>
213+
</li>
214+
</ul>
215+
</Col>
216+
<Col md="5" className="text-justify">
217+
<p>
218+
Contributing to the <b>Terasology Engine</b> requires being very
219+
comfortable with Java and ideally having expertise in game engine
220+
topics like rendering, networking and concurrency, as well as
221+
in-game physics and AI technology.
222+
</p>
223+
<p>
224+
To get started, you should make yourself familiar with the
225+
codebase itself and any specific areas within it that match your
226+
interest. Most of the engine-related documentation is in-code.
227+
</p>
228+
<ul>
229+
<li>
230+
<a
231+
className="text-success"
232+
href="https://github.com/MovingBlocks/Terasology/wiki/Serialization-Overview"
233+
>
234+
Serialization
235+
</a>
236+
</li>
237+
<li>
238+
<a
239+
className="text-success"
240+
href="https://github.com/MovingBlocks/Terasology/tree/develop/engine/src/main/java/org/terasology/engine/network"
241+
>
242+
Network Package
243+
</a>
244+
</li>
245+
<li>
246+
<a
247+
className="text-success"
248+
href="https://github.com/MovingBlocks/Terasology/tree/develop/engine/src/main/java/org/terasology/engine/persistence"
249+
>
250+
Persistence Package
251+
</a>
252+
</li>
253+
<li>
254+
<a
255+
className="text-success"
256+
href="https://github.com/MovingBlocks/Terasology/tree/develop/engine/src/main/java/org/terasology/engine/physics"
257+
>
258+
Physics Package
259+
</a>
260+
</li>
261+
<li>
262+
<a
263+
className="text-success"
264+
href="https://github.com/MovingBlocks/Terasology/tree/develop/engine/src/main/java/org/terasology/engine/rendering"
265+
>
266+
Rendering Package
267+
</a>
268+
</li>
269+
</ul>
270+
</Col>
271+
</Row>
272+
</Section>
273+
</Layout>
274+
);
275+
}
276+
export default GettingStarted;
277+
278+
export const pageQuery = graphql`
279+
query siteQuery {
280+
site {
281+
siteMetadata {
282+
title
283+
}
284+
}
285+
}
286+
`;
287+
288+
export function Head({ data }) {
289+
return (
290+
<SEO
291+
title={`Getting Contributors Started | ${data.site.siteMetadata.title}`}
292+
/>
293+
);
294+
}

0 commit comments

Comments
 (0)