0

I recently received a "surprise" email asking a question about one of my GPL'ed projects, and referring to code downloaded from https://github.com/icaoberg/mimetex/ That was the first I ever heard about that GitHub project! Moreover, that code's now out-of-date compared with the code that I've been maintaining (ever since I originally wrote every single line of it) at http://www.forkosh.com/mimetex.html

Rereading the GPL, as best I can interpret it, I don't see it prohibiting that GitHub project... But I'd like to prohibit it! That is, you can use my code for your own purposes, under the GPL license restrictions, but I don't want you simply re-releasing it as your GitHub (or any other similar repository) fork or project. Especially not when your fork just lies there and gets stale. But really not at all: I'll be the maintainer of my code.

So How do I say that, license-wise? Right now, my code has a GPL comment block at the very top that looks like this:

/****************************************************************************
 *
 * Copyright(c) 2002-2017, John Forkosh Associates, Inc. All rights reserved.
 *           http://www.forkosh.com   mailto: john@forkosh.com
 * --------------------------------------------------------------------------
 * This file is part of mimeTeX, which is free software. You may redistribute
 * and/or modify it under the terms of the GNU General Public License,
 * version 3 or later, as published by the Free Software Foundation.
 *      MimeTeX is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY, not even the implied warranty of MERCHANTABILITY.
 * See the GNU General Public License for specific details.
 *      By using mimeTeX, you warrant that you have read, understood and
 * agreed to these terms and conditions, and that you possess the legal
 * right and ability to enter into this agreement and to use mimeTeX
 * in accordance with it.
 *      Your mimetex.zip distribution file should contain the file COPYING,
 * an ascii text copy of the GNU General Public License, version 3.
 * If not, point your browser to  http://www.gnu.org/licenses/
 * or write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330,  Boston, MA 02111-1307 USA.
 * --------------------------------------------------------------------------
 * etc */

How can I modify that to incorporate these desired ideas?

 Edit
-------
As per comment to Steve Barnes, below...

I guess I should have made my objections clearer. The fork didn't bother me, per se. Indeed, it would be flattering if other developers picked up my code and kept working on it. But this guy just copied it to GitHub and never touched it, not then and not later. So it got stale. If you're going to fork a project, you should actually intend to do something, not just leave it for other people to unknowingly download years-old stale code, leaving the original developer to explain the problem. Why should I have to do more work because of his laziness, not even bothering to keep his own fork up-to-date?

  • 7
    If you don't want people copying, modifying and releasing your code, in what way is it open source? Just use a private/commercial license if you want to restrict use. – Brandin Nov 10 '17 at 10:00
  • Another option is to release the code freely but protect a trademark. Normally to do this you will have to register your trademark and then actively protect it. Basically, you can permit people to copy and release your code, but not to use your trademark. – Brandin Nov 10 '17 at 10:04
  • @Brandin It's open source because you're given the source. For free. And you can modify it, etc, etc, under all the usual gpl restrictions. But this guy just uploaded it, not modified at all, to github. And when code's on github, lots of people just assume that's the official copy. But it's just a stale five-year-old copy, with bugs that I've fixed long ago. The current code is only available from my site, where I maintain it, and which is the real official site. That github fork is unmaintained and stale, and really should just be removed. Shouldn't have been put there in the first place. – John Forkosh Nov 10 '17 at 10:08
  • 6
    I just clicked on the link and the author was pretty clear about attribution on the front page "A fork of mimetex from John Forkosh." so I don't personally see where someone could get confused. The fault lies in whoever didn't read that message. You could restrict people from redistributing code, but then it wouldn't be open source anymore and therefore off-topic here. – Brandin Nov 10 '17 at 10:13
  • 3
    This is not a forum for "Explaining your feelings." Yes, I can see how you could possibly be annoyed. But it doesn't matter. If it is open source, then others may copy it. Maybe they copy it and make no changes, or maybe they copy it and add tons of bugs. The best is that they make it clear "this is a fork" so that you everyone knows. And in this case that was done, so I think the real problem is the person who didn't even bother to read the attribution notice. – Brandin Nov 10 '17 at 10:25
