Dear Paul, Thank you for the answers. They do help. I have a couple of follow-up questions, if I may. On Tue, Dec 12, 2023 at 8:05 PM Paul Eggert <eggert@xxxxxxxxxxx> wrote: > > There are three things that I am not sure about: > > a) may I omit the first two lines saying that "This file is part of > > Autoconf..." because they look a bit misleading in this context? > > b) may I add an extra copyright line? > > c) do I have to provide any extra information in the file? > > The answers to (a) and (b) are "yes". For (c) it's "no". However, you > must redistribute a copy of the GPL itself (the "COPYING" file in > Autoconf) though of course this is not in the .m4 file itself. > I forgot to ask whether I can also remove the first sentence after the copyright notice: "This file is part of Autoconf." The reason is the same as above: I would like to avoid any ambiguity. Of course, I am going to mention Autoconf later in the comments when describing where the code is taken from and what I changed in it. A similar question is about the part "see the files COPYINGv3 and COPYING.EXCEPTION respectively". Would it be fine to change the names of the files with the licenses? Would it be fine to remove the quoted part at all assuming that I provide the license text in my repository somewhere else (most probably, in the LICENSES directory in the root source directory)? That would make it easier for the users who might want to provide copies of the licenses in some other way: they will not have to adjust the sentence in question. > > 3. I have macros that monkey-patch macros fortran.m4 with m4_bpatsubst > and I > > have no idea what to do with those. Should they be treated like files > > from > > the case 1. or the case 2. above? > > It depends on what "monkey-patch" means, but in general these sound like > they would be derivative works and so are case 2. > For example, AC_FC_PP_SRCEXT does not check for the "-e T" flag. I could copy the source code of the macro and modify it so that it checks for the flag. Another option is to do the following: m4_pushdef([AC_FC_PP_SRCEXT], m4_bpatsubst(m4_dquote(m4_defn([AC_FC_PP_SRCEXT])), ["-e Z"], ["-e T" "-e Z"]))dnl AC_FC_PP_SRCEXT([f90]) m4_popdef([AC_FC_PP_SRCEXT])dnl This way, I simply call macros provided by Autoconf (with the knowledge of what they actually do), therefore it is hard for me to tell the difference between this case and the one when I write a macro "from scratch". Best regards, Sergey