unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Yuan Fu <casouri@gmail.com>
To: "Björn Bidar" <bjorn.bidar@thaodan.de>
Cc: Daniel Colascione <dancol@dancol.org>,
	Eli Zaretskii <eliz@gnu.org>,
	emacs-devel@gnu.org
Subject: Re: Tree-sitter maturity
Date: Sun, 29 Dec 2024 16:56:51 -0800	[thread overview]
Message-ID: <A7FAFDE2-9653-418B-BB37-16A632D352C1@gmail.com> (raw)
In-Reply-To: <6771d84b.050a0220.250914.d0e0SMTPIN_ADDED_BROKEN@mx.google.com>



> On Dec 29, 2024, at 11:06 AM, Björn Bidar <bjorn.bidar@thaodan.de> wrote:
> 
> Daniel Colascione <dancol@dancol.org> writes:
> 
>> On December 29, 2024 11:02:47 AM EST, "Björn Bidar" <bjorn.bidar@thaodan.de> wrote:
>>> Daniel Colascione <dancol@dancol.org> writes:
>>> 
>>>> On December 29, 2024 10:05:26 AM EST, "Björn Bidar"
>>>> <bjorn.bidar@thaodan.de> wrote:
>>>>> Daniel Colascione <dancol@dancol.org> writes:
>>>>> 
>>>>>> On December 27, 2024 9:59:14 AM EST, Eli Zaretskii <eliz@gnu.org> wrote:
>>>>>>>> Date: Fri, 27 Dec 2024 08:46:06 -0500
>>>>>>>> From: Daniel Colascione <dancol@dancol.org>
>>>>>>>> CC: rms@gnu.org, manphiz@gmail.com
>>>>>>>> 
>>>>>>>>>> It might take a while for that to happen, which is why I still
>>>>>>>>>> believe
>>>>>>>>>> it would be better if tree-sitter major modes would populate
>>>>>>>>>> `treesit-language-source-alist' on their own, and point to the
>>>>>>>>>> specific
>>>>>>>>>> checkouts that the major mode developer tested their implementation
>>>>>>>>>> against.
>>>>>>>>> 
>>>>>>>>> We could have done that, but there's no way we could keep the value of
>>>>>>>>> treesit-language-source-alist up-to-date, because the grammar
>>>>>>>>> libraries put out new versions much more frequently than Emacs
>>>>>>>>> releases, especially if you consider libraries that have no official
>>>>>>>>> versions at all (in which case we can only point to some revision in
>>>>>>>>> their repository).
>>>>>>>>> 
>>>>>>>>> The question that bothers me is how useful is it to have
>>>>>>>>> treesit-language-source-alist that is outdated?  What do we expect the
>>>>>>>>> users to do with such an outdated value?
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> Why not just vendor all the grammars with the Emacs modes that
>>>>>>>> use them?
>>>>>>> 
>>>>>>> We'd need to ask their developers to agree to this. 
>>>>>> 
>>>>>> Why? They're free software. For copyright assignment? Seems like an
>>>>>> exception would make sense here.
>>>>>> 
>>>>>>> Other than that,
>>>>>>> I don't see how is that different from pointing to a specific version
>>>>>>> of each grammar: both will be outdated a short time after we point to
>>>>>>> the version or release Emacs with that version.
>>>>>>> 
>>>>>>> So why do you think this is better?
>>>>>> 
>>>>>> Vendoring enables building a full featured Emacs without a network
>>>>>> connection and guarantees build reproducibility in perpetuity.
>>>>> 
>>>>> Did you think of the long term consequences?
>>>>> 
>>>>> The embedded dependencies would have to be maintained first by Emacs and
>>>>> later by packagers.
>>>>> 
>>>>> All the infrastructure around syncing of grammars is time spend that
>>>>> could spend on more long term efforts such as stabilizing the
>>>>> tree-sitter based modes to not break as easy on grammar changes or to
>>>>> improve tree-sitter it self.
>>>> 
>>>> I've vendored plenty of things. Works fine in practice. Big programs
>>>> like Firefox vendor the world too, and they work fine. It's really not
>>>> that much work. It eliminates entire classes of problem. It's going to
>>>> take more time to deal with the problems of taking a dependency and
>>>> the headaches of not having a stable interface than it would to set up
>>>> a few git subtrees or submodules and invoke their build system from
>>>> that of Emacs.
>>> 
>>> Big programs like Firefox vendor the world only for packagers to have
>>> to revert those. 
>> 
>> These packagers are wrong, FWIW. Unbundling is needless and often
>> introduces bugs.
> 
> It introduces bugs in software with generally unstable APIs/ABIs or software
> using unfinished/unreleased versions of software. Partially the problem
> we are facing here right now.
> 
> The rat tail of issues this can entrail can be long.
> 
> FWIW You called over half of the Unix community wrong where bundled
> dependencies are frowned or forbidden upon.
> 
>> In the mobile world, popular OSes seldom provide
>> libraries. Apps are expected to bundle their dependencies. The sky
>> doesn't fall. In fact, the mobile app ecosystem is healthier and more
>> secure than the desktop one precisely because it isn't burdened by
>> ideas that no longer make sense in a modern technical context,
>> e.g. that apps should casually share libraries.
> 
> I work on mobile operating systems, what you describe is double edged
> sword. The applications size's increase and the party to blame for
> security issues moves from the os to the application developer. The
> mobile OS would had plenty of issues from this practice notably for
> example the log4you debacle.
> 
> Most mobile operating systems provide their own set of available
> libraries, apps are not expected to bundle dependencies unless they are
> not available for that OS.
> 
> Part of the issue is that library dependencies moving faster than many
> operating systems can or with stable APIs. The end result of such lets
> bundled everything approach is that you have use the exact chain of
> dependencies to build a software which is awesome if you like the fire
> and forget approach of software development.
> 
> 
> To me what you write reads like mobile operating systems = JavaScript/AI developers.
> 
>>> Vendoring only works long enough until the dependencies
>>> you have vendored are not out of date. 
>> 
>> It doesn't matter whether the dependency is out of date so long as
>> it's in sync with code that interacts with it. It's even worse when
>> the dependency doesn't make any compatibility guarantees. IMHO, the
>> only reasonable way to consume a dependency with an unstable interface
>> is to bundle or hash-lock or outright vendor it.
> 
> If you have software which has short life cycles this can work but I
> don't think this works for Emacs.
> Further bundled dependencies require to patch the software bundling the
> dependency to fix bugs and security issue. Bugfixes are not really an
> issue with grammars but with libtree-sitter which Emacs depend on.
> Putting bundled grammars and libtree-sitter in this equation makes it
> harder to maintain the Emacs package since I have to watch to not break
> the embedded grammars when updating tree-sitter or it's dependencies.
> 
>>> It is something which only works
>>> in projects who control most of their dependency chain and/or have a
>>> fire and forget approach of software development.
>>> 
>>>> It's not even the precise mechanics: pulling down a grammar by hash is
>>>> tantamount to just checking in the grammar, but with more moving
>>>> parts. You still pair one to one the grammar and the Lisp code meant
>>>> to use it so you don't end up chasing down weird compatibility
>>>> issues. IMHO, since they're tightly coupled anyway, we might as well
>>>> distribute them together.
>>>> 
>>>> As for changing TS grammars not to break: why do you think that would
>>>> be feasible? So far TS grammar authors haven't felt particularly
>>>> obligated to maintain compatibility.
>>> 
>>> I don't know exactly to be honst but I don't think we are alone with
>>> this issue. If we are we should check out it is handled in other
>>> editors.
>> 
>> You're right that this is a problem everyone should be hitting.
> 
> Maybe there's a way around it. The only way is to reach out to other
> projects using the library or upstream.

Nvim vendors grammars, it also has a “database” repo that pins grammars (https://github.com/nvim-treesitter/nvim-treesitter), that repo also provides a command to install grammars.

IIUC Pulsar (community-supported Atom successor) vendors grammars too, because that’s what Atom did originally.

Helix I think only provide a command to install grammars (plus their database pinning grammar versions).

For context, Emacs also has a command to install grammars, but we don’t provide a database nor version pinning.

Nvim and Pulsar have plans to move towards using wasm grammars. Tree-sitter recently gained the ability to compile grammars into wasm object files and load wasm grammars. Pulsar is built on electron so naturally has access to wasm, nvim is adding a wasm runtime as an optional dependency.

Yuan


  parent reply	other threads:[~2024-12-30  0:56 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-20 15:13 My resignation from Emacs development Alan Mackenzie
2024-11-20 15:34 ` Eli Zaretskii
2024-11-20 16:23 ` Christopher Dimech
2024-11-21  6:22   ` Gerd Möllmann
2024-11-21 10:05     ` Christopher Dimech
2024-11-21 11:23       ` Gerd Möllmann
2024-11-21 11:40         ` Eli Zaretskii
2024-11-21 10:29   ` Alan Mackenzie
2024-11-21 12:26     ` Christopher Dimech
2024-11-20 16:42 ` Alfred M. Szmidt
2024-11-20 17:04 ` tomas
2024-11-20 21:56 ` Dmitry Gutov
2024-11-21  2:28 ` Stefan Kangas
2024-11-21 12:34   ` Tree-sitter maturity (was: My resignation from Emacs development) Peter Oliver
2024-11-23 13:41     ` Stefan Kangas
2024-11-24  2:10     ` Tree-sitter maturity Björn Bidar
     [not found]     ` <67428b3d.c80a0220.2f3036.adbdSMTPIN_ADDED_BROKEN@mx.google.com>
2024-12-17 22:11       ` Yuan Fu
2024-12-18 13:34         ` Eli Zaretskii
2024-12-19  1:40           ` Yuan Fu
2024-12-19  8:17             ` Eli Zaretskii
2024-12-20  9:13             ` Björn Bidar
     [not found]             ` <6765355b.c80a0220.1a6b24.3117SMTPIN_ADDED_BROKEN@mx.google.com>
2024-12-20  9:29               ` Yuan Fu
2024-12-23  0:43                 ` Björn Bidar
     [not found]                 ` <6768b256.c80a0220.222b1b.64e6SMTPIN_ADDED_BROKEN@mx.google.com>