12

Once you have Open Sourced some code other people can, and probably will, place it on other hosting services and there have been many times when everybody has been grateful for this because the original maintainer has moved on, lost interest or otherwise stopped maintaining the code and their original hosting has stopped.

If you find an out of date copy of your code on GitHub simply raise a ticket to point people to the maintained copy or better yet fork their GitHub project to one of your own and double push your changes to your normal location and to your GitHub one. When people see a branch that is years later and 100s of pushes in advance of their one they will mostly use it. The additional benefit is that you might get some PRs from your GitHub repo that reduce your own maintenance effort.

To reduce your efforts

Personally I would also look at setting a mail auto-responder/rule that looks for the URL of the stale branch in the body of any message and automatically replies with something along the lines of "If you are reporting a bug found in the code at httt.... please try the current, up to date code at .... before filing bug reports at ....."

  • 1
    At least raising an issue on their fork will let people know where to go - I forgot to mention one more point - adding it now. – Steve Barnes Nov 11 '17 at 7:18
  • 1
    Thanks again, Steve. Yeah, I already have a procmail script that auto-replies to emails whose subject contains "mimetex" (and doesn't contain "noautoreply"), to answer the most often-asked questions, which had been getting tiresome to repeatedly answer manually. Modifying it to incorporate your suggestion should be pretty easy. – John Forkosh Nov 11 '17 at 7:44
  • 3
    @JohnForkosh It's obvious from the GitHub repo you are complaining about when it was updated (All files say "updated 3 years ago."). The precompiled binaries on your site, however, are even older. So one could say that the official site is not up-to-date either. Of course, as maintainer that is your prerogative. – Brandin Nov 11 '17 at 10:14
  • 1
    @Brandin Re the precompiled binaries, yeah, I'd given up on them and should probably take them down. I no longer have any vaxstations or alphas to compile the VMS versions. And, at the moment, no windows boxes to conveniently compile a new win version (though I could easily get my hands on one if I really cared). And I thus haven't bothered keeping the linux binaries updated either -- anybody running linux has gcc (and if they can't type the one single line necessary to compile mimetex, they probably can't install a cgi either:). – John Forkosh Nov 12 '17 at 8:08
  • 1
    @JohnForkosh For windows builds it might be worth while looking into a free Appveyor account - ci.appveyor.com/signup/free which will automatically build your windows executables if you are using GitHub or BitBucket, (you can add a step to trigger a build if you are using other hosting). – Steve Barnes Nov 12 '17 at 9:49
8

As long as you use open source your wish is impossible. Actually it is essential part of open source to allow the easy access and publish ability of the source code. Todo so without notifying the original author.

The are some limitations, e.g. changing the license, using in combination with some other licenses, switching the author ...

You have no right to let this version on github removed. But just ask the guy publishing to add a line to README to add you as author and the age of it, were the actual current code is. You can also ask to remove it. But the later is actually non open source.

  • Okay, but how would you feel as an end user, downloading a program you wanted to use, installing it, and then finding it had a bug, and then taking the trouble to document the bug and emailing the author, just to find out you'd downloaded stale code, and the bug had been fixed years ago? Moreover, I didn't ask the user who emailed me, but I'd guess he first emailed the guy who forked the code, and got no answer or an inadequate answer. I guess there should be some better form of "source/version control" for forks, not just willy-nilly copying projects all over the place. – John Forkosh Nov 11 '17 at 7:34
  • 2
    @JohnForkosh According to the README in the "stale" GitHub repository, the version there is "Version 1.74", while the .zip file from your Web site also says in its README "Version 1.74." So as an end user I would assume they are the same version. I notice your Web page itself says "(for mimeTeX version 1.75)" so maybe something in your distribution is also out of date. Putting the version number in the file name would also help. E.g. mimetex-1.75.zip. – Brandin Nov 11 '17 at 10:06
  • @Brandin Oops, my bad re the readme, which I apparently haven't kept up-to-date. But the code itself says "version 1.76, last revised 11 July 2017" (and mimetex's \version command dynamically displays that info). – John Forkosh Nov 12 '17 at 7:58
