Generate your license
2015-03-31Introduce licen
Licen 是什么呢?简而言之,就是生成 license 的。它的 github 地址在这里: licen
我们设想一下,如果你有在 github 上一直写着开源项目,那么在最开始的时候,肯定要为你的项目选一个 license, 这也是推荐的做法。我们假设你选了 MIT,那么 license 的内容呢?在没有写这个项目之前,我是用 lice 的, 它也是生成 license 的,它与 licen 的关系,我将在下面提及到。当然,在还没用 lice 之前,我是手动拷贝粘帖的。 (什么,你直接在新建 repo 的时候就勾上了...... QAO)
Brief usage
生成 license:
$ licen LICENSE_NAME
生成 license header:
$ licen LICENSE_HEADER_NAME
Licen and lice
很明显,从名字就可以看出来,它们之间有关系。简而言之的话,licen 是我重写 lice 后的新的版本。 也许你可能要问了,为何有了 lice,你还要造轮子呢?我来说说我的想法吧:
- Template engine
licen 用了 jianja2 这个 template engine,使得处理 license template 的过程更加简单。 而 lice 是手动处理的。
- Command line arguments parser
licen 使用了 docopt,使得命令行处理更加简单,lice 使用了 argparse,相对繁琐一点。
- Boilerplate in the license template
Boilerplate 是什么呢?举个例子吧, gpl-2.0 license 是很长的,在文本的结尾处有个短小一点的 license 声明,你可以把它加到你代码的头部,boilerplate 就是那个。lice 在生成 license 的时候中它把那个部分也用参数替换调了, 而 licen 根据 choosealicense 的说明(见右侧 How to apply this license),还是保留那部分, 即原封不动地把 license template 拷贝一下。
- Pep8
Licen 是 pep8 检查过的,而 lice 没有,我提的 PR 貌似也还没有接受 Orz
- license
说了那么多,好像 lice 很弱一样的,其实不是这样的 =。= 我只是对比一下啦。接下来说说licen 不足的地方。 Licen 所有的 license template 都是从 choosealicense 上得到的,相比 lice 而言, licen 的 license template 要少。
- license header
Lice 支持生成头部文件,以注释的方式。Licen 目前还没有支持。
The real reason
说了那么多,其实 licen 不仅仅是对 lice 的一个重新实现和优化。它设计的时候就有很多不足之处。一个很明显就是, 它的 license template 是自带的,这意味着用户是受着我的拘束的,如果某个 license 没有,他们只能向我提出要求, 而不能自己比较自由地添加(强行要也行。。。)。所谓“机制,而非策略”,是我想做的。在这方面, cookiecutter 是我努力的目标。理想情况下,我只提供如何生成的方法,一个核心,但是你要给它投食什么,你要什么样的 template, 什么样的 license,都是由用户自己决定。其实我连名字都想好了,它就是(当当当,自带背景音乐): YouTemplateMe. 名字听着好像十分厉害的样子,虽然我还没有实际动手填 =。= 所以 licen 其实是我想用 jinja2 练练手什么的, 为 YouTemplateMe 探探路的 _(:3Z