On 10/28/2015 03:52 PM, Scott Kostyshak wrote:

It seems there are a few different ideas. Let me see if I can summarize
them:

1. A layout change can be made if it is supported by the current release
of TeX Live and the previous release. This rule can be less strict if
the only change is an added style (so that compilation will not be
broken for older documents). Should we further define "less strict" by
saying that in this case the layout change can be made if it is
supported by the current release of TeX Live ?

If we support the added style, then users who both use that style and use an older version of the package will have non-compilable documents. So you could have a document that worked perfectly well, you make one change---use the new style---and now it won't compile. What follows is a frustrated message to the user list.

This is the basic problem: The fact that a new style has been added won't break compilation of existing documents, but it invites users to create documents that don't compile. There is no easy solution to this, short of somehow making what styles are available depend upon the package. Longer term, I think that is clearly the way to go. (I talked about this a bit in another message.) But shorter term, the solution for now seems to be to make packages that have this kind of change depend upon the version: moderncv-14.layout, etc. Or, perhaps: Update the non-indexed version (so now moderncv.layout works with the current version), but *also* provide the older versions for people who want them.

But even if we do that, then I think we should require that the new layout to include preamble code that makes the output with an old package equivalent to that with the new one, at least as far as the new style is concerned. E.g.:
    \ifundefined\phone{
        \newcommand\phone{
            % code borrowed from the new version....
        }
    }
There's a \providecommand, too, that is equivalent to this, right? Ugly preamble stuff, to be sure, but useful, nonetheless, I think.

2. Pavel's idea that for key dependencies such as Qt or TeX we should
look where stable/future versions on major linux distros are. e.g.
stable debian. Another possibility is to look at the current Ubuntu LTS.
If we implement this, we should be specific (e.g. say explicitly Debian
Stable and Ubuntu LTS).

I think we have long had an implicit policy like this: Don't break Debian. But we could change the target: Don't break Ubuntu LTS and/or latest Centos. Both of these are conservative without being glacial. I'm not sure how much difference that would make in practice.

3. Richard's idea to rename the layout file:
   "It might be worth renaming the old layout to moderncv-14.layout or
   something, in case people don't have the new version."

   I don't myself see a reason, when we're dealing with class files like
   this one, not to index ALL the layout files to specific versions of
   the class file. So we'd have moderncv-14, moderncv-15, etc. The
   difficulty is that if we just update moderncv.layout, then people
   whose files used to compile just fine now don't compile at all,
   because LyX expects some version they don't have.  If we at least have
   these various versions, then people can switch between them as need
   be. We don't do it for them, which will be wrong in some cases.

I spoke to this above. I'll add, though, that there just are differences between class files in this way. Some update very frequently, with lots of changes; with others, updates are usually just bug fixes, with no change to basic functionality. It's the former that causes problems. With the latter, there's no need for version indexing.

Richard

Reply via email to