From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Kastrup Newsgroups: gmane.emacs.devel Subject: Re: Emacs contributions, C and Lisp Date: Sat, 17 Jan 2015 07:40:44 +0100 Message-ID: <87d26ddi4z.fsf@fencepost.gnu.org> References: <54B1B97E.9070204@gmail.com> <87fvbhk4ha.fsf@fencepost.gnu.org> <54B456C8.6010506@gmail.com> <8761cbhvhb.fsf@fencepost.gnu.org> <54B5AA10.7080606@gmail.com> <54B6F8EF.7020401@gmail.com> <54B8326B.90804@gmail.com> <54B889CC.9030401@gmail.com> <878uh3dquk.fsf@fencepost.gnu.org> <54B9BA40.2070104@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1421476932 18780 80.91.229.3 (17 Jan 2015 06:42:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 17 Jan 2015 06:42:12 +0000 (UTC) Cc: rms@gnu.org, emacs-devel@gnu.org To: Jacob Bachmeyer Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jan 17 07:42:11 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YCN5G-0005ga-Ar for ged-emacs-devel@m.gmane.org; Sat, 17 Jan 2015 07:42:10 +0100 Original-Received: from localhost ([::1]:58434 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YCN5F-0008Q4-1L for ged-emacs-devel@m.gmane.org; Sat, 17 Jan 2015 01:42:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55812) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YCN4n-0008LB-Ci for emacs-devel@gnu.org; Sat, 17 Jan 2015 01:41:42 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YCN4m-0000IV-5a for emacs-devel@gnu.org; Sat, 17 Jan 2015 01:41:41 -0500 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35492) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YCN4m-0000IP-1d for emacs-devel@gnu.org; Sat, 17 Jan 2015 01:41:40 -0500 Original-Received: from localhost ([127.0.0.1]:42665 helo=lola) by fencepost.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YCN4e-0005Q3-Lj; Sat, 17 Jan 2015 01:41:32 -0500 Original-Received: by lola (Postfix, from userid 1000) id 079E8E0FEF; Sat, 17 Jan 2015 07:40:44 +0100 (CET) In-Reply-To: <54B9BA40.2070104@gmail.com> (Jacob Bachmeyer's message of "Fri, 16 Jan 2015 19:26:24 -0600") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:181367 Archived-At: Jacob Bachmeyer writes: > David Kastrup wrote: >> Jacob Bachmeyer writes: >> >>> Richard Stallman wrote: >>> >>>> [[[ To any NSA and FBI agents reading my email: please consider ]]] >>>> [[[ whether defending the US Constitution against all enemies, ]]] >>>> [[[ foreign or domestic, requires you to follow Snowden's example. ]]] >>>> >>>> The situation with Emacs will be the same as it is with GCC now: >>>> plug-ins have to be GPL. >>>> >>> This illuminates the central question at hand: if an Emacs plugin is >>> GPL, and provides access to internals of GCC, which is also GPL, can >>> nonfree software use that Emacs plugin? >>> >> >> That's not the central question at hand. The central question is: if an >> Emacs plugin can provide access to internals of GCC, what keeps nonfree >> software from using the same mechanism as the Emacs plugin to get access >> to internals of GCC? > > What stops nonfree software from doing that is that the mechanism used > to get access to internals of GCC is very low-level (using ptrace(2) > to directly access GCC's memory would not be out of the question) and > transfers GCC internal structures over the link, which are interpreted > within the Emacs process. According to the GPL FAQ: "Using shared > memory to communicate with complex data structures is pretty much > equivalent to dynamic > linking."() > I expect that GCC's internal trees qualify as "complex data > structures". There is certainly not a nice, readable, text AST dump > involved at any point. So gdb has to be licensed identically with any program you debug using it because it is accessing the respective program's memory? At any rate, does not sound like an interface one could keep steady across different GCC versions. To make that the case, you need something describing the internals' meaning, akin to how debug information describes memory layout. Once you have that kind of "my raw memory means $x" description, this constitutes an interface. Possibly an awkward interface, but that's not legally significant. >> The price for interoperation is interoperation. And since it is >> rather more than less important for free as opposed to proprietary >> software that independent teams can create cooperating applications, >> I don't see that it makes sense for us not to pay that price. And >> the latest point to which we can delay this is when a concrete >> application is imminent. >> >> We can't guarantee that such an application will be successful if we >> allow it. But it will definitely fail if we don't. > > You are right, which is why I am seeking a workable solution that all > can be happy with. It sounds to me like we are looking for a snakeoil bottle label text that will placate Richard and/or ourselves for some while so that we might carry on a bit. But I don't think we can terminally avoid dealing with the fact that we cannot achieve interoperation between separate free software applications without enabling interoperation with separate nonfree software that does not trigger copyright. And our limited and distributed resources and skills as free software developers mean that our success depends on interoperation within free software. We can't afford this process every time we want something to work together. -- David Kastrup