什么是自由软件?GNU工程

“自由软件”尊重用户的自由,并且尊重整个社区。粗略来讲,一个软件如果是自由软件,这意味着用户可以自由地运行,拷贝,分发,学习,修改并改进该软件。因此,“自由软件”是关乎自由的问题,与价格无关。要理解这个概念,你要按照FreeSoftware中的“Free”是指“自由言论(freespeech)”中的自由,而非“免费午餐(freelunch)”的免费这一意项。为避免歧义,在使用英文时,我们也会借用法语或西班牙语的“LibreSoftware”来指自由软件,这样可以明确表示我们说的不是免费。

一个软件只有提供了以上所有的自由给它的用户,才可以被成为自由软件。否则,它就是非自由的。尽管我们也可以比较非自由软件为其用户提供的自由度,但是我们认为,无论如何,非自由软件本身是不道德的。

无论在哪种情况下,只有所有用户使用的代码都满足了这四项基本自由,该程序才能被视作自由软件。例如,有两个程序,甲程序运行的时候会自动调用乙程序。发布甲程序意味着用户必须使用到乙程序,那么必须甲乙两个程序都是自由的,甲程序才是自由的。如果通过修改甲程序,使其不再依赖乙程序,那么仅仅以自由软件的形式发布甲程序即可。

“自由软件”不表示“非商业化”。与之相反,自由软件必须可以商用、可以商业开发、可以商业发布。这个政策非常重要—缺乏这样的政策,自由软件将无法实现自己的目标。

我们要邀请所有人使用GNU系统,包括商业机构及其员工。这就需要允许商用。我们期待许多程序的自由替代将来可以替换掉相应的专有程序,但是如果禁止商用就无法做到这些。我们期待商业产品包含有GNU系统的软件,并且成为商业发布定价的一部分。自由软件的商业开发不再那么不寻常;这些自由的商业软件非常重要。付费的、专业的自由软件技术支持填补了重要的需求空白。

因此,把商业使用、商业开发或商业发布排除在外会羁绊自由软件社区并阻碍其走向成功之路。我们一定要明确使用带有这种限制的许可证发布的软件不是自由软件。

假如获得自由软件拷贝的(潜在)用户遵守了先前发布的自由软件的许可证条款,那么该自由软件必须为获得软件的该(潜在)用户提供自由软件的四项基本自由。在自由方面对用户加以限制或者要求付费才能实践这些自由和不赋予用户自由没有什么两样,因此这样的程序不是自由软件。

在本文的以下部分,我们会进一步准确地解释这些自由针对各种问题会如何扩展才能使软件自由。

“自由地运行程序”(自由度0)意味着任何人或组织可以在任何(支持的)计算机系统上,出于任何目的去运行该程序,并且没有义务通知软件的开发者或任何个人或团体。此处,用户的目的是重点,而非开发者的目的。如果你是该程序的用户,那么你就可以自由地运行该程序。同理,如果你把程序发布给别人,那么此人也成了软件的用户,他也可以出于自己的任何目的运行该软件。然而,你作为软件的发布者,不可将自己的目的强加于你的用户。

“自由地运行程序”意味着没有人可以禁止或阻止用户运行该程序。这和该程序的功能特性没有关系,既不考虑该程序在特定环境下的可用性,也不考虑该程序对特定计算的有效性。

例如,如果代码随意地拒绝某些有意义的输入——或者甚至无条件地失效——这就可能使该程序不那么有用,甚至可能完全无用,但是这并不妨碍用户运行该程序的自由,因此,这和自由之零并无矛盾。如果该程序是自由的,那么其用户可以克服这些无用之处,因为自由之一和自由之三允许用户和社区修改和发表不带有随意代码的改进版本。

“按照你的意愿”可以包含、可选择地包含、“完全不包含”(如果你希望如此)。所以没有必要再有一个单独的“不运行程序的自由”。

自由度1和3(自由地修改软件;自由地发布修改后的软件)意味着用户必须有权访问程序的源代码。由此,访问源代码是成为自由软件的必要条件。混编(Obfuscated)后的“源代码”不是真正的源代码,不能被算作此处讨论的源代码。

源代码的定义是人们进行修改时首选使用的程序形式。因此,开发者开发程序的形式就是开发者眼中的源代码。

