* [ELPA] New package: ob-haxe @ 2021-01-16 12:48 ian martins 2021-01-17 22:41 ` Stefan Monnier 0 siblings, 1 reply; 12+ messages in thread From: ian martins @ 2021-01-16 12:48 UTC (permalink / raw) To: emacs-devel Hello. I'd like ob-haxe [1] to be added to gnu elpa. It is an org-babel integration for the haxe programming language [2]. I don't have push access to ELPA. [1] https://github.com/ianxm/ob-haxe.el [2] https://haxe.org ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-16 12:48 [ELPA] New package: ob-haxe ian martins @ 2021-01-17 22:41 ` Stefan Monnier 2021-01-18 3:35 ` ian martins 2021-01-18 6:27 ` ASSI 0 siblings, 2 replies; 12+ messages in thread From: Stefan Monnier @ 2021-01-17 22:41 UTC (permalink / raw) To: ian martins; +Cc: emacs-devel Hi Ian, > Hello. I'd like ob-haxe [1] to be added to gnu elpa. It is an > org-babel integration for the haxe programming language [2]. I don't > have push access to ELPA. I'd be happy to do that, but just to be sure, I'd like to understand something first. AFAICT, all other `ob-<LANG>.el` files are currently bundled with Org. Personally, I'd tend to consider that the language-specific info for org-babel should belong with the major mode (just like the language-specific support for indentation, highlighting, flymake, imenu, etc.. belong to it). [ Side note: I'm not sufficiently familiar with org-babel to know if bundling the info with the major mode is currently technically realistic. ] So based on the above, I'd expect `ob-haxe` to be distributed either with Org or with `haxe-mode` rather than separately. What do you (and the Org maintainers and the haxe-mode maintainers) think? Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-17 22:41 ` Stefan Monnier @ 2021-01-18 3:35 ` ian martins 2021-01-18 16:31 ` Stefan Monnier 2021-01-18 6:27 ` ASSI 1 sibling, 1 reply; 12+ messages in thread From: ian martins @ 2021-01-18 3:35 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel On Sun, Jan 17, 2021 at 5:41 PM Stefan Monnier <monnier@iro.umontreal.ca> wrote: > > Hello. I'd like ob-haxe [1] to be added to gnu elpa. It is an > > org-babel integration for the haxe programming language [2]. I don't > > have push access to ELPA. > > I'd be happy to do that, but just to be sure, I'd like to understand > something first. AFAICT, all other `ob-<LANG>.el` files are currently > bundled with Org. Thanks for responding. No, actually there are many that are maintained outside of Org. If you search github for "org babel" some will come up. I see 46 packages that start with "ob-" in my `list-packages'. Of the ones that are bundled with Org, there are some that are considered "core" and others that are "contrib." I offered ob-haxe on the Org list and the maintainers said they didn't think it was appropriate for core and also that they were moving to shift more of the "contrib" language integrations out of the Org repo and into separate packages and suggested GNU ELPA for this. > Personally, I'd tend to consider that the > language-specific info for org-babel should belong with the major mode > (just like the language-specific support for indentation, highlighting, > flymake, imenu, etc.. belong to it). > [ Side note: I'm not sufficiently familiar with org-babel to know if > bundling the info with the major mode is currently technically > realistic. ] I don't know if there's a technical problem with that approach, but I'm not aware of any case where it's done that way. All of the Org Babel language integrations I've seen have been bundled with Org or distributed as a separate package. I wasn't aware that usually language major modes came with more than indentation and highlighting. If there's more than one package to choose from for a language's major mode, would the Org Babel functions have to be included in both of them? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-18 3:35 ` ian martins @ 2021-01-18 16:31 ` Stefan Monnier 2021-01-19 5:30 ` Richard Stallman 2021-01-19 14:28 ` ian martins 0 siblings, 2 replies; 12+ messages in thread From: Stefan Monnier @ 2021-01-18 16:31 UTC (permalink / raw) To: ian martins; +Cc: emacs-devel >> I'd be happy to do that, but just to be sure, I'd like to understand >> something first. AFAICT, all other `ob-<LANG>.el` files are currently >> bundled with Org. > > Thanks for responding. No, actually there are many that are maintained > outside of Org. If you search github for "org babel" some will come > up. I see 46 packages that start with "ob-" in my `list-packages'. > > Of the ones that are bundled with Org, there are some that are > considered "core" and others that are "contrib." I offered ob-haxe on > the Org list and the maintainers said they didn't think it was > appropriate for core and also that they were moving to shift more of > the "contrib" language integrations out of the Org repo and into > separate packages and suggested GNU ELPA for this. Good, thanks. >> Personally, I'd tend to consider that the >> language-specific info for org-babel should belong with the major mode >> (just like the language-specific support for indentation, highlighting, >> flymake, imenu, etc.. belong to it). >> [ Side note: I'm not sufficiently familiar with org-babel to know if >> bundling the info with the major mode is currently technically >> realistic. ] > > I don't know if there's a technical problem with that approach, but > I'm not aware of any case where it's done that way. All of the Org > Babel language integrations I've seen have been bundled with Org or > distributed as a separate package. > > I wasn't aware that usually language major modes came with more than > indentation and highlighting. Historically, major modes came with very little support, and over time this set of supported facilities grows. E.g. font-lock came with its own support for some major modes, and then it quickly became clear that font-lock support for a particular language is better placed in the major mode than in font-lock.el. The same applies to most other such features: it's impractical for flymake/flycheck/company/org-babel/... to come with support for all languages, but it's also inconvenient for the user to have to install FOO ob-FOO company-FOO flymake-FOO younameit-FOO before Emacs provides adequate support for the language FOO. So as much as possible, I think it makes sense to include those things along with the language's major mode. > If there's more than one package to choose from for a language's major > mode, would the Org Babel functions have to be included in both of > them? Good question. As a general rule "more than one package to choose from for a language's major mode" is itself a problem (especially because more often than not, it means none of the options are really maintained and the choice is really between different sets of shortcomings). So, IIUC you're saying that there is no main `haxe-mode` anyway into which we could integrate `ob-haxe`? If so, and since Org doesn't want it, we should add it as a separate package, indeed. [ Side note: if noone has come up to develop&maintain "the one and only" haxe-mode (which combines the good parts of the existing haxe modes), would you be willing to do that? ] Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-18 16:31 ` Stefan Monnier @ 2021-01-19 5:30 ` Richard Stallman 2021-01-19 14:19 ` Stefan Monnier 2021-01-19 14:28 ` ian martins 1 sibling, 1 reply; 12+ messages in thread From: Richard Stallman @ 2021-01-19 5:30 UTC (permalink / raw) To: Stefan Monnier; +Cc: ianxm, emacs-devel [[[ 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. ]]] Before we install ob-haxe, how about giving it a longer name that more clearly suggests what it does? -- Dr Richard Stallman Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-19 5:30 ` Richard Stallman @ 2021-01-19 14:19 ` Stefan Monnier 0 siblings, 0 replies; 12+ messages in thread From: Stefan Monnier @ 2021-01-19 14:19 UTC (permalink / raw) To: Richard Stallman; +Cc: ianxm, emacs-devel > Before we install ob-haxe, how about giving it a longer name > that more clearly suggests what it does? Note a chance. `ob-[LANGUAGE]` is the standard name used for that. Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-18 16:31 ` Stefan Monnier 2021-01-19 5:30 ` Richard Stallman @ 2021-01-19 14:28 ` ian martins 2021-01-19 15:15 ` Stefan Monnier 1 sibling, 1 reply; 12+ messages in thread From: ian martins @ 2021-01-19 14:28 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel > it's impractical for > flymake/flycheck/company/org-babel/... to come with support for all > languages, but it's also inconvenient for the user to have to install > > FOO > ob-FOO > company-FOO > flymake-FOO > younameit-FOO > > before Emacs provides adequate support for the language FOO. So as much > as possible, I think it makes sense to include those things along with > the language's major mode. This makes sense to me, but I don't see why the solution has to be to combine them all into a single package. If putting everything related to flymake doesn't work, couldn't the same problems arise if we clump together everything related to a language? It's the same solution (partitioning functionality into packages based on relatedness), but now we're slicing it on a different axis [language] than before [feature]. I may be missing the main issue, but suspect the problem with keeping all languages in flymake is that users don't want to install flymake implementations for languages they don't use and maintainers don't want to maintain code they aren't familiar with. Both of these problems would apply to major modes that include everything related to that language. There are probably many people who use haxe but don't use Org. Another option is to have small packages with specific functions, and use dependencies to build up larger chunks of functionality. Would it solve the problem if we had a haxe-bundle package with dependencies on haxe-mode and ob-haxe? Then users only have to find one package to install all haxe functionality if they want it, but if they don't want it all they can pick individual packages instead. Also that way all of the code is maintained by those who know it best. Also, parent packages can be created today to encompass existing languages relatively easily, but merging all of the existing packages for each language together into major modes would be a large effort and significant disruption to those projects. > > If there's more than one package to choose from for a language's major > > mode, would the Org Babel functions have to be included in both of > > them? > > Good question. As a general rule "more than one package to choose from > for a language's major mode" is itself a problem (especially because > more often than not, it means none of the options are really maintained > and the choice is really between different sets of shortcomings). I'm not sure about this rule. How can we know that two competing packages won't be maintained? Doesn't it depend on relative interest and the size of the community using them? Even if competing packages don't co-exist for long, there can be some time after someone clones a package to try it another way and the community has two options. If someone cloned haxe-mode and it included ob-haxe, then for as long as they both existed, updates to ob-haxe would have to be pushed to both haxe-modes. > So, IIUC you're saying that there is no main `haxe-mode` anyway into > which we could integrate `ob-haxe`? If so, and since Org doesn't want > it, we should add it as a separate package, indeed. No, sorry, I was asking hypothetically. Actually I think there were multiple haxe major modes at one point but I checked yesterday and saw only one (there are a couple other haxe packages, but just one major mode). I asked because if ob-haxe should be a separate package in this case, then should we follow that pattern in the general case, since any major mode can have two packages at some point in time? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-19 14:28 ` ian martins @ 2021-01-19 15:15 ` Stefan Monnier 2021-01-20 3:25 ` ian martins 0 siblings, 1 reply; 12+ messages in thread From: Stefan Monnier @ 2021-01-19 15:15 UTC (permalink / raw) To: ian martins; +Cc: emacs-devel >> it's impractical for >> flymake/flycheck/company/org-babel/... to come with support for all >> languages, but it's also inconvenient for the user to have to install >> >> FOO >> ob-FOO >> company-FOO >> flymake-FOO >> younameit-FOO >> >> before Emacs provides adequate support for the language FOO. So as much >> as possible, I think it makes sense to include those things along with >> the language's major mode. > > This makes sense to me, but I don't see why the solution has to be to > combine them all into a single package. > > If putting everything related to flymake doesn't work, couldn't the > same problems arise if we clump together everything related to > a language? In theory, yes. > It's the same solution (partitioning functionality into packages based > on relatedness), but now we're slicing it on a different axis > [language] than before [feature]. Indeed. In practice it tends to work much better, but there's no guarantee: one size never fits all. > I may be missing the main issue, but suspect the problem with keeping > all languages in flymake is that users don't want to install flymake > implementations for languages they don't use and maintainers don't > want to maintain code they aren't familiar with. Not only that. Typically, the code that provides flymake support for a given language will need to know something about that language and some of that info is also needed in the major-mode (e.g. the name of the compiler), so the two will usually want to share some defconst/defcustom, but you can't have flymake *depend* on all those major modes, so you typically end up with duplication. > Both of these problems would apply to major modes that include > everything related to that language. I think part of the reason why the tradeoffs are different is that the number of "infrastructure" packages (font-lock, imenu, flymake, company, eglot, org-babel, smie, ...) tends to be much smaller and grow much less frequently than the number of languages. > Another option is to have small packages with specific functions, and > use dependencies to build up larger chunks of functionality. Of course. > Would it solve the problem if we had a haxe-bundle package with > dependencies on haxe-mode and ob-haxe? I don't think there's really a problem to solve, really. > Then users only have to find one package to install all haxe > functionality if they want it, but if they don't want it all they can > pick individual packages instead. If there is an actual choice for the user, that's good. But if the choice is only "include org-babel support or not" then I think this is actually detrimental for the user: the gain of not having org-babel support for those users not using org-babel *should* be negligible (i.e. it should not incur extra dependencies and the increase in size should be irrelevant). > Also that way all of the code is maintained by those who know it best. > Also, parent packages can be created today to encompass existing > languages relatively easily, but merging all of the existing packages > for each language together into major modes would be a large effort > and significant disruption to those projects. Nobody is forcing them to be merged. I'm just saying that history tells us that they tend to merge that way, and that it's usually a good thing both for the users and for technical reasons. So we may as well consciously move in that direction whenever convenient. >> Good question. As a general rule "more than one package to choose from >> for a language's major mode" is itself a problem (especially because >> more often than not, it means none of the options are really maintained >> and the choice is really between different sets of shortcomings). > I'm not sure about this rule. I am. > How can we know that two competing packages won't be maintained? We don't (and nowhere did I say that we do). >> So, IIUC you're saying that there is no main `haxe-mode` anyway into >> which we could integrate `ob-haxe`? If so, and since Org doesn't want >> it, we should add it as a separate package, indeed. > No, sorry, I was asking hypothetically. Actually I think there were > multiple haxe major modes at one point but I checked yesterday and saw > only one (there are a couple other haxe packages, but just one major > mode). Good. Then I think it would be good to try and work with the major-mode's maintainer and merge the two packages. In the mean time, I'll do the initial addition of `ob-haxe` to GNU ELPA. Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-19 15:15 ` Stefan Monnier @ 2021-01-20 3:25 ` ian martins 2021-01-20 4:01 ` Stefan Monnier 0 siblings, 1 reply; 12+ messages in thread From: ian martins @ 2021-01-20 3:25 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel > > I may be missing the main issue, but suspect the problem with keeping > > all languages in flymake is that users don't want to install flymake > > implementations for languages they don't use and maintainers don't > > want to maintain code they aren't familiar with. > > Not only that. Typically, the code that provides flymake support for > a given language will need to know something about that language and > some of that info is also needed in the major-mode (e.g. the name of the > compiler), so the two will usually want to share some > defconst/defcustom, but you can't have flymake *depend* on all those > major modes, so you typically end up with duplication. That makes sense. Where there is shared code or variables it makes sense to keep the implementations together. For the ob-haxe and haxe-mode case the implementations are independent of each other. I guess if haxe had a flymake integration it would want to share the compiler name variable with ob-haxe, though. > > Both of these problems would apply to major modes that include > > everything related to that language. > > I think part of the reason why the tradeoffs are different is that the > number of "infrastructure" packages (font-lock, imenu, flymake, company, > eglot, org-babel, smie, ...) tends to be much smaller and grow much less > frequently than the number of languages. That's a good point. > Nobody is forcing them to be merged. I'm just saying that history tells > us that they tend to merge that way, and that it's usually a good thing > both for the users and for technical reasons. So we may as well > consciously move in that direction whenever convenient. > ... > Good. Then I think it would be good to try and work with the > major-mode's maintainer and merge the two packages. I am not yet convinced of it, smaller packages and dependencies seem neater and more flexible to me. But as you say, history tells us that is what tends to happen, so maybe it will be. Do you think it would be better to merge the packages or just add a dependency from haxe-mode to ob-haxe? Does it make a difference? > In the mean time, I'll do the initial addition of `ob-haxe` to GNU ELPA. Thank you. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-20 3:25 ` ian martins @ 2021-01-20 4:01 ` Stefan Monnier 0 siblings, 0 replies; 12+ messages in thread From: Stefan Monnier @ 2021-01-20 4:01 UTC (permalink / raw) To: ian martins; +Cc: emacs-devel > That makes sense. Where there is shared code or variables it makes > sense to keep the implementations together. For the ob-haxe and > haxe-mode case the implementations are independent of each other. That's inevitably the case, given that they were developed separately. > I guess if haxe had a flymake integration it would want to share the > compiler name variable with ob-haxe, though. Yup, same thing if there was a REPL with an inferior-haxe-mode. > Do you think it would be better to merge the packages or just add a > dependency from haxe-mode to ob-haxe? Does it make a difference? The difference is the ease with which the two parts can share code. Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-17 22:41 ` Stefan Monnier 2021-01-18 3:35 ` ian martins @ 2021-01-18 6:27 ` ASSI 2021-01-18 16:32 ` Stefan Monnier 1 sibling, 1 reply; 12+ messages in thread From: ASSI @ 2021-01-18 6:27 UTC (permalink / raw) To: Stefan Monnier; +Cc: ian martins, emacs-devel Stefan Monnier writes: > I'd be happy to do that, but just to be sure, I'd like to understand > something first. AFAICT, all other `ob-<LANG>.el` files are currently > bundled with Org. They aren't, there's quite a bunch of them that aren't properly inside Org and of those that are, just a selected set is in Org core (only those should be in Emacs by default). The reasons are diverse, but for a package to considered for core it must have copyright assigned to FSF, suppport the complete feature set as far as the underlying language or interpreter allows for it (i.e. session mode) and have an active maintainer (Bastien or Nicolas can give you the "official" line on that). Secondary considerations are how common the language supported really is and what it takes to set up an environment where you can actually run tests. > Personally, I'd tend to consider that the > language-specific info for org-babel should belong with the major mode > (just like the language-specific support for indentation, highlighting, > flymake, imenu, etc.. belong to it). > [ Side note: I'm not sufficiently familiar with org-babel to know if > bundling the info with the major mode is currently technically > realistic. ] Let's put it this way: I haven't seen any major mode that does that so far. I think the idea merits consideration, but as long as nobody tries we don't really know what the pitfalls are. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Waldorf MIDI Implementation & additional documentation: http://Synth.Stromeko.net/Downloads.html#WaldorfDocs ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ELPA] New package: ob-haxe 2021-01-18 6:27 ` ASSI @ 2021-01-18 16:32 ` Stefan Monnier 0 siblings, 0 replies; 12+ messages in thread From: Stefan Monnier @ 2021-01-18 16:32 UTC (permalink / raw) To: ASSI; +Cc: ian martins, emacs-devel > Let's put it this way: I haven't seen any major mode that does that so > far. I think the idea merits consideration, but as long as nobody tries > we don't really know what the pitfalls are. Someone has to be the first. Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2021-01-20 4:01 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-01-16 12:48 [ELPA] New package: ob-haxe ian martins 2021-01-17 22:41 ` Stefan Monnier 2021-01-18 3:35 ` ian martins 2021-01-18 16:31 ` Stefan Monnier 2021-01-19 5:30 ` Richard Stallman 2021-01-19 14:19 ` Stefan Monnier 2021-01-19 14:28 ` ian martins 2021-01-19 15:15 ` Stefan Monnier 2021-01-20 3:25 ` ian martins 2021-01-20 4:01 ` Stefan Monnier 2021-01-18 6:27 ` ASSI 2021-01-18 16:32 ` Stefan Monnier
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).