CafePress Integration – The Price : CafePress Integration talks about a possible plugin for WordPress, and the article says “I haven’t decided yet on a price, but I intend to make it inexpensive.”. The problem is, if it uses WP’s code, and is a plugin, then it has to be GPL’ed. I tried leaving a comment there, but comments are closed. Hope the trackback gets there.

This entry was posted in Linklog. Bookmark the permalink.

8 Responses to CafePress Integration – The Price

  1. danyl says:

    You’re correct, of course, but there’s no reason I’d have to use WP’s code. You have to be very careful about that sort of thing. When I decide to release something under the GPL, I’m glad to be contributing, and I’d be quite upset if someone tried to take that code and make it proprietary (whether or not there was profit in it).

    In any event, if some licensing tangle ensures that all WP plugins must be released under the GPL, then I’ll have to decide whether to GPL that version of the code or simply forego producing a version of the software for use with WP. Personally, I doubt it would come to that.

  2. Carthik says:

    I think the whole point of the GPL is that if you use it, no one can take your code and make it proprietary.
    From what I understand, Plugins to GPL’ed products must be GPL’ed too.
    The GPL faq is enlightenening.

  3. danyl says:

    Here’s what the GPL FAQ says about plugins to software released under the GNU GPL:

    If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in?

    It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.

    If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, so plug-ins must be treated as extensions to the main program. This means they must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.

    If the program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

    This is an accurate assessment of the meaning of the GPL in terms of compiled code. When applied to scripting languages such as PHP, however, things get a bit hazy.

    When WordPress dynamically includes some code (as it does with configured plugins), it could be argued that that code is essentially being “linked”; as the process is conceptially very similar to the linking process used to produce a binary. However, in compiled code the end result is a binary, and part of the object code in that binary is a machine translation of the source code that was included. Since that source code is being combined with GPL’ed source code to produce a single program, it must be GPL’ed as well.

    With PHP and WordPress however, the source is interpreted and the end result is markup that defines a web page. The Free Software Foundation has always been very clear in stating that the output from GPL’ed programs is not covered by the GPL; a good thing, because otherwise every webpage served from Apache Web Server would have to be free for public reuse, rendering copyright on the web useless.

    In the case of a WordPress plugin, WP invokes 3rd party code when specific events occur. This 3rd party code must conform to a specific interface that WP expects, but that’s no different than requiring a Windows executable to be in a specific format and provide specific entry points; which certainly doesn’t place licensing restrictions on the executable in question.

    As I see it, if 3rd party PHP code contains pieces of WordPress source code, it must be GPL’ed. If it merely calls functions provided by WordPress (most WP plugins make use of either the add_action() or add_filter() functions), I’m not so sure. If it doesn’t call any of WordPress’s code, it wouldn’t have to be GPL’ed. A Linux binary doesn’t have to be GPL’ed – but if it links to GPL’ed libraries provided with Linux, well, things get so confused that the FSF came up with the L-GPL just to address the issue.

    It really boils down to this:

    Given a plugin that is released under a commercial license, and assuming momentarily that WP’s license absolutely restricts the use of plugins to those that are distributed under the GPL, installation and use of that plugin would invalidate the commercial license it was distributed under. The plugin would not automatically “become” GPL’ed software, it would simply not be licensed at all, and any webmaster using it would be doing so without the legal right to redistribute it, as no valid license gives him that right. This is usually the primary function of a commercial license, and that restriction would remain effectively intact. Regardless of licensing, the author would still hold copyright on the plugin, and would have legal recourse should his customer redistribute his intellectual property without permission.

    Furthermore, the author of such a plugin is not constrained by the terms of the GPL, as there is no requirement that he accept those terms in order to develop his plugin. He can code plugins all day long without so much as downloading WordPress. (Testing, granted, would be a bit of a chore.)

    The long and short of it is: WordPress plugins that aren’t derived from some piece of GPL’ed code dont have to fall under the GPL themselves. And if for some reason they did, breaking that constraint wouldn’t have much effect in terms of legal rights and responsibilities.

  4. Pedro Vera says:

    Also, just because it is GPL’ed does not force it to be free. The GPL is only to make sure the source code is available to everybody, not that the product is free.

  5. Carthik says:

    Hi Pedro,
    Of note here is the seeming contradiction :

    “The GPL is only to make sure the source code is available to everybody, not that the product is free.”

    It is, in effect a promise that a free copy of the software will always be available! (A free copy of the source code is available to everybody, in other words). There is no restriction saying the code cannot be sold. You can sell GPL’ed source, provided you also make the source available freely. I understand the distinctions quite well now. :)

  6. danyl says:

    Right, Pedro. Free Software – as in “Free Speech”, not “Free Beer”. However, if you write something and license it under the GPL, then charge someone for a copy of that software, the GPL requires that you give them not only the software but the source code (admittedly not an issue with PHP scripts), and also the right to modify and redistribute that software. In short, you get paid for the first copy you sell, and the other ten million copies floating around out there provide you with no compensation.

    Sure, you can charge for support, or for distribution, or for documentation; there are plenty of ways to make a profit from GPL’ed software. But at that point, you’ve developed the software and now you’re being paid for the time you’re spending providing an additional service; as it should be. The point remains though that the initial development work remains uncompensated, and that’s what I’d like to get paid for – the weeks of hard work that went into writing the software.

    Some people try to work around this by writing “donation-ware” or some such thing. Personally, I think that if a website is trying to make money, there’s no reason they can’t shell out $20 to pay for the software they’re using to do it. And face it, most people don’t open CafePress shops to give things away for free. Some do, selling products with no markup above CafePress’ base price. But not most.

  7. Carthik says:

    Perfect!, thank you for helping me understand some issues with GPL in a clear manner. I must say this is a very well written article.

    There is a small thing that still nags me though, and that is this :

    If it doesn’t call any of WordPress’s code, it wouldn’t have to be GPL’ed.

    Most plugins use WP’s code to access the tables, at the least. They use a lot of wp’s function too, in many cases. Where does that leave the plugin? In GPL territory?

    I agree about the compiled vs. interpreted languages differences, but methods and functions defined in WordPress are GPL and a plugin that uses them, should therefore be GPL, because it is something that builds upon GPL ‘ed code, and the rules are quite clear on that, I beleive.

    There are many shades of grey involved, and in any case, if there was some contention, I realize that some plugins may not violate the GPL, but some definitely will. A case in point for the latter is my own registered only plugin which is basically WP core functions made available in a different directory. Another example would be my updatelinkroll plugin which includes one wordpress file (links-update-xml.php) in another (index.php). I cannot see how these two plugins can be my intellectual property or how I can have copyright over these, but, say if someone has a standalone program, and that plugs-in with wordpress, I agree that the standalone program need not be GPL’ed in certain cases, where it communicates with wordpress thru the API and uses no more of WordPress core code than that.
    This post and then this one discuss similar issues, at Alex King’s Blog. That was what I was thinking when I read your post, that caused me to comment. For some reason, GPL has been on my mind lately :)

    Thanks again for that wonderful, lucid comment.

  8. blackcat says:

    Wow! All these replies from Danyl and I have been trying so hard to get a response from Danyl or Anyone regarding issues we’re having actually USING the CafePress module on our site (, with absolutely no response from Danyl or anyone. I apologize if this posting is out of place here, but someone *please,* refer me to someone who can answer this question for us:

    Subject: Please help – Regarding CafePress component/mod for Mambo 4.5.2
    Date: 4/5/2005 12:13 AM

    Hi Danyl,

    I’ve installed and am using the cafepress mod with Mambo, but I can’t get the “Additional Photos” of the products to show up. I’m using Firefox with the web developer extension, and when viewing image paths I can see that on mine, I simply show the links that are broken as src=/content/products/productcenter/extrapic.jpg

    and I see on yours (that is working correctly) that you have the links as

    So obviously mine’s not working because I’m missing the , but for the life of me I can’t figure out where to change that. Please help!

    My site is located at:

    Click on “BCP Merchandise” to view our CafePress items. You’ll see the parse error when you click on an item from there – it simply won’t show the “Additional Photos”.

    Also, if you happen to know the easy way for me to do this – I already changed the add to cart button image to match my existing one, but my existing one also uses the english.php file to put the text “add to cart” onto the button (overlaid) as well – is there a way to parse this text from the english.php to make the add to cart buttons match?

    Really appreciate this module for Mambo/Cafepress, I actually had people requesting this stuff. Thanks in advance for any help you can offer.

    Sincere regards,

    Colleen Duarte