/Summer2022

开源软件供应链点亮计划-暑期2022 for Casbin 【学生报名请加QQ群:540163681】

Apache License 2.0Apache-2.0

开源软件供应链点亮计划-暑期2022

开源软件供应链点亮计划-暑期2022”是什么?

“开源软件供应链点亮计划-暑期2022”(以下简称 暑期2022)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。

该计划将联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名。学生可自主选择感兴趣的项目进行申请,并在中选后获得该软件资深维护者(社区导师)亲自指导的机会。根据项目的难易程度和完成情况,参与者还将获取“开源软件供应链点亮计划-暑期2022”活动奖杯和奖金。

暑期 2020 活动信息请查阅:https://summer-ospp.ac.cn/2020/

暑期 2021 活动信息请查阅:https://summer-ospp.ac.cn/2021/

“暑期2022”项目在今年(2022)第三次举办,与Google Summer of Code类似,可以看做**版的GSoC。

  1. 官网:https://summer-ospp.ac.cn/
  2. 新闻:https://segmentfault.com/a/1190000041695372

活动的组织方有哪些

本次活动由**科学院软件研究所、openEuler 社区主办,当前是第三届。

活动的参与方以及角色有哪些

活动参与方主要角色为学生、社区和导师。

  1. 学生:学生自由选择项目,与社区导师沟通实现方案并撰写项目计划书。被选中的学生将在社区导师指导下,按计划完成开发工作,并将成果贡献给社区。社区评估学生的完成度,主办方根据评估结果发放资助金额给学生。
  2. 社区:社区提供项目列表和描述,并安排项目对应的导师,导师与申请者沟通方案、并从申请者中选中一位承接项目。在为期三个月的开发周期中,导师指导学生进行对应项目的开发工作。
  3. 导师:社区针对每一个项目指定一个社区导师,与学生一起制定合适的开发计划和方案,指导学生按计划完成开发。

项目的奖金是多少

学生可获得的奖金:

  1. 进阶:奖金人民币 12000 元:优化类的任务,例如提高时间、降低内存占用、提供性能等
  2. 基础:奖金人民币 8000 元:功能类的任务,例如为本社区开源项目增加一个或若干个重要特性等

难度分级由社区根据项目任务决定。

对于导师而言,无论何种难度,导师的奖金为每个项目税前 3000 元人民币,每位导师最多负责 1 个项目,即奖金最多为税前 3000 元人民币。

Casbin开源项目介绍

Casbin是一个强大的、高效的开源访问控制框架。涉及到Go, Java, Node.js, Javascript (React), Python, PHP, .NET, Delphi, Rust等多种语言。Casbin由北京大学罗杨博士创立于2017年,核心维护团队有数十人。Casbin在业界具有广泛影响力。目前已经被Intel、VMware、Orange、RedHat、T-Mobile等公司开源使用,被腾讯云、Cisco、Verizon等公司闭源使用。具体详见Casbin主页。Casbin Go主项目目前GitHub 8800+ stars,加上所有语言的实现、插件等可达到15000+ stars。Casbin曾经在国际上多次宣讲:

  1. 新加坡政府技术部门Open Government Products:https://www.youtube.com/watch?v=OTT84oplR9o
  2. 俄罗斯最大在线旅游平台tutu.ru:https://www.youtube.com/watch?v=Z5dUxH4PqYM

具体请了解Casbin官网:https://casbin.org/

可选项目列表

下列所有项目都与Casbin一致,采用开源协议:Apache 2.0 license

Casbin核心权限库改进(Go + Java)

  1. 项目名称:Casbin(Go + Java)
  2. 项目主导师:唐阳 (Yang Tang), tangyang9464 (AT) 163.com
  3. 项目描述:Casbin采用独特的PERM模型语法(model)来实现强大、灵活的访问控制。Casbin Golang版本作为Casbin的第一个语言实现,拥有最多的用户以及最先进的feature。我们希望在Casbin Golang上: 1)增强Casbin语法的表达能力,满足用户多样化的策略制定需求; 2)优化Casbin在大规模规则集上(百万以上)的策略评估性能。 jCasbin是Casbin的Java版本,它需要及时跟踪Golang Casbin主库的最新feature并移植到Java版本中来。同时维护Java特有的生态
  4. 项目难度:进阶
  5. 涉及技术领域标签:Authorization
  6. 编程语言标签:Go, Java
  7. 项目产出要求:
    • 增强Casbin语法的表达能力,满足用户多样化的策略制定需求
    • 优化Casbin在大规模规则集上(百万以上)的策略评估性能
    • 跟踪Casbin-Go最新特性并移植到jCasbin,如实现WatcherEx:casbin#943
    • 维护完善jCasbin的Java特有生态,如实现Play框架中间件:jcasbin#104
    • 解决Casbin-Go和jCasbin以及相关仓库中的issues:Casbin-Go & jCasbin
  8. 项目技术要求:
    • 熟悉Golang或Java语言
    • 熟悉Git、GitHub相关操作
  9. 项目成果仓库:

