Skip to content
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/ProjectName
It 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.

Clone this wiki locally