From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ted Zlatanov Newsgroups: gmane.emacs.devel Subject: Re: Mac OS-compatible ports Date: Sun, 01 Jan 2012 09:06:21 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Message-ID: <87zke7bjqa.fsf@lifelogs.com> References: <9E637EAB-A0C5-421B-9CCA-71C41442AF52@gmail.com> <87ipl7zaea.fsf@lifelogs.com> <87sjkbib14.fsf@uwakimon.sk.tsukuba.ac.jp> <87d3baui4b.fsf@lifelogs.com> <87mxacqlg4.fsf@lifelogs.com> <87fwg3pfy4.fsf@lifelogs.com> <8739c2dscy.fsf@lifelogs.com> <87ehvkdgfr.fsf_-_@lifelogs.com> Reply-To: emacs-devel@gnu.org NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1325426812 15276 80.91.229.12 (1 Jan 2012 14:06:52 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 1 Jan 2012 14:06:52 +0000 (UTC) Cc: Adrian Robert To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Jan 01 15:06:47 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RhM3h-0000UC-Tr for ged-emacs-devel@m.gmane.org; Sun, 01 Jan 2012 15:06:46 +0100 Original-Received: from localhost ([::1]:42655 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RhM3g-0005wA-Pr for ged-emacs-devel@m.gmane.org; Sun, 01 Jan 2012 09:06:44 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:58579) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RhM3e-0005w5-E4 for emacs-devel@gnu.org; Sun, 01 Jan 2012 09:06:43 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RhM3c-0005hF-9o for emacs-devel@gnu.org; Sun, 01 Jan 2012 09:06:42 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:51171) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RhM3b-0005hB-SI for emacs-devel@gnu.org; Sun, 01 Jan 2012 09:06:40 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RhM3Z-0000PS-Jp for emacs-devel@gnu.org; Sun, 01 Jan 2012 15:06:37 +0100 Original-Received: from c-76-28-40-19.hsd1.vt.comcast.net ([76.28.40.19]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 01 Jan 2012 15:06:37 +0100 Original-Received: from tzz by c-76-28-40-19.hsd1.vt.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 01 Jan 2012 15:06:37 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 88 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: c-76-28-40-19.hsd1.vt.comcast.net X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.90 (gnu/linux) Cancel-Lock: sha1:9JHsrySvQrVEifWJoIV467IAbHs= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 80.91.229.12 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:147121 Archived-At: On Sun, 1 Jan 2012 10:47:38 +0900 YAMAMOTO Mitsuharu wrote: YM> On 2011/12/31, at 22:22, Ted Zlatanov wrote: >> I agree with your statement, but we're not "pushing" the NS port only >> because it's for GNUstep. It's quite usable on Mac OS X. I said that >> "in its defense" it is compatible with GNUstep by using the Cocoa API, >> which your port isn't. So, to make the current situation clear, the >> Mac OS port choice is between: >> >> 1) NS port: Cocoa API, works on Mac OS X with some issues, compatible >> with GNUstep and can work there (it needs lots of work though). Apple >> has repeatedly stated Cocoa is the preferred API for Mac OS X >> developers, especially for new software. >> >> 2) your Carbon-based port: works on Mac OS X well, can't be compatible >> with GNUstep. Apple has not been clear about Carbon's future, even >> though Carbon seems to be well entrenched at this point. YM> As I've been repeatedly saying, the Mac port uses Cocoa for its YM> GUI implementation. If you call the Mac port Carbon-based, lots YM> of the applications including those bundled with Mac OS X such as YM> Safari.app should also be called Carbon-based. I'll avoid calling it "Carbon-based" in the future so there's no misunderstanding. YM> Also, I would like to note that some of recent improvements to YM> Mac OS X and iOS are provided outside Cocoa, especially if they YM> are not directly related to GUI. They are not classified as YM> Carbon, but they are also C APIs and not provided by GNUstep. YM> For example, Grand Central Dispatch (GCD) I mentioned in the YM> `select' emulation without periodic polling is a C API and YM> provided by both Mac OS X and iOS, but not by GNUstep. YM> http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00694.html I recall that API was brought into Mac OS X recently and is not available in older versions of the same OS, at least for PowerPC architecture. I think it makes sense to use it opportunistically, but if using it in the NS port makes the NS port incompatible with GNUstep, then that's a harder decision. I'm not qualified to make that decision, in any case. YM> The Core Text framework I'm using for the font backend driver in YM> the Mac port is also a C API. Interestingly, in iOS Apple YM> provides an advanced low-level text layout API (Core Text) only YM> at C level, rather than copying such API (NSLayoutManager etc.) YM> from Mac OS X Cocoa AppKit to iOS UIKit. I think this implies YM> Apple's preference of C API to Cocoa for advanced low-level tasks YM> that applications such as text editors want to use. Interesting. So Apple's direction seems to be towards plain C APIs now, because of the emergence of iOS, and the profitability and popularity of that platform makes a change in that direction unlikely. That makes compatibility with GNUstep much harder for the NS port. It also means that GNU Emacs has to keep up with Apple's business choices and custom APIs to provide a great user experience on their proprietary platform. That seems like a difficult choice for the GNU project, and I'm sure it will come up again in other GNU software that aims to run on Mac OS X. I think the NS port needs to make the decision whether it will keep trying to be compatible with GNUstep, which will make the users' experience worse on Mac OS X, or if it will use these C APIs and lose the GNUstep advantage. In the latter case it may be sensible and even advantageous to GNU Emacs to merge the Mac port's improvements into the NS port, or vice versa, and have just one Mac OS X compatible port. That would leave GNUstep without a viable GNU Emacs port, though, and it may not suit your plans for the Mac port. So this is up to the Emacs maintainers; the NS port maintainers (at least Adrian Robert) and developers; and possibly you, if you want to participate in such a discussion. FWIW, as an Emacs user on Mac OS X, I think such a merge would benefit the Emacs users, especially if there was a way to provide some GNUstep compatibility. I hope all of you find a middle ground that satisfies everyone's goals and needs. YM> Because the Mac port already uses Cocoa AppKit for GUI, the YM> argument about Apple's preference of Cocoa to Carbon (with YM> respect to GUI) you made above is rather pointless. I even have YM> an impression that the Mac port usually behaves more like other YM> Cocoa applications than the NS port does. OK, I'll keep that in mind, and thank you for explaining. Ted