热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XEmacsvs.GNUEmacs

XEmacsvs.GNUEmacs--Linux发行版技术-Debian信息,下面是详情阅读。
XEmacs vs. GNU Emacs Much of this page was written over a decade ago, by somebody other than the current editor, possibly Ben Wing. The previous major revision occurred on January 1, 2001, by me. GNU Emacs has improved a fair amount, but the irreconcilable differences between the projects continue, with no resolution in sight. I have little interest in learning enough technical details about GNU Emacs 22 to accurately revise it, so you should take everything in square brackets with a grain of salt. -- stephen, February 19, 2008
There are currently irreconcilable differences in the views about technical, programming, design and organizational matters between Richard Stallman (RMS) and the XEmacs development team which provide little hope for a merge to take place in the short-term future.
If you have a comment regarding a merge, it is a good idea to avoid posting to the newsgroups, because of the very heated flamewars that often result. Mail your questions to xemacs-beta@xemacs.org and emacs-devel@gnu.org.
Many people have noticed the great difference in focus between the two "Viewpoints" presented here, and also have expressed confusion about the legal issues RMS focuses on. The final sections present some explanation and interpretation regarding these FAQs.
Technical Differences between XEmacs and GNU Emacs
(the XEmacs Point of View) This section is now quite dated. Much of it refers to GNU Emacs 19 and XEmacs 20. However, many of the differences described persist in the most recent versions of both Emacsen in some form.
User-Visible Editing Features As of GNU Emacs 22, XEmacs's GUI features (images, variable pitch fonts, widgets) are reported by some GNU Emacs users to be more efficient and usable than GNU Emacs's.
XEmacs provides support for ToolTalk on systems that have it. Experimental support for drag-and-drop protocols is provided from XEmacs 21. [Not available in GNU Emacs 21. Status in GNU Emacs 22 unknown.]
XEmacs has a built-in toolbar. Four toolbars can actually be configured simultaneously: top, bottom, left, and right toolbars. [A single toolbar was added to GNU Emacs 21.]
General Platform Support Starting with XEmacs 21.4, if your platform supports dynamically loadable modules, so does XEmacs. RMS continues to refuse to allow this facility in GNU Emacs, because it makes it easier to distribute modules in violation of the GPL.
If you're running on a machine with audio hardware, you can specify sound files for XEmacs to play instead of the default X beep. See the documentation of the function load-sound-file and the variable sound-alist. XEmacs also supports the network sound protocols NAS and EsounD. [Not available in GNU Emacs 22.]
XEmacs 21 supports database protocols with LISP bindings, currently including Berkeley DB, LDAP, and PostgreSQL (from 21.4). [Not available in GNU Emacs 22.]
XEmacs 21 supports the Canna, Wnn, and SJ3 Japanese input method servers directly, as well as through the X Input Method (XIM) protocol. GNU Emacs 22 supports only the XIM protocol, although there are now pure Lisp implementations of Canna and Wnn. Both Emacsen support the Quail family of input methods (implemented in LISP) for many languages.
As of XEmacs 21.4, although XEmacs supports preloaded Lisp using "unexec", it is considered obsolete. XEmacs 21.4 uses a much more portable technique to "dump" and "preload" Lisp. GNU Emacs 22 still uses unexec.
XEmacs 21 supports multiple frames on TTYs. GNU Emacs is scheduled to get that feature in version 23.
Packaged LISP Libraries Many more packages are provided standard with XEmacs than with GNU Emacs 22.
XEmacs 21 supports an integrated package management system which uses EFS to download, then automatically install prebuilt LISP libraries. This allows XEmacs users much more straightforward access to the "latest and greatest" version of any given library.
LISP Programming From XEmacs 20 on, characters are a separate type. Characters can be converted to integers (and many integers can be converted to characters), but characters are not integers. GNU Emacs 19, XEmacs 19, Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs 20--22 (incorporating Mule 3 and later Mule 4) represent them as integers. [GNU Emacs 23 may get a character type.]
From XEmacs 20 on, the buffer is treated as an array of characters, and the representation of buffer text is not exposed to LISP. The GNU Emacs 20--22 functions like buffer-as-multibyte are not supported.
In XEmacs, events are first-class objects. GNU Emacs 19 represents them as integers, which obscures the differences between a key gesture and the ancient ASCII code used to represent a particular overlapping subset of them.
In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19 represents them as complicated combinations of association lists and vectors. If you use the advertised functional interface to manipulation of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU Emacs 19; if your code depends on the underlying implementation of keymaps, it will not.
XEmacs uses "extents" to represent all non-textual aspects of buffers; GNU Emacs 19 uses two distinct objects, "text properties" and "overlays", which divide up the functionality between them. Extents are a superset of the union of the functionality of the two GNU Emacs data types. The full GNU Emacs 19 interface to text properties and overlays is supported in XEmacs (with extents being the underlying representation).
Extents can be made to be copied into strings, and then restored, by kill and yank. Thus, one can specify this behavior on either "extents" or "text properties", whereas in GNU Emacs 19 text properties always have this behavior and overlays never do.
Window System Programming Interface XEmacs supports Motif applications, generic Xt (e.g. Athena) applications, and raw Xlib applications. An XEmacs variant which supports GTK+ is available (integration as an option in the XEmacs mainline is planned for XEmacs 22), although code to take advantage of the support is as yet scarce. XEmacs does not support raw Xlib. GNU Emacs 22 supports Xlib, GTK+, and MS Windows, with 3rd party or experimental support for Carbon and Cocoa on the Mac.
XEmacs provides an interface called the "native widget API" for adding new kinds of widgets (currently including progress bars, tab controls, and buttons) which can be attached to extents using the image API. GNU Emacs does not.
As a compile-time option, an XEmacs frame can be placed within an "external client widget" managed by another application. This allows an application to use an XEmacs frame as its text pane rather than the standard Text widget that is provided with Motif or Athena.
Community Participation Starting with XEmacs 20, joining the XEmacs development team is simple. Mail to XEmacs Developers <xemacs-beta@xemacs.org>, and you're in! (If you want to be, of course. You're also welcome to just post development-related questions and bug reports.) As of February 2008, XEmacs has a modern bug tracker. The GNU Emacs development lists were opened up as of the version 21 development cycle, and a bug tracking system is under discussion.
XEmacs's bundled packages and the stable XEmacs 21.4 line are kept in a CVS repository, while starting in December 2007, the mainline development was moved to a Mercurial repository. GNU Emacs continues to use CVS although 3rd parties provide bzr, GNU Arch, Darcs, and git repositories, and a move to bzr is under discussion.
In XEmacs, development and maintenance of Lisp libraries is separated from the core editor development at a fairly low level. This provides better modularization and a better division of responsibility between external library maintainers and the XEmacs core development team. Even for packages the size of Gnus, XEmacs users normally have access to a pre-built version within a few weeks of a major release, and minor updates often within days. RMS once again vetoed provision of a package system for Emacs in December 2007.
In XEmacs, CVS commit authority is broadly dispersed. Recognized maintainers of LISP libraries who are willing to maintain XEmacs packaged versions automatically qualify for CVS accounts for their packages. Something similar is true for GNU Emacs at the time of writing.
The FSF Point of View Richard Stallman writes:
[indent] XEmacs is GNU software because it's a modified version of a GNU program. And it is GNU software because the FSF is the copyright holder for most of it, and therefore the legal responsibility for protecting its free status falls on us whether we want it or not. This is why the term "GNU XEmacs" is legitimate.
But in another sense it is not GNU software, because we can't use XEmacs in the GNU system: using it would mean paying a price in terms of our ability to enforce the GPL. Some of the people who have worked on XEmacs have not provided, and have not asked other contributors to provide, the legal papers to help us enforce the GPL. I have managed to get legal papers for some parts myself, but most of the XEmacs developers have not helped me get them.
XEmacs was possible because free software means that anyone can change it and distribute a modified version. I have no regrets about establishing this freedom for Emacs. Everyone should have the freedom to change any program, and this is not limited to changes that the original author likes.
Many people have taken advantage of the freedom to change GNU Emacs, over the last decade. Most of them were willing to cooperate on integrating their changes into Emacs. XEmacs arose as a separate forked version because some of the developers--starting with Zawinski--were unwilling to do that.
People should have the freedom to decide what to work on, including the freedom to compete with the GNU project, but it's a shame when they make that choice. The whole community loses when someone chooses competition rather than cooperation.
But this is worse than competition--it is unfair competition. The XEmacs developers can and do copy code they like from Emacs. If I could copy the code I like from XEmacs in the same way, at least the rivalry would be fair. But I can't do that, because substantial parts of XEmacs don't have legal papers, or don't have known authors.
As long as we cannot use XEmacs in the GNU system, the GNU project has to make sure that Emacs is not left behind. In other words, we have to behave like rivals too, even though we wish there were no rivalry. When XEmacs developers try to persuade people to use, test, fix and enhance XEmacs instead of Emacs, the GNU project can't sit still; we need them to use, test, fix and enhance Emacs instead.
There is good code in XEmacs, which I'd be happy to have in a merged Emacs any day. But I cannot copy it out of XEmacs myself because of the uncertain authorship and/or lack of legal papers.
This problem could probably be resolved, at least for large parts of XEmacs, with substantial help from the authors of that code. Otherwise, the GNU project has to write or find replacements for it.
I invite people who like Emacs, and want the best possible version of Emacs to be available for use in the GNU system, to help in one way or the other.
[/indent] What Is the Legal Issue? There is no difference in the nature of the copyrights or licenses of the two projects. Copyright is defined by law and international treaty, and is automatically awarded to the author as soon as a work is published. Both projects use the GNU General Public License to protect their work while providing it freely to the community. (GNU Emacs moved to GPL version 3 almost as soon as it was available; XEmacs is moving in that direction as well. Of course since XEmacs is licensed under "GPL version 2 or later," individuals who wish to redistribute XEmacs under version 3 can do so. Thus this is not a real difference.)
XEmacs has no choice, because much of its code is copyrighted by the Free Software Foundation, and is only available to XEmacs under the GPL. Under that license, redistribution is only possible under the GPL. The GNU Project uses the GPL as a matter of principle. (XEmacs developers generally subscribe to a similar principle, of course.) It is the same GPL, so sharing code is 100% legal.
However, copyright is governed by the civil code, not the criminal code. This means that the government takes no interest in violations of copyright as such. It only undertakes to provide law courts where the copyright can be enforced. It is the responsibility of the copyright holder to sue to prevent violations and receive damages for past violations. The government cannot act on the complaints of third parties.
The FSF has received legal advice that a copyright holder in a jointly-authored work is in a weak position to enforce its copyright unless all coauthors participate in the legal action. Evidently the FSF would be considered a third party with respect to non-assigned code, weakening its ability to defend the whole work. (Author's note: You'd have to ask a lawyer why that might be so. I am not an expert, but lawyers I have asked informally agree that this theory is plausible, although it has not been tested in court. It may also be more or less applicable in jurisdictions other than the U.S.)
Based on this advice, RMS has concluded that incorporating some code copyrighted by another entity into a work such as Emacs puts the copyright of all of the work at risk of being unenforceable in court in the case of a violation. He has judged that this risk is unacceptably large. Therefore he insists that the whole copyright of any software that included in the GNU system be assigned to the FSF, with few exceptions.
What Is the Role of the FSF? RMS believes that copyright in software itself is immoral. Copyleft is a device to undermine the whole idea. He has little empathy for people who wish to retain copyright---after all, he has given up his own. This is the fundamental idea behind the FSF (as opposed to the GNU Project, which actually develops software). It is a holding company for all the software copyrights that shouldn't even exist in the first place. According to the legal argument above, such a trust is necessary to defend the GPL. It is the GPL that prevents proprietary firms from misappropriating the software at the same time as it prevents the holding company (the FSF) from being a monopoly.
Well, Isn't That Paranoid? Many developers think so, but it seems that no one who holds a different theory has retained a lawyer to check the precedents. The FSF has done so, so its position must be considered most credible.
Also, it is important to remember that RMS and the FSF are not (in this context) acting as software developers. Rather, they perceive themselves as guardians of a social movement. Their responsibility is not to any one application or project, but to the whole GNU system. For that reason as well, a conservative approach can be justified.
Don't the XEmacs Developers Care? Of course we do. But even if we haven't consulted a lawyer, we have the right to judge the risks to our own product. Most of us consider it low. Furthermore, many XEmacs developers take a different approach to the free software movement itself, and so will differ from GNU/FSF policy. The code we write will remain free. What we are possibly losing is the ability to force others to make their modifications free. This is central to the GNU Project because it is a social movement. To many developers as individuals, it is not so crucial.
This also shows why the "Viewpoints" are so different in style. XEmacs developers consider their project from a technical point of view, and prefer it for technical reasons. They see their contributions to the free software movement as stemming from their development and publication of code. Richard Stallman, and the FSF, consider their primary role to be more politically and socially oriented. Thus social and legal issues come to the fore.
Fear of Forking Considered Harmful Few XEmacs developers consider having multiple implementations of some features a bad thing. The original Lucid fork arose, as RMS writes, because the Lucid developers (primarily Jamie Zawinski) would not "cooperate" in merging the Lucid code into the GNU mainline. What RMS does not mention is that in his vision of "cooperation" the Lucid developers would be working under his direction to merge those features that he wanted, making changes to their code as he directed. This is obvious, when you think about it. Of course he was the head of the GNU Emacs project, and would reserve the right to make final decisions. Nor is it surprising that the Lucid developers refused. They had egos, of course. But ... well, you can, and should, judge for yourself.
But there were also those "irreconcilable technical differences." Both Lucid Emacs and GNU Emacs 19 were excellent editors, but in their different ways. The Lucid developers honestly considered GNU Emacs 19, and the merge as outlined by RMS, to be broken in some important ways. He, just as honestly, considered many of the changes the Lucid developers demanded to be broken, or at best to be fixing what wasn't broken. A fork was inevitable. That's one thing free software is for: the right to fix what you consider broken, and redistribute the improvements.
And a little competition may be good for you! Without the fork, GNU Emacs 20 might not have added Mule, and GNU Emacs 21 might not have the GUI redisplay. Who knows when GNU Emacs will get a library packaging system? All of these features were successfully pioneered by Lucid Emacs or XEmacs. They were implemented at times when RMS considered them broken, irrelevant, or low priority. Conversely, not only is XEmacs based on GNU Emacs, but part of the development effort includes regular synchronization of features and implementations with the mainline versions.
Of course, we all think it is best when all the good code that results can be shared:
[indent] All Emacs developers are free software developers. [/indent] But whether or not it can be shared is a matter of point of view. And the question is quite extraneous to the development process itself. "How much does the legal system hinder you in effectively protecting your copyright when you cooperate with someone unwilling to give up their copyright?" Maybe you don't need to care.
Author's Disclaimer I disagree strongly with the FSF position in many respects. In fact it is my personal opinion that in interactions with XEmacs developers RMS has been more interested in recruiting them to do work he wants done on Emacs, than in acquiring XEmacs code with far less effort than it would take to develop it from scratch.
However, I have tried to present the facts of the legal issue as accurately and objectively as possible, and have some hope I succeeded. The interpretation of why XEmacs developers as a group do not worry about this legal issue is my own. The most I can say is nobody on the XEmacs developer's mailing list has complained about it.
Statements about what Richard Stallman believes, judges, concludes, and so on should be taken with a grain of salt. I am not so foolish as to pretend to speak for him. Rather, I have found certain conjectures useful for establishing a coherent interpretation of his actions and statements, and have taken the liberty of making them available to you. The NO WARRANTY section of the GPL definitely applies to them, though!
I just wanna say that I am proud that this page still gives Jamie Zawinski an excuse to use a wonderful word like pusillanimous. There are plenty of venues where you can read endless flames on these issues. With little effort, you can probably find some of mine. This isn't one. So big deal.
Stephen J. Turnbull
推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 安装goget-ugithub.comgomoduleedigoedis连接var(redisHost127.0.0.1:6379redisPassroot)创建redis ... [详细]
  • ANSI
    ANSI是什么编码?用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 本文介绍了如何使用call_user_func_array函数向Redis中添加有序列表或集合。该函数可以接受一个数组作为参数,第一项是要操作的有序列表或集合的键,后续的项目是排序权重和值的交替。通过该函数,可以方便地向Redis中添加多个元素,并指定它们的排序权重。 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • 腾讯T3大牛亲自教你!2021大厂Android面试经验,经典好文
    本篇将由环境搭建、实现原理、编程开发、插件开发、编译运行、性能稳定、发展未来等七个方面,对当前的ReactNative和Flutter进行全面的分析对比, ... [详细]
author-avatar
书友56183408
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有