Contributing to Zulip
- Contributing guide
- Zulip Code of Conduct
- Asking great questions
- Design discussions
- Version control
- Code style and conventions
- Be consistent!
- Lint tools
- Secrets
- Dangerous constructs
- Too many database queries
- UserProfile.objects.get() / Client.objects.get() / etc.
- Using Django model objects as keys in sets/dicts
- user_profile.save()
- Using raw saves to update important model objects
- Naive datetime objects
x.attr('zid')
vs.rows.id(x)
- JavaScript
const
andlet
- JavaScript and TypeScript
for (i in myArray)
- Translation tags
- Paths to state or log files
- JS array/object manipulation
- More arbitrary style things
- Reviewable pull requests
- Reviewing Zulip code
- Using zulipbot
- Bug report guidelines
- Licensing