-
Notifications
You must be signed in to change notification settings - Fork 3
Open Source
Pablo Villar edited this page Sep 29, 2016
·
43 revisions
🖐 First of all, make sure you've read Inaka's open-source guidelines.
##Checklist
The following items must be followed for any Swift open source project.
If you are the caretaker of a project, you must ask @ignaciom for admin privileges on it.
💡 Use this reduced checklist for your github issues.
###General Items
It has a Github repo
The repo address must match this format: https://github.com/inaka/ProjectNameIt has a proper [.gitignore](https://github.com/inaka/swift_guidelines/wiki/.gitignore) file
Create a `.gitignore` file at the root level (or edit the existent one), and fill it with what's in the link in order to prevent unnecessary files from living in the repo.It has an [Apache2 LICENSE](https://github.com/inaka/swift_guidelines/wiki/License) file
There must be a `LICENSE` file at the root level containing what's in the link. Be aware of the copyright's year: Set it to the current one.It has a clear and useful [README](https://github.com/inaka/swift_guidelines/wiki/README-Template) file
There must be a `README.md` file at the root level whose content must be filled using the template from the link, in order to guarantee a minimum of quality.Its files and folders are [properly organized](https://github.com/inaka/swift_guidelines/wiki/Project-Organization).
A minimal folders' organization is needed for helping cocoapods fetch only the required files. It also avoids conflicts and helps users find relevant information quickly.It's available in [cocoapods](https://github.com/inaka/swift_guidelines/wiki/Cocoapods)
Cocoapods is the most popular dependency manager for Swift projects. In order to reach a considerable audience, the library must have cocoapods support. Besides, users will find the library easier to install. First, make sure your library's name does not already exist in [the index](https://cocoapods.org/). If so, consider renaming it.###Continuous Integration Items
It's hooked to [HipChat rooms](HipChat-Hook)
The library should be hooked to the **iOS devs** room and the **open-source** public room. This way, every relevant person is aware of its changes.It's hooked to [Travis CI](https://github.com/inaka/swift_guidelines/wiki/Travis-CI-Hook)
Travis CI provides continuous integration support for free, for public repos. Having a CI method helps catch builds that fail or whose tests don't pass, and hence, are not ready to production yet.It's hooked to [Codecov](https://github.com/inaka/swift_guidelines/wiki/Codecov-Hook)
Having a code coverage report tool helps maintainers catch parts of the code that aren't covered by tests. Moreover, it gives users a quick report on how much of the code is covered by tests.###Source Code Items
Code is [documented](https://developer.apple.com/library/content/documentation/Xcode/Reference/xcode_markup_formatting_ref/)
Each exposed API must have a proper markup documentation following the guidelines from the above link. Why document code? There are lots of articles out there explaining why.Code is tested
Aim for both unit tests and UI tests (if they apply), and remember that [100% coverage is a non-goal](https://jeremybytes.blogspot.com.ar/2016/08/code-coverage-should-not-be-goal.html). Why test code? There are lots of articles out there explaining why.Every source file uses the [Apache2 License Header](https://github.com/inaka/swift_guidelines/wiki/License-Header)
For every `.swift` file in the project, remove the default header, and replace it with the [Apache2 License Header](License-Header).###Exhibition Items
There is a [blog post](http://inaka.net/blog/) about it
Contact [@Matias-Vera](https://github.com/Matias-Vera) for further information.It's shared on social networks
Contact [@Matias-Vera](https://github.com/Matias-Vera) for further information.It's shared on [Reddit](https://www.reddit.com/)
Contact [@Matias-Vera](https://github.com/Matias-Vera) for further information.It's shared on [Hacker News](https://news.ycombinator.com/)
Contact [@Matias-Vera](https://github.com/Matias-Vera) for further information.##Current Projects Current projects are listed in this spreadsheet.