自由度1(自由地运行程序)包括自由地运行自己修改后的程序以替代原版程序。如果程序是跑在某种设备上,该设备可以运行别人修改的软件但不运行你修改的软件—这个方法叫做“tivoization”或者“锁死”,或者(用其发明者的术语)叫做“安全启动”—自由度1将被视为无法满足。该设备中的程序也将不被视为自由软件,即使它们的源代码是自由的。

对软件的修改可能是出于各种目的。某个特定的修改究竟是好是坏,这本身是个非常主观的事情。自由软件许可证不能对用户修改软件做任何限制,例如,不能仅仅因为某人觉得哪处修改不够好,就禁止用户自己做这个改动。

自由之一有一个特殊的案例就是删除程序的代码让它不执行任何动作,或者让它直接调用另外的程序。因此,自由之一包含有“删除程序的自由”。

用户可以自由地运行该程序或对程序进行修改。如果仅仅私下自己修改或运行该程序,那么你没有义务将该行为公开给任何人。如果你发布了自己修改后的程序,那么你也没有任何义务将该修改行为告知给哪个或哪些指定的人或组织。

“自由地分发软件的拷贝”意味着必须允许用户自由地发布软件的原版或用户自己的修改版。无论那个版本,用户都可以选择发布程序的二进制或可执行文件,也可以发布程序的源代码。(以可执行文件的形式发布程序可以让人方便安装,这一点对于推广自由软件也至关重要。)对于某些程序,也许无法或者不必发布二进制或可执行文件(一些编程语言的实现可能并不支持,例如某些脚本语言),但是用户必须有权利以任何方式生成二进制或可执行文件,并且发布这些生成的软件。

自由软件可以对修改版的打包或分发方式做一定的限制。这些限制不得与前面提到的四大自由相矛盾,不得直接或间接地限制用户运行,修改或发布软件。例如,某些自由软件可以要求修改版不得使用软件的原有名字发布;不能使用软件的原有商标;必须标明软件来自谁的修改等等。只要这些限制不会明显地限制用户再发布软件的修改版,那么它们就是可以接受的。既然已经对软件修改了,那么你估计也就不会在乎针对这些额外的小限制再做一点修改了。

同理,自由软件也可以要求用户“如果以这种方式发布,那么用户必须也可以从另外某一渠道获得”。比如,某个自由软件可能会要求如果发布了修改版,那么必须也要给原作者一份修改后的拷贝。(注意:此处前提是软件必须发布,用户可以私下修改软件而不发布,这样也就不必把修改版发给开发者了。)另外还有一些规则也不会与自由软件原则冲突,比如软件可以要求修改后的版本发布时需要附带相应的原版软件的代码。

有一些特例需要额外讨论:如果某软件许可证要求修改后的软件必须修改可执行文件的名字,那么必须保证软件运行的环境允许修改文件名或具备某种别名机制,否则该要求将被视作与自由软件原则相背。因为软件的可执行文件可能会被其他第三方软件调用,而文件名则是这种调用的基础。别名机制可以保证用户在遵守该要求的前提下,顺利将原版软件替换成修改版,并且不会影响依赖该软件的第三方程序。

一些政府的出口限制或贸易制裁可能会影响到软件用户在国际范围内发布软件的自由。软件开发者也许没有能力去改变这些现实,但是我们可以拒绝自我审查。自由软件的开发者不得在软件许可证中要求用户遵守哪条特定法律,因为开发者无法保证用户所在国度或地区具备该法律条款。这样,自由软件许可证就不会给用户在法律之外添加额外的违反基本自由的限制。

要落实这些自由度,就应该保证:如果用户遵守许可证上的要求,那么这些自由度就必须是长久的,不可更改的。如果软件的开发者有权利随意修改已发布软件的许可证,那么该软件也不被视为自由软件。

自由软件许可证不得要求用户额外遵守哪些非自由软件的许可证。例如,自由软件许可证不得要求用户必须遵守“所有使用的软件的许可证”。因为用户可能使用非自由软件,而要求用户遵守全部使用的软件的许可证则意味着需要遵守非自由软件许可证,这样的要求将被视作非自由的。