2024-12-24  1:20                   ` Yuan Fu
     [not found]                 ` <87frmfxm8y.fsf@>
2024-12-24  4:52                   ` Richard Stallman
2024-12-24 12:32                     ` Eli Zaretskii
2024-12-24 21:31                       ` Xiyue Deng
2024-12-26  4:30                         ` Richard Stallman
2024-12-27 10:54                           ` Philip Kaludercic
2024-12-27 12:40                             ` Eli Zaretskii
2024-12-27 13:46                               ` Daniel Colascione
2024-12-27 14:19                                 ` Philip Kaludercic
2024-12-27 14:24                                   ` Daniel Colascione
2024-12-27 14:57                                     ` Philip Kaludercic
2024-12-27 15:02                                       ` Philip Kaludercic
2024-12-29  4:19                                         ` Richard Stallman
2024-12-29  4:23                                           ` Daniel Colascione
2024-12-29  7:44                                             ` Eli Zaretskii
2024-12-29  8:01                                               ` Daniel Colascione
2024-12-29  8:41                                                 ` Eli Zaretskii
2024-12-29  8:59                                                   ` Yuan Fu
2024-12-29  9:14                                                     ` Daniel Colascione
2024-12-29  9:24                                                       ` Eli Zaretskii
2024-12-29 10:01                                                         ` Daniel Colascione
2024-12-29 13:35                                                           ` Eli Zaretskii
2024-12-29 20:12                                                             ` Daniel Colascione
2024-12-29 10:13                                                       ` tomas
2024-12-29 10:21                                                       ` Yuan Fu
2024-12-29 14:59                                                         ` Daniel Colascione
2024-12-29 14:14                                                       ` Dmitry Gutov
2024-12-29  7:26                                           ` Eli Zaretskii
     [not found]                                         ` <904957B9-55C1-42DF-BE6A-16986A4B539A@dancol.org>
     [not found]                                           ` <87r05o2eji.fsf@posteo.net>
     [not found]                                             ` <E2C32D27-EEC2-4DD2-B6F6-8827820B880E@dancol.org>