Casbin核心权限库改进(Go + .NET)

  1. 项目名称:Casbin(Go + .NET)
  2. 项目主导师:汤贤赫 (Sagilio), sagilio (AT) outlook.com
  3. 项目描述:Casbin采用独特的PERM模型语法(model)来实现强大、灵活的访问控制。Casbin Golang版本作为Casbin的第一个语言实现,拥有最多的用户以及最先进的feature。我们希望在Casbin Golang上: 1)增强Casbin语法的表达能力,满足用户多样化的策略制定需求; 2)优化Casbin在大规模规则集上(百万以上)的策略评估性能。 Casbin.NET是Casbin的.NET版本,它需要及时跟踪Golang Casbin主库的最新feature并移植到.NET版本中来。并维护.NET特有的生态
  4. 项目难度:进阶
  5. 涉及技术领域标签:Authorization
  6. 编程语言标签:Go, C#(.NET)
  7. 项目产出要求:
  8. 项目技术要求:
    • 熟悉Golang或C#语言
    • 熟悉Git、GitHub相关操作
  9. 项目成果仓库:

Casbin/Casdoor 文档优化

  1. 项目标题:Casbin/Casdoor 文档优化
  2. 项目主导师:刘子轩 (nodece), nodeces (AT) gmail.com
  3. 项目描述:Casbin和Casdoor是Casbin社区的出色项目,他们的官网和文档都是使用Docusaurus框架进行搭建,文档翻译是使用CrowdIn在线翻译平台进行众包翻译,随着项目的不断发展,文档与代码会存在一定的落差。文档是软件的重要组成部分,改进文档提升用户体验是不可或缺的部分。
  4. 项目难度:基础
  5. 涉及技术领域标签:Authorization, Authentication
  6. 编程语言标签:JavaScript, Golang
  7. 项目产出要求:
    • 同步Casbin以支持的语言的management API和rabc API到Casbin文档中的API模块
    • 改进Casdoor文档整体体验,梳理Casdoor各个功能,对文档内容和布局进行优化
    • 对Casbin文档进行英译汉,当前进度86%,目标进度100%
    • 对Casdoor文档进行英译汉,当前进度80%,目标进度100%
    • (有时)撰写、编辑Casbin社区推广(如Casbin官方微信公众号)文章
  8. 项目技术要求:
    • 热爱并有能力撰写技术博客、文章
    • 了解Git、GitHub相关操作
    • 了解Casbin的工作原理
    • 了解Casdoor的工作原理
  9. 项目成果仓库:

