ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Secretive 开源项目贡献指南:安全审计、零依赖与本地化协作的完整规范

Secretive 开源项目贡献指南:安全审计、零依赖与本地化协作的完整规范 桌面应用应用安全密码学【免费下载链接】secretiveProtect your SSH keys with your Macs Secure Enclave项目地址https://gitcode.com/gh_mirrors/se/secretive点击查看免费下载Secretive 是一款将 SSH 密钥保护在 Mac 芯片 Secure Enclave安全隔区中的 macOS 应用。本文围绕仓库根目录下的 CONTRIBUTING.md 展开系统梳理该项目面向贡献者的完整规范从安全审计底线的「零第三方依赖」「拒绝 AI 生成代码」两条硬性红线到贡献流程、代码行为准则、本地化翻译路径以及项目高度自主Opinionated的维护策略。读完本文你将掌握向此类安全敏感型开源项目提交高质量、可被接受贡献的完整方法论并理解其安全设计如何在 SECURITY.md 与源码结构中得到呼应。一、贡献前的总原则把安全与可审计性放在第一位CONTRIBUTING.md 开篇就明确了 Secretive 的核心立场安全Security对该项目来说是一切贡献的准入门槛。任何损害项目安全性或可审计性的贡献都会被拒绝rejected。这不是一句空话而是由项目的根本定位决定的——Secretive 的设计初衷就是让用户在放心使用它管理 SSH 私钥的同时有能力对源码进行完整审计。这一点与 SECURITY.md 中阐述的安全原则一脉相承Secretive Cant Read The Key Material难以泄露连 Secretive 自己都读不到的密钥应用只操作硬件背书hardware-backed的密钥私钥数据即便应用自身也无法访问这从根上降低了因代码缺陷导致密钥泄露的风险简洁与可审计Simplicity and Auditability项目拒绝扩张到可能有的每一个功能凡是会显著膨胀代码库、损害可审计性的功能即使很酷也不会实现零依赖Dependencies为了排除供应链攻击supply chain attacks应用本体不依赖任何第三方代码仅构建过程存在有限例外。从仓库结构可以印证这一点根目录的 Package.swift 中dependencies: []为空数组Sources/Packages/Package.swift 同样没有任何第三方依赖声明所有功能均由SecretKit、SecureEnclaveSecretKit、SmartCardSecretKit、SSHProtocolKit、CertificateKit、SecretAgentKit、XPCWrappers等自研 Swift 包实现。贡献者提交任何引入新依赖的代码都将直接触犯这条红线。二、两条硬性红线零第三方依赖与拒绝 AI/LLM 生成代码2.1 零第三方依赖DependenciesCONTRIBUTING.md 明确指出Secretive 被设计为易于被考虑使用它的人审计easily auditable因此项目没有任何第三方依赖no third party dependencies任何引入新依赖的贡献都会被拒绝。这条约束对贡献者的实际影响是提交新功能时不能用现成的第三方库快速实现必须自行实现所需逻辑审视代码时要额外关注是否顺手引入了框架或包管理依赖从源码结构看所有能力都以独立 Swift Package 形式组织在 Sources/Packages/Sources 下各包之间通过内部依赖如SecretKit互相引用而非外部库。这种宁可自研也不引依赖的取舍与 SECURITY.md 中排除供应链攻击、保证代码库可审计的目标完全一致。2.2 AI/LLM 生成代码政策与依赖政策出于同样的安全与审计原因CONTRIBUTING.md 规定任何使用 AI 或 LLM 工具生成的代码都不会被接受any code generated with AI or LLM tools will not be accepted。这意味着在向 Secretive 提交 Pull Request 之前务必确认提交的代码确实由你本人编写而非由 AI 工具生成如果借助过 AI 辅助工具包括代码补全、自动生成器等需要重写或人工审查到非生成状态该文档原文表述为任何 AI/LLM 工具生成的代码均不接受这一点与零依赖政策共同构成了该项目在可审计性上的双保险人工编写的零依赖代码使得安全审计者可以在有限代码量内完整追踪每一个逻辑分支。三、行为准则与社区协作基础CONTRIBUTING.md 要求所有贡献者必须遵守仓库中的 CODE_OF_CONDUCT.md。该文件采用业界通用的Contributor Covenant 1.4 版核心内容包括承诺Our Pledge为所有参与者营造无骚扰、开放友好的社区环境不论年龄、体型、族裔、性别认同、经验水平、教育背景、国籍、种族、宗教或性取向正向行为示例使用包容性语言、尊重不同观点与经验、优雅接受建设性批评、以社区利益为重、对成员展现同理心不可接受行为性化语言/图像与不受欢迎的性关注、挑衅侮辱与人身/政治攻击、公开或私下骚扰、未经许可发布他人隐私信息以及其他在专业场合下不恰当的行为维护者职责澄清可接受行为的标准并对违规行为采取适当且公正的纠正措施包括删除、编辑、拒绝不合规的评论/提交/wiki 编辑/Issue甚至临时或永久封禁贡献者适用范围既适用于项目空间内也适用于个人代表项目或社区时如使用官方邮箱、官方社交媒体账号发帖等的公共空间执行机制违规行为可向项目团队邮箱举报所有投诉都会被审查并调查团队有义务对举报人身份保密。四、本地化Localization翻译贡献的入口与流程如果你希望贡献翻译CONTRIBUTING.md 指引你前往 LOCALIZING.md 查看入门指南。LOCALIZING.md 详细说明了翻译协作的两种方式Crowdin 在线翻译推荐Secretive 使用 Crowdin 平台进行本地化打开 Crowdin 项目页面选择你的语言即可直接翻译这是最便捷的方式手动提交 Pull RequestCrowdin 之外维护者也接受直接以 PR 形式提交的翻译。仓库中对应本地化基础设施的体现所有本地化字符串集中维护在 Sources/Packages/Resources/Localizable.xcstrings这是一个 Swift String Catalog 文件以en为源语言sourceLanguage : en包含大量语言的本地化条目根目录 Package.swift 与 Sources/Packages/Package.swift 均声明defaultLocalization: en并通过localization资源项将Localizable.xcstrings打包进各个 targetLOCALIZING.md 还列出了已有的多语言贡献者致谢名单涵盖法语、中文、葡萄牙语巴西、德语、意大利语、芬兰语、韩语、日语、加泰罗尼亚语、波兰语、俄语等并特别致谢 Crowdin 对开源项目的支持。翻译贡献者在动手前如果对某些术语有歧义或困惑可在仓库中开 Issue 提问维护者乐于澄清。五、署名Credits让实质性贡献被记录CONTRIBUTING.md 要求如果你对应用做出了实质性贡献material contribution请把自己添加到 credits 文件末尾。这一署名机制体现了项目对贡献的重视——不过需要注意该文件Sources/Secretive/Credits.rtf位于主仓库maxgoedjen/secretive中当前镜像仓库gh_mirrors/se/secretive的 Sources 目录下未包含该文件因此以主仓库的实际路径为准。提交 PR 时遵循文档要求在 credits 文件末尾追加自己的署名即可。六、Collaborator 状态为什么贡献者拿不到协作者权限CONTRIBUTING.md 明确声明维护者不会向任何贡献者授予仓库的 collaborator 访问权限。原因是 GitHub 的 collaborator 可以访问仓库内 Actions 使用的加密签名凭据encrypted secrets出于安全考虑一律不授予。这对贡献者的实际影响是所有贡献都通过Fork Pull Request流程提交不要期待先拿到 collaborator 权限再直接推分支的路径这再次印证了该项目在安全优先上的极致态度——连协作者权限这种常见的协作便利都被安全考量所否决。七、Secretive 是一个高度自主Opinionated的项目CONTRIBUTING.md 直言Secretive is OpinionatedSecretive 是有主见的。维护者开源该项目的目的是让其他人能够使用和审计它——人们可以放心因为源码是公开的他们能亲眼看到它在做什么。维护者对项目应有的样貌有非常明确的想法可能会婉拒与其愿景不符的贡献respectfully decline。对贡献者的实战建议先提案后实现如果你希望在实现之前先提议一个变更可以在 GitHub 上打开一个带有proposed标签的 IssueOpen an Issue with the proposed tag与维护者对齐方向后再动手接受被婉拒即使贡献技术正确若与项目愿景不符也可能被礼貌拒绝——这是该项目的既定策略并非针对个人小步验证在实现大功能前先通过 Issue 确认方向是否符合项目简洁、可审计的核心愿景。八、从贡献规范到源码实践在镜像仓库中验证与学习虽然本文以 CONTRIBUTING.md 为主体但贡献者在提交代码前可以从当前仓库源码中提前熟悉项目结构与构建约定确保贡献与项目风格一致构建配置仓库使用 configure_team_id.sh 脚本生成Sources/Config/OpenSource.xcconfig写入SECRETIVE_BASE_BUNDLE_ID_OSS与SECRETIVE_DEVELOPMENT_TEAM_OSS两个构建变量Sources/Config/Config.xcconfig 则通过#include? OpenSource.xcconfig引入该文件并为默认值com.maxgoedjen.Secretive、Z72PRUAWF6提供了 fallback。注意 README.md 的提醒Keychain 只允许密钥的创建者具体到 bundle ID读取密钥自行从源码构建时必须保持一致使用的 bundle ID否则 Keychain 无法定位你的密钥包结构功能全部以内置 Swift Package 形式组织根目录 Package.swift面向 Xcode 依赖场景的瘦身版与 Sources/Packages/Package.swift完整版并存贡献代码应遵循各包内部既有的命名与分层模式如SecretKit定义核心Secret/SecretStore协议SecureEnclaveSecretKit、SmartCardSecretKit提供具体实现SSHProtocolKit负责协议编解码测试约定各包均配有同名测试 target如SecretKitTests、SSHProtocolKitTests、SecretAgentKitTests、BriefTests完整版包配置还启用了swiftLanguageMode(.v6)、treatAllWarnings(as: .error)与strictMemorySafety()——提交的代码需要能通过这套严格编译设置。九、总结面向安全敏感型开源项目的贡献清单综合 CONTRIBUTING.md 全文向 Secretive 提交贡献的完整检查清单如下检查项要求依据安全性不损害项目的安全性与可审计性否则直接拒绝CONTRIBUTING.md「Security」依赖零第三方依赖禁止引入新依赖CONTRIBUTING.md、Package.swift代码来源不接受 AI/LLM 生成的代码CONTRIBUTING.md「AI/LLM Policy」行为准则遵守 CODE_OF_CONDUCT.mdCONTRIBUTING.md「Code of Conduct」本地化按 LOCALIZING.md 指引走 Crowdin 或 PRCONTRIBUTING.md「Localization」署名实质性贡献者追加到 credits 文件末尾CONTRIBUTING.md「Credits」协作方式无 collaborator 权限走 Fork PRCONTRIBUTING.md「Collaborator Status」愿景对齐大改动先以proposed标签开 Issue 对齐方向CONTRIBUTING.md「Secretive is Opinionated」对于安全敏感型开源项目贡献的门槛从来不只是代码能跑。Secretive 用一份简洁的贡献指南将可审计性、零依赖、人工代码、愿景对齐层层设卡——这正是它在安全领域赢得信任的方式。理解了这些规则你的贡献才能真正进入这个生态。赞分享桌面应用应用安全密码学【免费下载链接】secretiveProtect your SSH keys with your Macs Secure Enclave项目地址https://gitcode.com/gh_mirrors/se/secretive点击查看免费下载相关推荐awesome-decentralized-llm完全指南10个去中心化AI模型必备资源awesome decentralized llm完全指南10个去中心化AI模型必备资源 awesome decentralized llm是一个专注于通过函Boss-KeyWindows隐私守护神器一键隐藏窗口的终极解决方案Boss KeyWindows隐私守护神器一键隐藏窗口的终极解决方案 你是否曾经历过这样的尴尬时刻老板突然出现在身后而你的屏幕上还开着与工作无关的聊天窗桌面应用从零参与开源docling贡献全指南与社区协作规范从零参与开源docling贡献全指南与社区协作规范 加入开源社区是提升技能、拓展人脉的绝佳方式而docling作为一款专注于文档处理的工具正为生成式AI应AI 应用计算机视觉OCR上一篇【亲测免费】 gpstest: 一个开源的GPS测试应用下一篇如何用MyExpenses轻松管理个人财务完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表