2024-12-31 16:47                                               ` Philip Kaludercic
2024-12-29 14:36                                     ` Lynn Winebarger
2024-12-29 20:36                                       ` Daniel Colascione
2024-12-29 23:29                                         ` Björn Bidar
     [not found]                                         ` <6771db94.050a0220.386e00.e451SMTPIN_ADDED_BROKEN@mx.google.com>
2024-12-30  0:30                                           ` Yuan Fu
2024-12-30  0:36                                             ` Daniel Colascione
2024-12-30  1:00                                               ` Yuan Fu
2024-12-31  9:48                                               ` Philip Kaludercic
2024-12-30  3:20                                             ` Lynn Winebarger
2024-12-31  3:22                                             ` Björn Bidar
2024-12-31 22:29                                         ` Lynn Winebarger
2025-01-01 20:23                                           ` Björn Bidar
2024-12-28 12:20                                   ` Peter Oliver
2024-12-28 12:23                                     ` Philip Kaludercic
2024-12-29 14:50                                     ` Björn Bidar
2024-12-27 14:59                                 ` Eli Zaretskii
2024-12-27 15:05                                   ` Daniel Colascione
2024-12-27 15:31                                     ` Eli Zaretskii
2024-12-27 15:37                                       ` Daniel Colascione
2024-12-28  1:08                                       ` Stefan Kangas
2024-12-29  4:19                                         ` Richard Stallman
2024-12-29  4:21                                           ` Daniel Colascione
2024-12-29  6:41                                             ` tomas
2024-12-29  6:43                                               ` Daniel Colascione
2024-12-29  6:54                                                 ` tomas
2024-12-29  7:05                                                   ` Daniel Colascione
2024-12-29  8:56                                                     ` tomas
2024-12-29 15:16                                                   ` Björn Bidar
2024-12-29 15:05                                     ` Björn Bidar
     [not found]                                     ` <87ed1qedhl.fsf@>
2024-12-29 15:21                                       ` Daniel Colascione
2024-12-29 16:02                                         ` Björn Bidar
     [not found]                                         ` <663726A2-141B-4B98-80FB-BD93E99AC122@dancol.org>
