Skip to main content

Contributing

Casbin is a powerful authorization library that supports access control models with implementations in many programming languages. If you are proficient in any programming language, you can contribute to the development of Casbin. New contributors are always welcome.

Currently, there are two main types of projects:

  • Algorithms-oriented projects - These projects involve implementing algorithms in different programming languages. Casbin supports a wide range of languages, including Golang, Java, C++, Elixir, Dart, and Rust, along with their related products.
golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
Production-readyProduction-readyProduction-readyProduction-ready
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
Production-readyProduction-readyProduction-readyProduction-ready
  • Application-oriented projects - These projects are related to applications built on top of Casbin.
ProjectDemoDetailsSkill Stacks
CasdoorCasdoorCasdoor is a UI-first centralized authentication/Single-Sign-On (SSO) platform based on OAuth 2.0/OIDC.JavaScript + React and Golang + Beego + SQL
CasnodeCasbin ForumCasnode is a next-generation forum software.JavaScript + React and Golang + Beego + SQL
Casbin OAOA systemCasbin-OA is an official manuscript processing, evaluation, and display system for Casbin technical writers.JavaScript + React and Golang + Beego + MySQL
Casbin EditorCasbin EditorCasbin-editor is a web-based editor for Casbin models and policies.TypeScript + React

Getting Involved

There are many ways to contribute to Casbin. Here are some ideas to get started:

  • Use Casbin and report issues! When using Casbin, report any issues you encounter to help promote the development of Casbin. Whether it's a bug or a proposal, filing an issue on GitHub is recommended. However, it would be better to have a discussion first on Discord or GitHub Discussions before filing an issue.

    Note: When reporting an issue, please use English to describe the details of your problem.

  • Help with documentation! Contributing to the documentation is a good starting point for your contribution.

  • Help solve issues! We have prepared a table containing easy tasks suitable for beginners, with different levels of challenges labeled with different tags. You can check the table here.

Pull Requests

Casbin uses GitHub as its development platform, so pull requests are the main way to contribute.

Before opening a pull request, there are a few things you need to know:

  • Explain why you are sending the pull request and what it will do for the repository.

  • Make sure the pull request does only one thing. If there are multiple changes, please split them into separate pull requests.

  • If you are adding new files, please include the Casbin license at the top of the new file(s).

    // Copyright 2021 The casbin Authors. All Rights Reserved.
    //
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    //
    // http://www.apache.org/licenses/LICENSE-2.0
    //
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
  • In projects like Casdoor, Casnode, and Casbin OA, you may need to set up a demo to show the maintainer how your pull request helps with the development of the project.

  • When opening a pull request and committing your contribution, it is recommended to use semantic commits with the following format: <type>(<scope>): <subject>. The <scope> is optional. For more detailed usage, please refer to Conventional Commits.

License

By contributing to Casbin, you agree that your contributions will be licensed under the Apache License.