Skip to content

Contributing

Travis Christian edited this page Aug 11, 2022 · 7 revisions

Are you interested in contributing to the C7 project? Read on to get started.

Finding a Starting Issue

Note: Since C7 is still in early development and using Civ3 assets, almost all open issues are programming tasks for C# and/or Godot developers. As the project matures we will start to see more issues for artwork, writing, QA, and more.

We try to keep at least a handful of starter issues, which you can identify by the label good first issue. How easy they are will depend on your background, but they should be smoother starting points than the average issue, often with somewhat more detailed descriptions. You can also filter by additional labels, such as "art" that may help narrow down your search.

When you find an issue that you'd like to work on, leave a comment on it so we can move the issue to "In Progress", and start the process of adding you to the project. Once you take on an issue, we will add you as an "Outside Collaborator" with Read access to make it easier to communicate and track your progress. It's recommended that you also join at least one of CFC or Discord, as described below.

Where Discussions Happen

Non-technical conversation around the game currently happens in a sub-forum of the Civilization Fanatics' Center ("CFC") titled "Civ3 Future Development". You can sign up with an account there to join the discussion. You may then click "Watch Forum" at the top of the page to automatically be notified of any new threads. CFC is also where long-form updates are posted, and where the original C7 creators met.

Much of the technical discussion among developers happens here on GitHub under the Discussions section. These are cross-cutting conversations about things like architecture, development process, releases, and so on. We strongly recommend you "watch" this repository to receive notifications for issues and discussions: click the drop-down next to "Watch" at the top right, then either "All Activity" or "Participating and @mentions" + "Custom -> Discussions". This will allow you to easily keep up to date with changes and conversations that may affect your work.

We also have a public Discord server, where most of the developers and some players chat. If you're having trouble with something or just have a question, this is probably the quickest way to get a response.

Please ask any clarifying questions about the issue, either on the issue itself, or at one of these locations!

Developing

We recommend the C7 Development VM for new developers, as it simplifies the setup process and provides a standardized environment. Otherwise, see Developing and Setting Up IDEs to set up your development environment.

As for the process, fork the repository first to do the work, and then open a Pull Request to merge your changes. While most of the starter tasks should result in fairly small change sets, please note that breaking your work down into smaller changes, and submitting a pull request as each is ready, will result in faster feedback and a quicker review than if you submit larger PRs.

We are currently working on Pull Request guidelines, but are aiming to have feedback on small PRs within one week, especially for new contributors. This project isn't anyone's day job, so please be patient, and post that you have a PR ready for review in one of the channels above so it's more visible.

For the most part we have been using Visual Studio Code for development of the C# parts of the project (thus far the majority), with the Godot editor (the latest stable version 3.x) for Godot-focused tasks and launching the project. However, we've also had team members using Rider which offers a more full-featured IDE experience. For your first issue, if you aren't already a Rider user, Visual Studio Code + Godot is likely the way to go.

Team Integration

Once you've completed a few good contributions (three to five), we'll upgrade you to Write access to the repo, which will allow you to merge your own pull requests. Asking questions and being engaged along the way is encouraged. Again, if you have any questions just ask a developer in one of the channels above.

We're still figuring out what our process is for adding people to the C7 organization. At first we added everyone, but that was when we knew everyone from CFC over the course of years and years. Going forward, we'd like to follow Godot's lead in having the people added to the project be the core, long-term contributors. We're still figuring out what the appropriate thresholds for that should be, as of July 2022.