Skip to main content

Contributing

Casbin is a powerful authorization library supports access control models with many languages implementations, so long as you are good at one language, you can participate in the development of Casbin. New contributors are always welcomed.

Currently, there are mainly two types of projects.

  • Algorithms oriented——First kind of projects are algorithms related projects for different language implementations, include most of the mainstream programming languages ranging from Golang, Java, C++ to Elixir, Dart and Rust, and their peripheral products.
golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
production-readyproduction-readyproduction-readyproduction-ready
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
production-readyproduction-readyproduction-readyproduction-ready
  • Application oriented——Second kind of projects are application related projects.
ProjectDemoDetailsSkill stacks
CasdoorCasdoorCasdoor is UI-first centralized authentication / Single-Sign-On (SSO) platform based on OAuth 2.0 / OIDCJavaScript + React and Golang + Beego + SQL
CasnodeCasbin ForumCasnode is next generation forum softwareJavaScript + React and Golang + Beego + SQL
Casbin OAOA systemCasbin-OA is An official manuscript processing, evaluation and display system for Casbin technical writersJavaScript + React and Golang + Beego + MySQL
Casbin EditorCasbin EditorCasbin-editor is a web-based Casbin model and policy editorTypeScript + React

Get 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 issues to promote development of Casbin, no matter bugs or proposal. Before file an issue on GitHub, it would be better to discuss first on Discord or GitHub Discussions

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

  • Help with docs! Contributing start from docs are a good choice to start your contribution.

  • Help solve issues! We prepare a table containing easy tasks suitable for beginner, with different level of challenges labeled with different tags, check the table here.

Pull Requests

Casbin uses GitHub as its developing platform. So the pull requests are the main source of contributions.

There are something you need to know before you open a pull request:

  • Explain why you send this PR and what this PR would do to the repo.

  • Make sure the PR does only one thing, otherwise please split it.

  • If there are newly added files, please include Casbin license to the top of 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 Casdoor, Casnode and Casbin OA, your might need to setup demo to show the maintainer your pull request help the development of project.

  • When you open PR and commit your contribution, it would be better to use the semantic commits, format: <type>(<scope>): <subject>, <scope> is optional. For more detailed usage, please see conventional commit

License

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