# OSS Project Checklist A copy of the below checklist could be obtained from https://github.com/scriptnull/oss-checklist (Help us make it better!) ## Pre-checks - [ ] Able to explain your project in a tweet ? - [ ] Choose a name for the project - [ ] Check if domain name / App name is available ? - [ ] List and learn tools required for the project - [ ] Prepare mock-up and one page design document, if needed to explain to collaborators - [ ] List previous / similar implementations and learn from them - [ ] Start a blog post to document the journey ( if time permits ) Mention idea + helpful resources. - [ ] Ask if project could be solved in a modular way by dividing into sub-problems and creating a separate project for the sub-problems. ## Project Creation - [ ] Create a Repository in any of the Source Control Management sites - Github ( Free public repos ) - Gitlab ( Free public and private repos + CI + docker registry ) - Bitbucket ( Free public and private repos ) - [ ] Create a README.md (check below for more) - [ ] Create a LICENSE file (choose one before) - [ ] Create a CODE_OF_CONDUCT.md - [ ] Create a CONTRIBUTING.md - [ ] Create a .gitignore - [ ] Create [Gitter](https://gitter.im) chatroom (if needed) ## README.md Checklist - [ ] Title - [ ] Logo - [ ] Badges - [ ] Description - [ ] Prerequisite for using software ( if any ) - [ ] Install - [ ] Example Usage - [ ] Screenshots and GIFs - For command line apps, try [asciinema](https://asciinema.org/) - For mac GUI screenshots, use [Cmd+Shift+3] or [Cmd+Shift+4] or [Cmd+Shift+4,SpaceBar] - For mac GUI GIF creation, try [kap](https://getkap.co/) - For Ubuntu GUI Screenshots, use [Shift+PrintScr] or [Shutter](http://shutter-project.org/) - For Ubuntu GUI GIF creation, try [silentcast](https://github.com/colinkeenan/silentcast) - [ ] Benchmarks - [ ] Contributors - [ ] Backers and Sponsors - [ ] Attributions ( mention 3rd party libs used etc. ) - [ ] Security - [ ] Post maintainer's PGP fingerprint for reporting security vulnerabilities - [ ] Share [keybase](https://keybase.io/) profile for making the reporting process easier. ## Coding Phase - [ ] Install required developer tools - Compiler - Linter - Formatter - Build Tool - Other - [ ] Basic code complete - [ ] Write tests and keep watch on code coverage - [ ] Setup CI - [AppVeyor](https://www.appveyor.com/) - CI/CD for Windows developers. - [CircleCI](https://circleci.com/) - Docker-based building with support of customized workflows. - [Codefresh](https://codefresh.io/) - Docker-native CI/CD. - [Codeship](https://codeship.com/) - Continuous integration, delivery, and deployment. - [continuousphp](https://continuousphp.com/) - CI/CD for PHP applications. - [DeployHQ](https://www.deployhq.com/) - Deployment automation. - [Sauce Labs](https://saucelabs.com/) - Cross-browser testing, Selenium testing, and mobile testing. - [Semaphore](https://semaphoreci.com/) - Fast automated CI/CD. - [Shippable](https://www.shippable.com/) - DevOps automation. - [Travis-CI](https://travis-ci.org/) - Automated CI/CD for Open Source. - [ ] Host the documentation of the code somewhere if the project is a software library - [ ] Use Github issues ( or other tools ) for tracking backlogs - [ ] Encourage OSS culture by having labels like "help wanted" "easy-to-contribute" etc. - [ ] Contribute to other OSS projects on which the current project is dependent on ( if possible ) - File bug reports - Improve docs - Suggest feature - Learn by reading code ## Release Phase - [ ] Package software in CI or manually in local - [ ] Publish in registries (npm, docker hub etc.) or markets (Android store, App Store etc.) - [ ] Create the release version, description, link for downloading the release etc. in release page ( example: Github release page) ## Post-release - [ ] Publish the blog post - [ ] [Tweet](https://twitter.com/) - [ ] [Hackernews](https://news.ycombinator.com/) - [ ] [Product Hunt](http://producthunt.com/) - [ ] Send PR to `awesome-*` github repository - [ ] [Reddit](https://www.reddit.com) - [ ] [Hashnode](https://hashnode.com/) - [ ] [Linkedin](https://www.linkedin.com/) - [ ] Edit Wikipedia pages (if related) - [ ] Prepare slides and give talks (if possible)