tedroden / textexpander-sync-el

Import your textexpander abberviations into emacs (abbrev-mode to be precise)
12 stars 3 forks source link

Please stop bundling third-party libraries #1

Closed tarsius closed 9 years ago

tarsius commented 11 years ago

textexpander-sync is mirrored on the Emacsmirror, which is a large up-to-date collection of Emacs packages.

As the maintainer of the mirror I am trying to resolve feature conflicts that result from one package bundling libraries from another package. I suspect in most cases these libraries were included so that users would not have to find, download and install each dependency manually.

Unfortunately bundling also has negative side-effects: if the bundled libraries are also installed separately, then it is undefined which version actually gets loaded when the respective feature is required.

Initially that isn't a big problem but in many cases upstream changes are not included or only after a long delay. This can be very confusing for users who are not aware that some of the installed packages bundle libraries which are also installed separately. In other cases bugs are fixed in the bundled versions but the fixes are never submitted to upstream.

Also now that Emacs contains the package.el package manager there is a better way to not require users to manually deal with dependencies: add the package (and when that hasn't been done yet the dependencies) to the Melpa package repository. If make is required to install your make you might want to add it to the el-get (another popular package manager) package repository instead.

Alternatively if you want to keep bundling these libraries please move them to a directory only containing bundled libraries and add the file ".nosearch" to that directory. You can then load the library using something like this:

(or (require 'bundled nil t)
    (let ((load-path
           (cons (expand-file-name "fallback-libs"
                                   (or load-file-name buffer-file-name)
                                   load-path))))
      (require 'bundled)))

Of course if your version differs from the upstream version this might not be enough in which case you should make an effort to get your changes merged upstream.

textexpander-sync bundles at least the following libraries:

Best regards, Jonas

tedroden commented 11 years ago

Thanks. Care to submit a patch?

On Jan 27, 2013, at 11:37 AM, Jonas Bernoulli notifications@github.com wrote:

textexpander-sync is mirrored on the Emacsmirror, which is a large up-to-date collection of Emacs packages.

As the maintainer of the mirror I am trying to resolve feature conflicts that result from one package bundling libraries from another package. I suspect in most cases these libraries were included so that users would not have to find, download and install each dependency manually.

Unfortunately bundling also has negative side-effects: if the bundled libraries are also installed separately, then it is undefined which version actually gets loaded when the respective feature is required.

Initially that isn't a big problem but in many cases upstream changes are not included or only after a long delay. This can be very confusing for users who are not aware that some of the installed packages bundle libraries which are also installed separately. In other cases bugs are fixed in the bundled versions but the fixes are never submitted to upstream.

Also now that Emacs contains the package.el package manager there is a better way to not require users to manually deal with dependencies: add the package (and when that hasn't been done yet the dependencies) to the Melpa package repository. If make is required to install your make you might want to add it to the el-get (another popular package manager) package repository instead.

Alternatively if you want to keep bundling these libraries please move them to a directory only containing bundled libraries and add the file ".nosearch" to that directory. You can then load the library using something like this:

(or (require 'bundled nil t) (let ((load-path (cons (expand-file-name "fallback-libs" (or load-file-name buffer-file-name) load-path)))) (require 'bundled))) Of course if your version differs from the upstream version this might not be enough in which case you should make an effort to get your changes merged upstream.

textexpander-sync bundles at least the following libraries:

osx-plist Best regards, Jonas

— Reply to this email directly or view it on GitHub.

tarsius commented 11 years ago

Sure. The reason I did not do so in the first place is that I don't know whether you prefer (a) removing the library altogether (that's what I strongly prefer) or (b) want to do the fallback-library-dance. Which should it be? :-)

tarsius commented 11 years ago

See #2

tedroden commented 9 years ago

You fixed this: https://github.com/tedroden/textexpander-sync-el/pull/2

Thanks!