Difference between revisions of "Modding:Open source"
Pathoschild (talk | contribs) (+ intro, update headers, add missing section) |
Pathoschild (talk | contribs) (rewrite common questions, tweaks) |
||
Line 1: | Line 1: | ||
←[[Modding:Index|Index]] | ←[[Modding:Index|Index]] | ||
− | A mod is '''open-source''' if its code is public and covered by [https://choosealicense.com/ an open-source license]. Open-source | + | A mod is '''open-source''' if its code is public and covered by [https://choosealicense.com/ 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. | ||
==Common questions== | ==Common questions== | ||
− | ; What | + | ; 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? | ; What is Git? What's a repository? | ||
− | : Git is software that helps track changes to your code, and a | + | : 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? | ; Doesn't this only apply for SMAPI mods? |
Revision as of 00:51, 17 March 2019
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.
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.
- Create a GitHub account.
- Install SourceTree (Mac/Windows) or GitKraken (Linux). When asked, link it to your GitHub account.
- Create the repository on GitHub.
Suggested settings (see screenshot):
- Repository name: consider StardewMods if you'll put all your mods in the same repository, otherwise use the name of your mod.
- Description: consider Mods for Stardew Valley.
- Initialize ... with a README: enable this option.
- Add .gitignore: leave this blank; we'll add our own later.
- Add a license: choose a license (MIT License is a good choice if you're undecided), and select it here.
- Click 'Create repository'.
- On the repository page that appears, click the green "Clone or download" button and copy the URL:
- 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.
- Open the repository folder (the destination path you entered in step 5 above).
- 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.
- Copy your mod files (including the .sln file) into the folder.
- Commit your changes in SourceTree:
- Click Commit at the top.
- Click Stage All to add the files to your commit.
- 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.
- Make sure "Push changes immediately" is ticked.
- 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:
- Edit your code in the repository folder.
- In SourceTree, commit and push your changes (see step 4 in the previous section).