Modding:Open source

From Stardew Valley Wiki
Revision as of 00:04, 17 March 2019 by Pathoschild (talk | contribs) (split from Modding:Using XNB mods)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Index

Go open-source

Common questions

What is 'open source'?
Open source means your mod's code is public and others can change a copy of it subject to a license you choose. You still have full control of your original code and mod pages; nobody can change those without your approval! However, open source lets others create unofficial updates or publish their own versions.
Do I have to go open-source?
No, but it's strongly recommended. Making mods open-source is important for the long-term health of the modding community — when you're away or lose interest, others can still update your mods for the latest versions. 66% of SMAPI mods have source code available, which contributes to over 90% of tracked SMAPI mods being updated after major game updates.
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 plus special files for Git tracking. You don't really 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!