关于语言绑定和重新启动Guile-GnuTLS

这个Guile公司的绑定GnuTLS公司自2007年春季以来一直是GnuTLS的一部分,当时Ludovic Courtès贡献了它在一些之后初步讨论。我一直在考虑回去做GnuTLS编码最近的GnuTLS会议其中一个主题是Guile绑定。它似乎是一个相当独立的项目,值得学习。当这项工作被包括在内时,重新阅读旧的线程是很有趣的:其中提出的一些关注点现在有跟踪记录需要评估。我认为,现在每种语言绑定引入一个新项目的成本小于维护语言的成本绑定作为核心项目的一部分。我相信在过去的15年里,成本效益比发生了变化:引入一个新项目过去会带来巨大的成本,但现在情况已经不同了,因为包装的工具和工艺已经得到了改进。我在Java、C#和Emacs Lisp绑定方面也有类似的经验GNU图书馆此外,集中维护它们会减慢更新的速度。安德烈亚斯·梅茨勒指出到类似的Russ Allbery得出的结论.

有很多方法可以将一个项目分为两个项目;仅仅将文件复制到新的git存储库中是最简单的,也是我最初的计划。然而Ludo提到git-filter-branch在一封电子邮件中,我觉得保留一些相关文件的所有git历史记录的想法值得追求git-filter-repo过滤器这似乎是推荐的方法,通过试验,我找到了一种方法,可以将GnuTLS repo过滤到Guile-GnuTLS可以基于的小git存储库中。如果您想复制内容,我使用的命令如下。

$git克隆网址:https://gitlab.com/gnutls/gnutls.gitguile-gnutls公司$cd guile gnutls美元/$git结账f5dcbdb46df52458e3756193c2a23bf558a3ecfd$git-filter-repo--路径guile/--路径m4/guile.m4--路径doc/gnutls-buile.texi--路径doc/extract-guilec-doc.scm--路径doc/cha-copying.texi--路径doc/fdl-1.3.texi

例如,我反复思考是否要包含一些文件,这些文件在新的存储库中命名相同,但几乎没有类似的行配置.ac,生成文件.am更不用说了自述文件新闻。起初我认为保留进入新项目的所有线路的历史会很好,但这是一个主观判断。让我想到一个更简单的方法的是,对于新的存储库来说,贡献者历史记录和属性会非常奇怪:Guile-GnuTLS是否应该将数千次提交的工作归因于configure.ac,而这与Guile无关?应该提到写这篇文章的人是Guile-GnuTLS的贡献者吗?我认为不是。

下一步是获得合理的GitLab CI/CD管道以确保项目建立在免费GNU/Linux发行版喜欢特里斯克尔PureOS(纯操作系统)以及常见的非自由分布,如Debian公司费多拉覆盖基于dpkg和rpm的分发。我包含的构建基于阿尔卑斯山ArchLinux此外,因为它们往往会引发其他可移植性问题。我希望有GNU吉他docker图像也可用于在该平台上进行简单测试。这个GitLab CI/CD规则对于这样的项目来说相当简单。

为了把事情弄清楚,我把结果标记为第3.7.9版并发布了Guile-GnuTLS的GitLab发布页面其中包括在我的笔记本电脑上手动上传的OpenPGP签名源tarball。这些tarball的URL不太好用,自动发现新版本似乎不可靠,但我不知道有更好的方法。

为了完成这个项目,我提出了一个GnuTLS合并请求从GnuTLS核心中删除所有与Guile相关的部件。

再次做一些与GnuTLS相关的工作感觉很好,这是很久以前的事了,所以感谢您给我这个机会。想法或评论?快乐黑客!