Contributions to KeeCloud are welcome. Anyone is welcome to fork the repository and create pull requests. However, in order to avoid unnecessary effort, please read through these guidelines first.
New service integrations
The most obvious contribution one could make is to create a new provider. Generally, if all you do is add a new provider by implementing an IProvider and possibly an ICredentialConfigurationProvider if required, there are only a few reasons it would be rejected.
- If it uses a dependency that isn't compatible with the license that KeeCloud is released under it will likely be rejected (or changed before inclusion)
- If it includes a modification/extension of the provider architecture (if this is needed see below first)
- If, upon my review, I don't think it is a secure or clean implementation.
- If a dependency is used that I am not comfortable with it may be rejected (or re-worked). Generally the official SDK for a service or a popular NuGet package will be fine (again check the license).
Talk to me first to ensure compatibility.
Other kinds of contributions
Any type of contribution is welcome, not just new services. However, please adhere to the following before doing something. Don't just add features that you want or re-factor code on your own, at least not if you want it to be included in the main repository.
- Drop me a line. I would love it if people want to help out. However, before investing work in an idea lets talk about it. I'd hate for effort to be wasted on something that is either already being worked on, or something that isn't inline with the project goals. You are of course welcome to fork the repo and do what you want anyway, but it may not be merged back in without some discussion first.
- If you notice a bug or want to add a feature, open an issue. Comment your intentions on the issue and we'll open a dialog. Keep in mind, KeeCloud is intentionally light on features. The idea here is to create natural integration points for use either with KeePass features, or other plugins. Built in syncing or merging or backups are not planned and are in fact intentionally left out. (KeeCloud extends natural KeePass connectivity. Other plugins can be created that leverage KeeCloud's connectivity that do these kinds of things.)
- If you want to implement a feature or fix a bug that is in the issue tracker already, post your intentions in the comments and talk to me about it first (or it might not get merged back in)
Basically, I won't promise to include pull requests unless there is some discussion beforehand. The simple addition of a new service is likely to be included, but when in doubt, drop me a line before expending effort. As always, you are welcome to do what you want anyway since this is open source under an MIT license, but just know that I may not merge it back in unless we work together.