8

Bob wrote a GPL-licensed media player that I really liked, FooPlayer v1.0. Then Bob "updated" FooPlayer to 2.0 and decided to put ads in the software. He stopped offering the original 1.0 altogether. I didn't like that, so I found an old copy of 1.0 I had downloaded last year and uploaded it to GitHub.

What part of this process do you want to prevent? What you want simply isn't an open source license. As a licensee of an open source project I expect (and, indeed, am required to receive, per the Open Source Definition)

  1. the right to post an older version of the code that I like better,
  2. the right to publicly archive the project in case it disappears, and
  3. to be free from the onus of updating my mirror of a project if it happens to fall out of sync with mainline development (and if the project experiences a major fork, which branch am I supposed to sync with anyway?)

You are free to write a license that doesn't grant these rights, but you will not find a FLOSS license that suits your needs.

You are free to ask the maintainer of a clone of your project to please keep it up to date, or link to the "mainline" origin the you personally prefer, or to take down the out-of-date repo if it serves no purpose but to cause minor confusion. The maintainer of the copy is free to refuse. If your request is reasonable to them, they'll probably help you out. If instead the maintainer refuses your demands, seriously consider that they may have good reasons, and the license is operating exactly as intended -- after all, I am very proud to be hosting the ad-free FooPlayer 1.0, despite Bob's request that I take it down

  • Thanks for your remarks. In my case, the situation's exactly like you describe with, "the out-of-date repo...serves no purpose but to cause minor confusion". There are no ads, no nothing of that nature. Yeah, I guess I'll just ask the guy to take it down. – John Forkosh Nov 12 '17 at 8:17
  • @JohnForkosh The example about ads was only an example. If it is an open source, the rights include permission to copy and redistribute older versions. The older version was not posted to cause confusion and clearly indicates the original author. Rather than ask the forker to take it down, it would be more reasonable to ask him to update it to version x.yz or the latest version. Before that you should probably update your site to make it clear which version is the latest. – Brandin Nov 13 '17 at 11:41
  • 1
    @JohnForkosh Sure, I only meant to show (though I could have made more explicit) that there is no way to avoid the case you now face without also blocking the very helpful case in my answer. This fork and my hypothetical no-ads fork are mechanically indistinguishable; the only difference is the intent of the person doing the fork, which isn't something you can easily regulate in a legally-sound license. – apsillers Nov 13 '17 at 13:12
1

The way to prevent this is to not make your project open source.

No, really. What do you think open source means?

  • It means what the license you're using says it means. There are several different licenses all considered open source. What I was expecting as a really adequate was something like: "Say your program's licensed under the gpl with the following exceptions...". And that "..." part would contain wording explicitly enumerating what I'd need to say in order to do what I want, as informally stated in the question. – John Forkosh Dec 20 '17 at 4:25
  • @JohnForkosh Open source does not mean whatever your license says it means. That's like saying that "bread" means whatever the recipe I'm using says it means. Both "open source" and "bread" have particular meanings. If I have a recipe for nachos and I change the word "nachos" to "bread" that doesn't mean it's a recipe for bread, it just means it's incorrect... – immibis Dec 20 '17 at 9:35
  • @JohnForkosh Also GPL exceptions only allow you to give people more rights, not take them away (for that it would have to not be GPL any more). – immibis Dec 20 '17 at 9:36
  • 1
    @JohnForkosh Sure. But none of the types of bread is a liquid, because then it wouldn't be bread. Likewise no open source license prevents someone from modifying the source (or not modifying it) and redistributing it, because then it wouldn't be open source. Bread is a kind of solid food. Open source is a movement for letting people modify and redistribute source. – immibis Dec 21 '17 at 20:32
  • 1
    @JohnForkosh It doesn't matter. If the license said "redistribute but you have to modify" they can add an inconsequential space somewhere and then they've modified it. – immibis Dec 22 '17 at 3:11

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.