You'll find here the basics to contribute to OfflineIMAP, addressed to users as well as learning or experienced developers to quickly provide contributions.
For more detailed documentation, see the Community's website.
Contents
Issues are welcome to both Github and the mailing list, at your own convenience. Provide the following information: - system/distribution (with version) - offlineimap version (offlineimap -V) - Python version - server name or domain - CLI options - Configuration file (offlineimaprc) - pythonfile (if any) - Logs, error - Steps to reproduce the error
Worth the read: How to fix a bug in open source software.
You might help closing some issues, too. :-)
- Coding Guidelines
- APIs in OfflineIMAP
- Know the status of your patches after submission
- All the documentation
All contributors to OfflineIMAP are benevolent volunteers. This makes hacking to OfflineIMAP fun and open.
Thanks to Python, almost every developer can quickly become productive. Students and novices are welcome. Third-parties patches are essential and proved to be a wonderful source of changes for both fixes and new features.
OfflineIMAP is entirely written in Python, works on IMAP and source code is tracked with Git.
It is expected that most contributors don't have skills to all of these areas. That's why the best thing you could do for you, is to ask us about any difficulty or question raising in your mind. We actually do our best to help new comers. We've all started like this.
- The official repository is maintained by the core team maintainers.
- The mailing list is where all the exciting things happen.
- Clone the official repository.
Create an account and login to Github.
Fork the official repository.
Clone your own fork to your local workspace.
Add a reference to your fork (once):
$ git remote add myfork https://github.com/<your_Github_account>/offlineimap.git
Regularly fetch the changes applied by the maintainers:
$ git fetch origin $ git checkout master $ git merge offlineimap/master $ git checkout next $ git merge offlineimap/next
Create your own topic branch off of
next
(recently updated) via:$ git checkout -b my_topic next
Check for unnecessary whitespaces with
git diff --check
before committing.Commit your changes into logical/atomic commits. Sign-off your work to confirm you agree with the Developer's Certificate of Origin.
Write a good commit message about WHY this patch (take samples from the
git log
).
There is already a lot of documentation. Here's where you might want to look first:
- The directory
offlineimap/docs
has all kind of additional documentation (man pages, RFCs). - The file
offlineimap.conf
allows to know all the supported features. - The file
TODO.rst
express code changes we'd like and current Work In Progress (WIP).