2024-12-29 19:06                                           ` Björn Bidar
     [not found]                                           ` <6771d84b.050a0220.250914.d0e0SMTPIN_ADDED_BROKEN@mx.google.com>
2024-12-30  0:56                                             ` Yuan Fu [this message]
2024-12-27 14:11                               ` Philip Kaludercic
2024-12-27 15:06                                 ` Eli Zaretskii
2024-12-31 13:47                                   ` Philip Kaludercic
2024-12-27 18:29                               ` Ihor Radchenko
2024-12-28  7:55                                 ` Eli Zaretskii
2024-12-28  8:11                                   ` Ihor Radchenko
2024-12-28  8:58                                     ` Eli Zaretskii
2024-12-29 15:09                           ` Björn Bidar
2024-12-26  4:32                       ` Richard Stallman
2024-12-26  7:12                         ` Eli Zaretskii
2024-12-29 14:35                         ` Björn Bidar
2024-12-19 12:23           ` Peter Oliver
2024-12-19 12:42             ` Eli Zaretskii
2024-12-19 13:15             ` Vincenzo Pupillo
2024-12-20  8:59           ` Björn Bidar
2024-11-21 13:01   ` My resignation from Emacs development Alan Mackenzie
2024-11-21 13:48     ` Eli Zaretskii
2024-11-21 14:29       ` Alfred M. Szmidt
2024-11-22  0:01         ` Po Lu
2024-11-22  7:03           ` Eli Zaretskii
2024-11-22  8:14             ` Robert Pluim
2024-11-22  8:32               ` Eli Zaretskii
2024-11-22 23:59               ` Po Lu
2024-11-23  6:39                 ` Eli Zaretskii
2024-11-21 16:29       ` Alan Mackenzie
2024-11-22  5:35     ` Adam Porter
2024-11-22  7:24       ` Madhu
2024-11-22  8:11         ` Eli Zaretskii
2024-11-22  9:26           ` Madhu
2024-11-22 12:07             ` Eli Zaretskii
2024-11-22 12:40           ` Stefan Kangas
2024-11-22 13:06           ` Alan Mackenzie
2024-11-22 13:39             ` Stefan Kangas
2024-11-22 14:25             ` Eli Zaretskii
2024-11-25  4:28             ` Richard Stallman
2024-11-26 17:37               ` Alan Mackenzie
2024-12-13  4:35                 ` Richard Stallman
2024-12-15 15:27                   ` Alan Mackenzie
2024-12-15 15:48                     ` Eli Zaretskii
2024-12-15 20:43                       ` Alan Mackenzie
2024-12-19  4:22                     ` Richard Stallman
2024-12-19  8:26                       ` Eli Zaretskii
2024-11-23 22:18           ` Andrea Corallo
2024-11-22 10:57       ` Alan Mackenzie
2024-11-22 23:19         ` Adam Porter
2024-11-26 19:01       ` Daniel Radetsky
2024-11-26 19:51         ` Christopher Dimech
2024-11-27  2:18           ` Adam Porter
2024-11-27  9:36             ` Daniel Radetsky
2024-11-27  9:59             ` Christopher Dimech
2024-11-30  3:52             ` Richard Stallman
2024-11-30  7:53               ` Eli Zaretskii
2024-11-30 16:22                 ` Discuss new features/enhancements or large changes for users in emacs-devel [was: My resignation from Emacs development] Drew Adams
2024-11-30 16:56                   ` Eli Zaretskii
2024-11-30 21:06                     ` [External] : " Drew Adams
2024-12-01  6:00                       ` Eli Zaretskii
2024-12-03  7:26                 ` My resignation from Emacs development Richard Stallman
2024-12-03 13:33                   ` Eli Zaretskii
2024-11-30 16:21               ` Discuss new features/enhancements or large changes for users in emacs-devel [was My resignation from Emacs development] Drew Adams
2024-11-30 17:05                 ` Eli Zaretskii
2024-11-30 21:09                   ` [External] : " Drew Adams
2024-12-01  6:12                     ` Eli Zaretskii
2024-12-01 19:23                       ` Drew Adams
2024-12-03  7:25                   ` Richard Stallman
2024-12-03 13:32                     ` Eli Zaretskii
2024-12-06  4:48                       ` Richard Stallman
2024-12-02  4:09                 ` Richard Stallman
2024-12-02 13:04                   ` Discuss new features/enhancements or large changes for users in emacs-devel Eli Zaretskii
2024-12-02 15:32                     ` [External] : " Drew Adams
2024-12-05  5:08                     ` Richard Stallman
2024-12-05  6:33                       ` Eli Zaretskii
2024-12-02 15:29                   ` [External] : Re: Discuss new features/enhancements or large changes for users in emacs-devel [was My resignation from Emacs development] Drew Adams
2024-11-27  2:06         ` My resignation from Emacs development Adam Porter
2024-11-27  9:17           ` Daniel Radetsky
2024-11-22 15:36     ` Stefan Kangas
2024-11-22 17:48       ` Alan Mackenzie
2024-11-23 23:43     ` Stefan Monnier via Emacs development discussions.
2024-11-23  6:10   ` Richard Stallman
2024-11-23  7:48     ` Eli Zaretskii
2024-11-23 11:06       ` Christopher Dimech
2024-11-23 11:54         ` Eli Zaretskii
2024-11-23 12:48           ` Christopher Dimech
2024-11-23 23:59       ` Adam Porter
2024-12-01  3:50         ` Sean Whitton
2024-12-01  6:19           ` tomas
2024-11-24 18:12     ` Suhail Singh
2024-11-26  4:56       ` Richard Stallman
2024-11-26  7:38         ` Suhail Singh
2024-11-21  5:59 ` Gerd Möllmann
2024-11-22 11:36   ` Alan Mackenzie
2024-11-22 11:52     ` Eli Zaretskii
2024-11-23 10:36       ` Alan Mackenzie
2024-11-23 11:31         ` Eli Zaretskii
2024-11-21 13:39 ` Andrea Corallo
2024-11-21 19:01   ` Alfred M. Szmidt
2024-11-21 19:19     ` Christopher Dimech
2024-11-21 19:47     ` Eli Zaretskii
2024-11-21 19:40 ` Jim Porter
2024-11-24  4:35   ` Richard Stallman
2024-11-21 23:57 ` Po Lu
2024-11-22 17:26 ` On committing significant and/or controversial changes (was: My resignation from Emacs development) Ihor Radchenko
2024-11-22 17:47   ` Ship Mints
2024-11-22 19:04     ` Eli Zaretskii
2024-11-24  2:35       ` On committing significant and/or controversial changes Björn Bidar
2024-11-24  4:41         ` Adam Porter
2024-11-30  2:16           ` Björn Bidar
     [not found]       ` <87ttbx73zu.fsf@>
2024-11-24  8:26         ` Eli Zaretskii
2024-11-22 19:01   ` Eli Zaretskii
2024-11-23  6:10 ` My resignation from Emacs development Richard Stallman
2024-11-23  8:50   ` Eli Zaretskii
2024-11-23  6:10 ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=A7FAFDE2-9653-418B-BB37-16A632D352C1@gmail.com \
    --to=casouri@gmail.com \
    --cc=bjorn.bidar@thaodan.de \
    --cc=dancol@dancol.org \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).