From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Thorsten Jolitz Newsgroups: gmane.emacs.devel,gmane.emacs.orgmode Subject: Re: Re Org 9.4 is out. Can you help? // breaking apart Org Mode Date: Wed, 16 Sep 2020 11:23:26 +0200 Message-ID: <875z8eulbl.fsf@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6180"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cc: emacs-orgmode@gnu.org To: emacs-devel@gnu.org Cancel-Lock: sha1:7/M+sXorfwD/+G04i1RC0MbSbSw= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Sep 16 11:25:47 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kIThD-0001VS-I0 for ged-emacs-devel@m.gmane-mx.org; Wed, 16 Sep 2020 11:25:47 +0200 Original-Received: from localhost ([::1]:48108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kIThC-0007Gw-L5 for ged-emacs-devel@m.gmane-mx.org; Wed, 16 Sep 2020 05:25:46 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45246) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kITfP-0005bg-Ei for emacs-devel@gnu.org; Wed, 16 Sep 2020 05:23:55 -0400 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:42168 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kITfN-0004ka-T3 for emacs-devel@gnu.org; Wed, 16 Sep 2020 05:23:55 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kITfJ-0009ke-FN for emacs-devel@gnu.org; Wed, 16 Sep 2020 11:23:49 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/16 05:23:49 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:255845 gmane.emacs.orgmode:131615 Archived-At: William Rankin via "Emacs development discussions." writes: Hello, > At the request of Bastien I'm sending on these ideas regarding the > future of Org Mode development. I'm also copying emacs-devel since > they might be interested too. > > Org Mode and Emacs would benefit greatly from the codebase being > broken apart, not unlike how an antitrust suit breaks apart a big > company for the good of society! [...] I do have some hands-on experience with this, although quite some time ago. When writing the "outshine-suite" (outshine.el, outorg.el navi-mode.el), it was all about bringing org-mode functionality to programming modes, or any other major mode that is not org-mode, but with the org-mode magic acting on outshine headings (outcommented org headings). I had to port a lot of org-mode functionality to outshine then (based on existing outline extensions like outline-magic), and had quite a few user requests like "I want org-mode feature xyz in outshine too". I quickly realized that this was an uphill battle and came up with a 'outshine-use-outorg' function, that simply first converts the outshine buffer to org-mode, executes the requested org command, then converts the buffer back to outshine. I created a skeleton file with skeletons for all org-mode commands at that time, and implemented a few, leaving the others to any contributors that feel a need for the feature. Here is what I remember about that process of porting org-mode functionality to outshine: 1. org-mode is clearly not written in "library-style". 2. many org commands don't expose their parameters in a function signature, but rather ask the user for them with some interactive prompt 3. some org commands are "stateful", like clocking e.g., and it might be hard to preserve the state without having the related org buffer around 4. many org commands don't do just one thing, they are smart in a way that makes the user happy, but the programmer who wants to reuse them unhappy. I remember that some functionality was straight forward to port (like org speed commands), and other not so much (although org-mode had some enhanced outline functions, there were reasons that I used and improved the outline-magic versions iirc). This project could be quite a lot of work (adressing points 2-4 above) imo, but sounds very nice. Just my 2 cents ... -- cheers, Thorsten