最后请注意,在实践中,本文中提及的各种关于自由软件的界定标准都需要仔细思考后再做出解释。在决定一个软件许可证是否是自由软件的时候,我们会仔细查看该许可证的内涵和行文是否符合本文中涉及的原则,由此决定许可证是否为自由软件许可证。如果许可证中包含了一些不合理的限制,哪怕这些限制没有在本文中提及,我们也会拒绝承认它是自由的。有时候,某个许可证可能会引起一场大讨论,甚至需要专业律师参与。这时候,我们往往需要仔细定夺之后才能给出结论。遇到这样的许可证,在做出结论之后,我们很可能会更新本文,把之前没有考虑到的因素添加进来。

如果您真的需要自己创造一个新许可证,那么我们会尽力帮助您。在我们的帮助下,我们会保证您的许可证是自由的,并且帮助您避免一些常见的问题。

现在还有另外一伙人,使用“开源”一词来表达与“自由软件”类似,但不完全相同的概念。我们更倾向于使用“自由软件”这个词。因为一旦你看到自由二字,就明白了它所要表达的意思。而“开放”却从来不意味着自由。

THE END
1.来聊聊源码学习那么什么时候我们该学习源码呢,我认为你至少已经对这个开源项目的使用已经很熟练了,并且对它的设计思想,用来解决什么问题等等都比较清楚的时候,为了进一步对它深入学习,就可以来看它的源码实现了。 怎么做 那么如何去学习源码就非常重要了,诚然学习源码是一定会花时间的,好的学习方法会大大提升学习效率,事半功倍。其实https://www.imooc.com/article/33858
2.网站源码(交流学习,共同进步)源码论坛,商业源码下载,尽在锦尚,源码论坛,商业源码下载,尽在锦尚中国商业源码论坛https://bbs.52jscn.com/forum.php?gid=100
3.破译吧源码网破译吧 - 轻、快、简的源码学习平台!这是一款对非营利性个人用户免费开放的源码学习平台,基于学习目的所有源码不得的商用,新的平台,铸就新的未来!http://m.poyiba.com/
4.在线学习平台(易学堂学习系统)源码易语言易学堂(2007年大赛三等奖)源码,易学堂(2007年大赛三等奖) 上传者:weixin_38660058时间:2020-07-19 易学堂网校系统源代码 YxtCMF在线学习系统是一个以thinkphp+bootstrap为框架进行开发的网络学习平台系统。 在线学习系统,为现代学习型组织提供了卓有成效的学习与培训方案, 能够通过在线学习和在线评估的方式轻松完https://www.iteye.com/resource/wawa129-10590801
5.学途资源学途源码资源是一个专业的网络资源分享平台,提供各种学习资源、PHP源码、Java源码、网站源码、游戏源码、模板插件、软件工具、网络教程、活动线报等,为中国站长提供一站式资源下载。https://www.cyrobot.top/
6.尚可源码商业源码 最新12月份云挖矿模式盗u|秒u源码|盗u源码 仅限用于学习和研究目的,不得将用于商业或者非法用途! 安装教程和之前的那几个版本 3 年前11388288 金融理财 11月份新版盗u秒u系统源码|授权盗u系统|盗usdt源码|usdt空投|扫码转账授权内附详细搭建教程 https://www.sk032.com/
7.在线学习平台(易学堂学习系统)源码在线学习系统资源【在线学习平台(易学堂学习系统)源码】是一个基于PHP开发的教育信息化解决方案,它提供了全面的功能,便于创建和管理在线课程。该系统的核心特点是其稳定性和无bug的运行状态,确保了用户能够流畅地进行学习和教学活动。源码的可用性使得开发者可以根据自身需求进行定制和扩展,为教育机构或个人提供了一个灵活的学习环境。 https://download.csdn.net/download/wawa129/10590801
8.免费观看Python在线学习源码及相关资源的完整指南这些平台不仅能让用户轻松拍摄和编辑,还能分享自己的创意与生活。 免费python在线观看源码4587 对于程序员而言,获取Python的学习资源至关重要。通过免费提供的Python源码,用户能够深入理解编程的基本概念和技巧。4587这一资源为学习者提供了丰富的示例和项目,帮助他们在实际操作中不断提升自己的编程能力。相关应用http://www.njhuihong.com/wenda/9601.shtml
9.各类源码大全码农集市专业分享IT编程学习资源各类源码大全C-**sm 上传5.23 MB 文件格式 zip 二维码 公交查询 画图 糗百 练手的小项目 公交查询 糗百应用 二维码 图标分享等小应用 及图形动画等点赞(0) 踩踩(0) 反馈 所需:5 积分 电信网络下载 python matplotlib绘图库应用及案例 2024-12-15 20:50:24 积分:1 乒乓球小游戏 Python 2024-12-15https://www.coder100.com/index/index/content/id/442693
10.推荐10款微信开发学习源码(收藏)小程序开发推荐10款微信开发学习源码(收藏) 上一篇《微信开发—微信开发环境搭建》我们已经完成了微信开发的准备工作,准备工作完成之后,就要开始步入正题了。一、微信公众平台的基本原理 在开始做之前,先简单介绍了微信公众平台的基本原理。 微信服务器就相当于一个转发服务器,终端(手机、pad等)发起请求至微信服务器,微信服务器https://www.php.cn/xiaochengxu-367220.html
11.精心整理75个源码类学习网站编程王网站的开站宗旨只有一个, 就是建立一个完善的程序人员学习与交流社区。 - 会员和睦共处,尊重他人意见及自由- 共同营造沟通与交流 的空间,这是义务- 成立一个「聚集地」让大家说话, 是我的心愿 我 15.Svn源码托管 (http://www./) Svn源码托管提供专业的SVN源代码托管服务、Bug跟踪管理平台,提供程序员文http://www.360doc.com/content/16/1008/02/26679739_596564234.shtml
12.源码解析学会阅读源码,让你的Android开发之路畅通无比!由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要进阶提升的伙伴可点击下方卡片免费领取《Android开发相关源码精编解析》!! 最后 阅读源码是个枯燥的过程,是件短期内低回报的事情。但所谓滴水石穿,只要持之以恒,坚持一段时间之后,所获得的最终成就便是巨大的。 https://zhuanlan.zhihu.com/p/577104457
13.idea看python源码mob64ca12f3496a的技术博客在上面的代码中,使用requests库获取API数据时,可以按住Ctrl并点击get函数,将打开get函数的源码,让你更好的了解它的实现逻辑。 第六步:理解和学习源码 在你打开Python源码后,仔细阅读代码及其注释,可以发现大多数库都包含详尽的解释。这会帮助你了解函数的功能与实现。 https://blog.51cto.com/u_16213443/12795867
14.分享一套在线学习平台的源码,源码分享吾爱破解1:主页 2:老是登录 、3:上传题库 4:文档 5:源码结构 6:免CB下载地址 链接:https://pan.https://www.52pojie.cn/thread-609576-1-1.html
15.网站搭建学习网学做网站学习网站制作学习搭建网站源码网网站搭建学习网,学做网站,学习网站制作,学习搭建网站,源码网,网站搭建教学网,专注于网站技术教学和优质源码资源分享,教你搭建各种网站,你想搭建的这里都可以有!技术教学和精品优质资源的集中营,致力于打造成为知名的网站技术教学知识分享、交流、学习的生态圈。http://www.xuezuoweb.com/
16.EDULINE在线教育培训学习系统源码EDULINE在线教育培训学习系统源码 小易 4月16日更新 关注私信 030818 资源说明: Eduline在线教育系统是成都赛新科技有限公司推出的互联网教育系统,是网络教学/在线教育最好的解决方案,可轻松帮助企业/个人搭建在线教育网站平台;Eduline在线教育系统简洁易用,定制性强,是开展互联网教学、销售、推广的最好的选择。没用域名https://www.yizhanzzw.com/28346.html
17.APP源码社区娱乐系统源码+全套APP源码+搭建教程 PS 本资源仅供给大家学习研究及参考借鉴美工之用,请勿用于商业和非法用途,均无 2023-06-031.08kVIP APP源码 交友网站系统源码+可通过功能+广告变现+社交在线聊天交友即时通讯+APP源码+视频教程 PS 本资源仅供给大家学习研究及参考借鉴美工之用,请勿用于商业和非法用途,均无https://www.zye.cc/tag/app
18.游戏源码学习平台我们提供slots源码和游戏开发服务,无论是海外游戏还是app游戏,都能满足你的需求。包含完整的前后端源码,让你轻松搭建游戏大厅和200款精彩子游戏。国际顶尖品质,确保你的游戏体验无与伦比。本商品仅供学习讨论,请在购买后自行删除,严禁用于商业用途或违反法律法规的活动。快来加入我们,开启你的游戏开发https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_4259329719767150131
19.大学生代刷网课平台学习系统源码大学生代刷网课平台学习系统源码 搭建教程: 1. 打开 Nginx.htaccess 文件,复制其中的内容,并将其设置为伪静态规则,建议使用 PHP 7.3 进行配置。 2. 在 config 文件夹中找到 config.php 文件,将其中的数据库信息改为自己的数据库信息。 3. 将根目录中的数据库文件导入到自己的数据库中。https://blog.xiaohack.org/4653.html
20.Vue2this直接获取data和methods原理解析vue.js学习源码中优秀代码和思想,投入到自己的项目中 如何学习调试 vue2 源码 通过去改源码的方式来学习代码,就是看到一段代码,你可能不是太懂它具体的作用是什么,那就尝试去改其中几行代码,猜测他们可能会造成那些影响,然后执行代码去验证你的猜想。 使用Github Workspace 克隆一份代码,定位到源码位置,如下图: 安装完https://www.jb51.net/article/270919.htm
21.学习资料分享网站源码(含数据库脚本)开发实例源码下载相关标签:网站学习 网友评论举报投诉收藏该页 同类人气实例 【Java】 微信服务号支付java源码 jonkin于 2024-09-13 上传 【Java】 2022年系统架构设计师考试真题 sdtbest于 2024-06-16 上传 【Java】 Redis核心数据结构与核心原理 sdtbest于 2024-06-16 上传 https://www.haolizi.net/example/view_203326.html
22.基于算法的漏洞检测这些差异导致算法在学习源代码级别的特征的时候容易被干扰,极有可能使得模型过于拟合训练集,当测试集或待检测的目标源代码风格与训练集不一致时模型很容易误判,也就是出现过拟合现象。因此使用源代码级别的特征进行漏洞挖掘存在一定先天劣势,为了解决这个问题我们将代码图谱中提取的源代码切片转换成字节码切片。每种语言https://xz.aliyun.com/t/9539
23.PetShop4.0源码解读1. PetShop4.0是微软基于.net 2.0开发的一个实例教程,它如同课本中的例题,指引着开发者如何通过asp.net 2.0 创建一个中小型系统。 2. 虽然现在.net已经更新到4.5版本,2.0早已远去,但是petshop4.0中体现出来的系统设计思想,永远都不会过时。 3. 学习本教程,能全面了解一个中小型系统设计时所用到的知识,比如缓存https://study.163.com/course/courseMain.htm?courseId=655003
24.最代码证精springmvc+hibernate+jbpm开发OA自动化办公后台管理系统源码下载 【猪猪-前端】基于HTML5 Bootstrap搭建的后台模板charisma,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用! 精Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例https://zuidaima.com/
25.PHP教育系统Eduline在线学习系统源码带后台打造全新的在线教育系统APP端全新的用户体验,带你更方便、 快捷的学习PC端直播教学、视频教学、在线考试等10余个功能模块 网站截图 源码无忧 认证类型: 个人 商家认证: 联系卖家 QQ:1534316087 工作时间 9:00-22:00 描述 5.00 发货 5.00 售后 5.00 进入店铺收藏店铺 已缴保证金300.00元https://www.taohaoyuan.com/product/view5224.html
26.源码时代成都IT培训重庆UIh5Java培训不敢去怎么办?毕业就拿近万元offer!现在的应届生都这么强?在源码毕业后,能进大厂吗?答案来了!狂欢7天7夜!源码时代11周年庆超燃来袭源码时代天府校区正式开课!2021源码时代课程更新、服务升级、就业加速:新价目标准将于4月1日正式执行 源码时代学习环境 硬核设施,舒适的环境,铸就你的美好未来https://www.itsource.cn/
27.芋道源码——纯源码解析博客Spring Boot 学习路线 Spring Cloud 学习路线 微信公众号福利:芋道源码 0. 阅读源码葵花宝典 1. RocketMQ / MyCAT / Sharding-JDBC 详细中文注释源码 2. 您对于源码的疑问每条留言都将得到认真回复 3. 新的源码解析文章实时收到通知,每周六十点更新 https://www.iocoder.cn/
28.51Python51Python是一个专业的Python学习平台,主要分享Python的学习教程以及经典案例源码等编程资料https://www.51python.com/