Most Important code isn't the code
Let's say it's pretty obvious unless you're a total noob, you don't directly open the IDEs and start typing the Jargon and call it soluting ...
Documentation
- Way to communicate with users, admin and developers
- Gives an overview of the system
- Helps to Plan a solution
- Helps in Maintenance
- Reduce technical debt
- dumping of code without context in fast pace deadlines
- reduce code smell: buggy features | commented code snippets | dead code | wrong docs
How to Doc?
- Commenting | Docs generators: Java Docs
- Readable Code
- Test as documentation
- Project Wiki | ReadMe | Github Pages
Documents for Developers
- Understand: Process | Tools | Workflows
- Guideline: CodeStyle | Quality Assurance | Issue Reporting | Testing
Document Driven Development
- Development Strategy: Focused on Documentation
- Documentation: Wikis | Readme
- Types: Project descriptor | Module descriptor
Problem it solves
- Solution is pre-analyzed
- Better Design for TDD | BDD
- Roadmap for your project
- Readability increases
- Everyone knows what happens in code!
ReadMe!
- The readme should be as good as the project, the face of your project
- Brief and Basic increases engagement with the project
- Documentation is Personal but professional
- Earns you a star!
Helpful README checklist
[ ] One-liner explaining of module [ ] Necessary background , context & links [ ] Clear, runnable examples [ ] Installation instructions [ ] Extensive API documentation [ ] Caveats and limitations & Critical info [ ] The Authors[ ] License
Project Descriptor Template
Project title
A little info about your project and/ or overview that explains what the project is about.https://github.com/tommybuonomo/dotsindicator
https://github.com/square/picasso
Motivation/Introduction
A short description of the motivation behind the creation and maintenance of the project. This should explain why the project exists.https://github.com/iterative/dvc#readme
Build status
Build status of continuous integration i.e. Travis, Appveyor etchttps://github.com/developer-shivam/crescento#crescento
Table of content
https://github.com/JStumpp/awesome-android#custom-dialogCode style
If you're using any code style like xo, standard etc. That will help others while contributing to your project.https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md
Screenshots
Include logo/demo screenshot etc.https://github.com/tommybuonomo/dotsindicator#material-view-pager-dots-indicator
Features
What makes your project stand out?https://github.com/ArmynC/ArminC-AutoExec/#features
Code Example
Show what the library does as concisely as possible, developers should be able to figure out how your project solves their problem by looking at the code example. Make sure the API you are showing off is obvious, and that your code is short and concise.https://github.com/TakuSemba/Spotlight
Installation
Provide step by step series of examples and explanations about how to get a development env running.https://github.com/gitpoint/git-point#build-process
API Reference
Depending on the size of the project, if it is small and simple enough the reference docs can be added to the README. For medium size to larger projects it is important to at least provide a link to where the API reference docs live.https://github.com/sindresorhus/pageres#api
Tests
Describe and show how to run the tests with code examples.https://github.com/ravidsrk/android-testing-guide#local-tests
How to use?
If people like your project they’ll want to learn how they can use it. To do so include step by step guide to use your project.https://github.com/algolia/voice-overlay-android#installation
Release History
change logs with versions or tags.https://github.com/tommybuonomo/dotsindicator#changelog
Contribute
Let people know how they can contribute into your project. A contributing guideline will be a big plus. Example links:https://github.com/zulip/zulip-electron/blob/master/CONTRIBUTING.md
Credits
Give proper credits. This could be a link to any repo which inspired you to build this project, any blogposts or links to people who contributed in this project.https://github.com/gitpoint/git-point#backers-
License
A short snippet describing the license (MIT, Apache etc)https://github.com/TakuSemba/Spotlight
How to choose a open https://choosealicense.com/ https://gist.github.com/nicolasdao/a7adda51f2f185e8d2700e1573d8a63
Module descriptor Template
- Read-me per module | Feature
- Explains various flows using DFDs or UML diagrams
- Functions in that module : purpose | arguments | returns | dependencies | mutations
- List of 3rd Party Libraries
- Widgets/UI components/API used
- Error messages | Exceptions handled
- Caveats | limitations | Hacks
Tools:
Automated Docs generation https://docsify.now.sh/ https://www.npmjs.com/package/gh-pagesFurther Readings:
https://www.makeareadme.com/https://www.freecodecamp.org/news/what-i-learned-from-an-old-github-project-that-won-3-000-stars-in-a-week-628349a5ee14/
https://tknilsson.com/2018/10/19/android-friday-things-i-want-to-see-in-the-readme-file/
https://github.com/matiassingers/awesome-readme
https://m.dotdev.co/how-to-write-a-readme-that-rocks-bc29f279611a
Comments
Post a Comment