开源程序注意事项

本文章内的内容来自开源代码预处理,如需要看完整版本,请移步。

1. 显式声明(版权持有人,年份,许可证类型),比如:

/* Copyright 1992 Karl Berry
   Copyright 2007 TeX Users Group
   Copyright 2014 CXXXX XX

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
   02110-1301 USA.  */

2. 说明文档

可以使纯文本,也可以是Markdown,不建议直接上DVI/PDF之类的二进制文件,通常的说明文档涵盖:README(自述文件,如果比较多,可以写个扩展名多分出来几个,比如README.coding[代码风格描述]),INSTALL(安装流程),ChangeLog(变更日志)。
开源的程序和库,一定要给其他的开发者提供足够的信息,比如使用的语言版本库版本编译器版本构建系统版本。有没有注释其实也无所谓,对于三四万行的库,没有注释对于部分程序员还是可以接受的(比如我会用gtags和htags生成html来读,跳来跳去虽然有些麻烦但是还好。从main开始读)。对于构建系统,使用autotools,bakefile,CMake或者Scons的,一定要给其他开发者提供足够的说明,当然,对于非Unix平台的程序,有些也是提供.sln文件的。
3. 对于使用GPL的程序和库,在提供下载的地方一定要把源码和可执行文件放在一起供用户下载,源码一般打包成.tar.gz/.tar.xz,推荐后者,压缩比比较高。这在某些许可证授权下的程序里面是很重要的。下载的地点最好是个不容易变化的地址,最好不要放在网盘里面。
4. 对于代码的整理,一是文件名要有一定含义,不能prog0.c这样的编号,如果你非要这种编号的话,最好在源文件开头的时候说明到底是干嘛的,一行都可以。代码的缩进风格,这是个人习惯,但是也有相关的工具可以使用,比如GNU项目的indent工具。至于变量、函数、结构体命名的习惯,随便找一个coding standard来读即可。尽量不要混用不同的代码风格,比如把下划线命名和Camel Case混在一起,这样的代码会让人抓狂。一行代码的最长长度最好不超过78个字(不过此条对于部分C++项目失效)。还有一点值得注意:别把密码账号信用卡开房日期什么的写到代码里面。除非你删掉代码仓库,否则有你傻X的一天。
5. 文档系统,可以以单独的文档出现,比如用LaTeX/DocBook等写个比较系统的文档,这类文档需要作者花费一定的时间,而这类文档也是最好懂的。其次使用Doxygen之类的将注释抽取出来形成文档,这种文档的可读性还是有一些的,前提是你注释功夫好。

首先你要选择你准备采用的发布协议。例如 gpl 啊 bsd 啊 apache 啊 mit 啊等等。然后,你可以参考该协议中给你的建议。一般而言协议中会建议你在每个源文件头都加上版权信息,这个信息对于每个不同的协议不同。你可以打开一个对应协议的开源项目,查看里面的代码头,一般这个头是协议的简化版。把每个文件都加上版权信息,然后在你的项目的主目录中存放你使用的协议的「完整全文」,这个文件一般可以取名为 COPYING ,当然你也可以取名为用户可以理解的任何名字。源代码仓库中包含版权协议的完整全文,并且每个源代码头都包含版权声明简化版。然后这个代码要「发布」出去(发布的方式与场所你可以任意选择)。这就满足了开源的基本要素。就开源本身来说,以某个开源的协议发布,就算作开源。至于其他的事情都是「可选」的,你做了更多,可以更好的宣传你的项目,但并不是强制的。

开源程序注意事项

时间: 2024-10-28 13:09:12

开源程序注意事项的相关文章

服务器程序注意事项

1. 在服务器程序时,很容易出现内存泄露.以及内存溢出等问题. 出现这些问题往往会导致程序无法正常运行,比如异常退出.阻塞.然而,在发生这些错误的时候往往会令人很困惑,因为这些错误很难被发现.解决这些问题往往会耗费大量的时间.因而保持良好的代码习惯对一个程序的健壮性具有重要的意义,也是一个优秀的程序员所应该具备的素质. 2. 服务端程序往往是部署在Unix等服务器之上的,并且需要长久的运行. 在这种情况下,很多时候对程序的调试都是比较不方便的.所以,保留日志等将为我们的后期的Debug提供很大的

Unity3D开发Windows Store应用程序 注意事项

原地址:http://blog.csdn.net/jbjwpzyl3611421/article/details/12704491 针对最近在移植window store项目中遇到的问题,我整理了官方说明, 在此和各位开发者分享,避免在移植过程中走弯路!     Platform status 平台现状   Currently if you want to build a Windows Store apps player, you have to do it on Windows 8, thi

Joomla软件功能介绍与开源程序大比拼Joomla,wordpress,Drupal哪个好?

Joomla 软件功能介绍:    Joomla!是一套在国外相当知名的内容管理系统 (Content Management System, CMS),它属于Portal(企业入口网站)类型,顾名思义,就是比较适合作为商业类型的网站程序.一般人对这类型的内容管理系统可能会有以下的别名来称呼: ■ 架站程序(或软件) ■ 快速架站程序(或软件) ■ 整站程序 Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统,可以在Linux. Windows.MacOSX等各种不同的平台上执行.

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别 分类: 开放项目2012-07-23 17:28 6712人阅读 评论(0) 收藏 举报 tiffimagecompression引擎pascalcharacter --------------------------------------------------低调的分割线--------------------------------------------------- Linux下有两个重要的编程准则

利用SVN钩子同步程序注意事项

暂时记下,此文章内容稍后验证. 前言:其实利用SVN实时同步到WEB服务器即时展现出来的文章已经到处都是,但是我在做的时候 还是有不少的小问题,很多文章也没有提出来过,还有同步也是,我还是记录下自己做过的尤其是一些细节,时间一长又会忘掉了. 同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上. 知识点:1.SVN的ho

十大建站开源程序

目前互联网上有无数个开源的建站程序可供大家选择使用,对现在的站长来说真的是容易多了,10年前我作网站的时候,一个小聊天程序也要自己一句一句的写,看看现在的开源程序,层出不穷.太多了也就不知道选哪个好了,很多初学者买域名建网站,可是不知道如何下手,希望这篇文章能给您的网站建设开个好头,这也就是我Anki写这篇文章的目的.  1.PhpBB - 论坛讨论板 phpBB具有友好的用户界面,使用了当今网 络上流行的php语言工作,可以搭配MySQL,MS- SQL,PostgreSQL, 和Access

《开源程序能给作者带来什么》阅读感悟

       最近在网上看到一个关于开源软件能够给作者带来什么的帖子,作者是Afinal开源框架的的作者,文字间透露出一个程序员的实在和洒脱,给我这个一直想写一个自己的开源程序的程序员来说多了一些启发和鼓舞.希望想在程序开发领域中有一番作为的我们能够像作者一样,脚踏实地,懂的分享.因为分享的越多,就得到的越多,这是亘古不变的真理.呵呵,提的有点高了,还是一起分享下原作吧~~ 以下是原文: 最近由于工作职业的转变(现在创业了,做家具家居O2O),android快速开发框架afinal更新较少了,前

基于.NET平台常用的框架和开源程序整理

自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中 也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库. 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的KV数据库. 它的出现很大程度补偿了Me

WinServer2008R2 部署.NET4.0程序 注意事项

部署注意事项:   1.IIS应用程序池 集成模式   2.在web.config中的system.webServer下,添加 <modules runAllManagedModulesForAllRequests="true" />   3.cmd中注册命令行 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i    4.应用程序池的高级设置>启用32位应用程序设置为True     应用程序