Casdoor单点登录系统、Casnode社区系统(前端React + JS,后端Go)

  1. 项目名称:Casdoor单点登录系统、Casnode社区系统(前端React + JS,后端Go)
  2. 项目主导师:罗杨 (hsluoyz), hsluoyz (AT) gmail.com
  3. 项目描述:Casdoor是一套基于基于OAuth 2.0 / OIDC协议的统一身份认证(单点登录)系统。其支持多种第三方登录方式,如QQ、微信、Google, GitHub等。Casdoor具有Web管理界面,可以用来管理用户、角色、权限(基于Casbin)。Casbin社区目前采用QQ群(中文),Gitter(英文)进行社区交流,交流渠道比较有限。我们打算开发一个同时面向Casbin开发者和用户的官方论坛:casnode(https://github.com/casbin/casnode )。该论坛开源,因此也欢迎其他开源社区使用。
  4. 项目难度:进阶
  5. 涉及技术领域标签:Micro Service
  6. 编程语言标签:Go, JavaScript
  7. 项目产出要求:
  8. 项目技术要求:
    • 熟悉React、Javascript语言(前端)
    • 熟悉Golang语言(后端)
    • 熟悉Git、GitHub相关操作
  9. 项目成果仓库:

Python/PHP-Casbin 在分布式系统和主流框架下的应用扩展开发(Python/PHP)

  1. 项目名称:Python/PHP-Casbin 生态完善(Python/PHP)
  2. 项目主导师:李强 (Jon Lee), leeqvip (AT) gmail.com
  3. 项目描述:Casbin 是一个强大的、高效的开源访问控制框架,对主流语言都有相关实现,包括Python、PHP版本的Casbin。Casbin在业界具有广泛影响力,社区活跃。目前,目前PyCasbin/PHP-Casbin主库主要功能虽然相对完善和稳定,但仍然需要不断迭代演进,特别是对Python和PHP生态内各种框架、插件的集成,代码质量和性能还有调优的可能,所以我们希望对主库及其周边生态系统进行完善和优化,以增强Casbin在脚本语言Python和PHP领域的应用场景,提高外部系统接入Casbin效率和成本,进而扩大Casbin在Python和PHP领域的生态圈,使其能更好更快的发展。
  4. 项目难度:进阶
  5. 涉及技术领域标签:Authorization、API
  6. 编程语言标签:Python,PHP,Go
  7. 项目产出要求:
    • 对分布式存储系统ETCD的适配etcd-adapter
    • 完善Py/PHP-Casbin的对Redis(redis-adapter)适配器
    • 对权限决策enforce()的过程做基准测试、弱点分析、性能优化
    • 增加addPermissionsForUser() API.
    • 增加对g方法的缓存, 参考: https://github.com/casbin/casbin/blob/master/util/builtin_operators.go#L333.
    • 实现和完善WatcherEx
    • 引入Casbin核心引擎Casbin Core Engine (Golang)中的新功能
    • 对主流框架的支持增强,例如:如果在Python的Django的扩展中, 需要引入Django的Middleware, Caching, Logging, 集成Django的认证系统(authentication system);而PHP主流框架Laravel中已有Laravel-Authz,但需要引入Laravel的Gates
    • 解决PyCasbinPHP-Casbin主库以及相关仓库中的issues
  8. 项目技术要求:
    • 熟悉Python、PHP任意一种语言即可
    • 熟悉Git、GitHub相关操作
  9. 项目成果仓库:

SwiftCasbin 开发(Swift)或Casdoor单点登录系统大前端支持

  1. 项目名称:SwiftCasbin 开发(Swift)SwiftCasbin 开发(Swift)或Casdoor单点登录系统大前端支持。
  2. 项目主导师:孟祥文 (xiaobeiswift) cit117 (AT) me.com
  3. 项目描述:开发Swift版本的Casbin,支持iOS App、Swift服务器端应用等生态。Casdoor单点登录系统大前端应用 ios、安卓、flutter、uinapp、小程序等sdk的开发
  4. 项目难度:进阶
  5. 涉及技术领域标签:Authorization,SDK,Casdoor,App
  6. 编程语言标签:swift,dart,java,kotlin,js
  7. 项目产出要求:
    • 实现 Casbin 的 Swift 版本
    • 实现纯数据库驱动的 adapter: PostgresQL, Mysql, Microsoft SQL Server, Oracle, SQLite, IBM Db2.
    • 解决 SwiftCasbin 主仓库&相关仓库中的 issues:https://github.com/casbin/SwiftCasbin/issues
    • 设计前端友好的casdoor api,完成安卓,ios,flutter,uniapp,小程序的sdk
    • 每个sdk演示app的开发及文档完善。
  8. 项目技术要求:
    • 熟悉 Swift/Dart/Java/Kotlin/js 语言的一种
    • 熟悉 iOS/andriod/flutter一种原生开发或小程序/uniapp框架的使用
    • 了解Oauth2流程
    • 熟悉 Git、GitHub 相关操作
  9. 项目成果仓库:

所有可选项目详见:https://github.com/casbin/Summer2022#可选项目列表

候选人要求

工作职责:

  • 每周与项目导师进行线上讨论,完成项目规定的开发任务。项目导师由开源项目创始人或其他核心成员担任;
  • 积极参与开源社区的建设,参与代码提交、解决Issue、审核PR等日常工作;
  • 配合完成官方要求的材料提交等事项,包括项目申请书撰写、社区反馈任务完成度追踪等。

职位要求:

  • 本科、硕士或博士在读(已毕业、工作的无法参加);
  • 对开源软件、开源社区感兴趣;
  • 熟悉一种或多种编程语言,有较强的工程能力,代码格式清晰规范,善于团队协作;
  • 有一定英文读写能力,能够熟练运用英语在GitHub进行开发、协作;
  • 较强的沟通能力和逻辑表达能力。

具有以下条件者优先:

  • 熟悉计算机网络、网络安全,有相关项目经验;
  • 熟悉Go, Rust等语言、分布式系统、微服务架构,有相关项目经验;
  • 在GitHub较为活跃,有自己的开源项目,或参与过知名开源项目;
  • 可以在项目结束后继续长期参与开源社区的开发、建设或维护。

投递要求

申请学生需要同时完成以下“联系社区”和“官网投递”两个环节:

1. 联系社区(即日起至2022年6月4日)

  1. 发送【中文简历PDF】至Casbin社区官方邮箱:admin (AT) casbin.org
  2. 加入《Casbin访问控制社区群》(QQ大群):546057381
  3. 加入《Casbin明日之星预选生-Talent 2022-群》(QQ小群):540163681 ,联系导师,与导师沟通项目细节和方案,完善项目申请书
  4. 选择技术写作题目“Casbin文档中文翻译 + 官网优化”的同学,还需要加入《Casbin文档题目申请》(QQ文档群):714309545,并仔细阅读群公告,联系导师沟通项目细节

2. 官网投递(2022年5月21日至2022年6月4日)

详见:https://summer-ospp.ac.cn/help/