Modding:Open source

From Stardew Valley Wiki
Jump to: navigation, search

Index

A mod is open-source if its code is public and covered by an open-source license. Modders are highly encouraged to make their mods and content packs open-source.

Why is open source important?

Open source is important for the long-term health of the modding community, and helps make the player experience smoother. Depending on the open-source license you choose, others can...

  • see your code;
  • make changes to a copy of the code;
  • send you proposed updates, changes, and fixes;
  • prepare unofficial updates;
  • better help users with support questions by looking at the code.

The effect can be significant: only 1% of open-source mods broke in SMAPI 3.0, compared to 51% of closed-source mods (and that doesn't count closed-source mods that were never updated for recent game releases).

Common questions

What if I don't like a proposed change?
You still have full control of your original code and mod pages; nobody can change those without your approval! You're free to reject a change someone proposes to your mod.
What is Git? What's a repository?
Git is software that helps track changes to your code, and a repository is a folder containing your mod files with Git tracking. You don't need to know how it works at this point; we'll walk you through getting your code up and making changes (and you can look up Git tutorials if you want to dig deeper).
Doesn't this only apply for SMAPI mods?
Nope! Although content packs aren't compiled, other modders can't legally make changes without a code license. Note that 'permissions' options on sites like Nexus are legally iffy (e.g. who has copyright on derivatives? Can derivatives be relicensed?), so it's a good idea to have a code license for content packs too. That also lets other modders contribute pull requests and updates.

First-time setup

This looks like a lot of steps, but don't worry: it's pretty straightforward. If you need help, come ask in #modding on the Stardew Valley Discord. :)

Create the Git repository

First, let's create the public repository which will contain your code.

  1. Create a GitHub account.
  2. Install SourceTree (Mac/Windows) or GitKraken (Linux). When asked, link it to your GitHub account.
  3. Create the repository on GitHub. Suggested settings (see screenshot):
    1. Repository name: consider StardewMods if you'll put all your mods in the same repository, otherwise use the name of your mod.
    2. Description: consider Mods for Stardew Valley.
    3. Initialize ... with a README: enable this option.
    4. Add .gitignore: leave this blank; we'll add our own later.
    5. Add a license: choose a license (MIT License is a good choice if you're undecided), and select it here.
    6. Click 'Create repository'.
  4. On the repository page that appears, click the green "Clone or download" button and copy the URL:
    Modding - copy GitHub repo URL.png
  5. In SourceTree, click File > Clone and paste the URL. Choose a destination path that's easy to access (like C:\source\StardewMods), and click 'Clone'.

That's the hard part done! Now you have a repository on GitHub that's synced with the folder on your computer.

Add the mod files

Next, let's add your files to the repository.

  1. Open the repository folder (the destination path you entered in step 5 above).
  2. Unzip this zip file into the folder. This will add two files to the root of your folder: .gitattributes (which normalises line endings between Linux/Mac/Windows) and .gitignore (which hides files which shouldn't be committed from Git). You just need to have them in your folder, you won't need to change them.
  3. Copy your mod files (including the .sln file) into the folder.
  4. Commit your changes in SourceTree:
    1. Click Commit at the top.
    2. Click Stage All to add the files to your commit.
    3. Enter a human-readable description for you changes in the textbox. The format is up to you, but "add initial mod files" is fine for now.
    4. Make sure "Push changes immediately" is ticked.
    5. Click "Commit".

That's it: all your files will appear on GitHub. Your mod is now open-source!

Making changes

The steps above are all first-time setup. When you want to make changes, it's much easier:

  1. Edit your code in the repository folder.
  2. In SourceTree, commit and push your changes (see step 4 in the previous section).