emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] org-caldav can't find org-prepare-agenda-buffers


From: David Engster
Subject: Re: [O] org-caldav can't find org-prepare-agenda-buffers
Date: Thu, 28 Feb 2013 17:17:05 +0100
User-agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2.93 (gnu/linux)

Bastien writes:
> David Engster <address@hidden> writes:
>
>> Of course I can fix this. But I hope you realize that any third-party
>> code out there that requires an exporter will load the old one from
>> Emacs proper. 
>
> Yes, I'm well aware of this.  The change now lives in the master
> branch, and will happen when we release 8.0, hopefully in a not so
> distant future.
>
> We will document all incompatible changes in the release notes, as we
> usually do.  I expect third-party maintainers to read these notes.

Well, I don't expect it.

>> I'm wondering why you felt the need to rename them. If the
>> new exporters are compatible with the old ones, why not keep the names?
>> This would also avoid that the provided feature differs from the used
>> name prefix (ox-icalendar != org-icalendar).
>
> There are several good reasons for this:
>
> 1) conflicting library names: we now have org-man.el (for links to man
>    pages) and ox-man.el (for exporting);
>
> 2) using the dedicated prefix ox- makes it clear that the library is
>    an export backend, the same way that the ob- prefix makes it clear
>    it is to support a language for Org Babel.
>
> In general, the change is incompatible for third-part libraries by is 
> clearly useful for future maintainance, so the trade-off was in favor
> of making it, and 8.0 is a good time for it.

I'm afraid I remain unconvinced. 1) is just one name clash, so just
rename one of it. Also, like all the other ox-* packages now, ox-man
uses 'org-man' as a prefix for its names; what will 'org-man' use, then?

2) is nice, but IMO not a good enough reason to break compatibility in
such a major way.

Anyway, you've made a decision and did the rename. Let's just agree to
disagree here.

The most serious issue is that things will often seem to work because
old exporters are pulled in from Emacs, possibly *very* old
exporters. They might work, or they might fail for various reasons,
making it difficult for users and developers to see what went wrong.
Just look at the other bug report by Karl Voit from yesterday; I guess
it's the same issue.

So if you change your API in an incompatible way (and packages names are
part of that), you should at least throw a clear error when the old API
is used, and tell the user what happened and how it can be fixed. Hence
I would suggest to use something like

(eval-after-load "org-icalendar"
  '(error "The old org-icalendar exporter is deprecated; use ox-icalendar 
instead."))

An alternative would be to remove the bundled Org from load-path when a
newer version is loaded. We do that with CEDET, but it is difficult to
do right (because of autoloading, for instance), so I think the
eval-after-load hack is better.

-David



reply via email to

[Prev in Thread] Current Thread [Next in Thread]