@tgauchat Lawyers are taking this one. I’ll update when its figured out.
@speteor (Zach): (Tagging is done via the underlying username found on the User Profile; which is frequently different than a person’s Display Name. Seems unnecessarily complicated. Tagging is most useful if you are mentioning someone outside the current conversation, or if the conversation has many layers, or if the participant has not subscribed…)Anyhow...
If I understand GPL correctly, GPL’d code can be used commercially, as long as the entire encompassing product is also GPL’d and it’s code is published (shipped along with the purchased product; and freely available with compilation instructions, to persons not wishing to purchase the product).
In the context of “paid SmartApps”; I could still license under the GPL (or, in fact, be forced to do so because of the inclusion of someone else’s GPL’d code). This would not prevent me from getting paid for the SmartApp by people who do not wish to “recompile” it themselves (perhaps they are non-developers and don’t want to use the IDE…).
And, as with many “for-profit” GPL based products, the commercial version could include technical end-user support and ongoing development (inclusion of features prioritized by the paying users).
I agree that GPL for commercial software seems rather messy, but there are countless businesses which license this way (all the Linux distros, pretty much… I think?).
Hence why I bring up the topic here. I am, indeed, thinking ahead to possibly submitting SmartApps as requiring payment. Maybe just asking for donations in the meantime (I need to eat and pay the mortgage!). I personally don’t object to following open source licenses for these Apps, since the right to payment is still permitted if the particular open source restrictions/requirements are followed (i.e., source publication, …).
But it should also be possible to discuss code samples (and release Beta test SmartApps in SOURCE format), with alternative licensing or full copyright, such that the final release need not be open source.
The question remains: What will likely be the prevalent and/or recommended model? and What is the “default” expectation when the Developer community shares code and ideas in the meantime? It is pretty obvious that if someone shares an educational example here that I can’t just steal it and make it into a proprietary copyright protected restricted license paid SmartApp.
However, I think it would be convenient if we were all on the same page and assumed GPL (or ?) protocol: Such that if I, in the above example, “steal” the code and make it into a paid SmartApp, it would not be stealing if I followed the assumption of GPL (in both spirit and practice from that point forward).
I repeat that I’m a little ignorant on this topic. Developer forums discuss ideas and often include extensive code samples. In the “real world”, I presume that sometimes this code ends up in proprietary software, with the original coder unaware of the “theft” – or he/she assumed that publication on a forum was a gift with no license or copyright restriction. Yet it remains unclear to me which of the two scenarios is typical (i.e., if I publish code with no explicit license, perhaps because it is just a big snippet, do I presume I am giving it away under “do-whatever-the-f-you-want”; or do I presume we live in a GPL-default world?).
(And vice versa: If someone here has and continues to actively post code samples with no explicit restrictions, do I need to get permission from them to include this in a paid SmartApp)? What if multiple people were collaborating on the problem/project?
I think Andrew @Urman is going to get back with guidance from the legal team. Saves us little guys the trouble of paying legal bills!
I haven’t really written any code for quite some time, but I’ve started getting into writing small programs here. The majority of what I’ve written has been lightly or heavily modified versions of existing programs. I guess I’ve assumed that any software that was shared here or in the IDE (SmartThings or others) was, more or less, free to use.
I tend to agree with your thoughts that taking someone else’s code and calling it yours… or for that matter, taking someone else’s code and making very minor modifications and calling it yours… is not acceptable. However, if I use snippets or even a decent chunk of someone else’s code (either as a starting point or to save having to re-write a whole section) but then change or add significantly, I don’t see an issue. I guess my rule of thumb would be 50%. If half or more of the code is written by me I’m comfortable calling it mine. Anything less than that I would tend to just release back in the wild.
I guess I would ask anyone using my code that’s been released into the wild to follow a similar mind set. IF you’re just tweaking my work here or there, then please release it publicly. If you’re overhauling my work and just used it as a launchpad to get started, then it’s yours. Do with it as you’d like.
Having said this, I’m going to say the same thing as CP: I’ve very ignorant on this topic. Like I said, any real coding I’ve done was a LONG time ago and I’ve never really done it professionally.
FYI, for reference, here is a web link to an article describing that the GPL is “not compatible” with App stores (well, in particular, Apple’s App Store), as experienced by one vendor / product (VLC).
Your team may find this valuable in determining the licensing recommendations; or it may be irrelevant in the SmartThings ecosystem.
My 2 cents:
Anything I post (code or otherwise) here on this build site is for community private use and discussion. While it may be considered to be in the public domain, it does not in anyway imply that in whole, or in part, that it can be used commercially or for profit without my expressed and explicit consent.
Let’s keep this site inspirational and when appropriate recognize and reward the original inspirational authors.
Great read CP. Thanks for sharing. I think your line that Apple’s App Store is no compatible with GPL is the correct statement:
Now consider the App Store User Agreement:
(i) You may download and sync a Product for personal, noncommercial use on any Apple-branded products running iOS (“iOS Product”) you own or control.
(ii) If you are a commercial enterprise or educational institution, you may download and sync a Product for use by either (a) a single individual on one or more iOS Product you own or control or (b) multiple individuals, on a single shared iOS Product you own or control.
(iii) You shall be able to store App Store Products from up to five different Accounts at a time on compatible iOS Products.
One of the tenants of GPL is the ability to redistribute anything you got under the GPL to anyone else. Apple specifically refuses this right as indicted above.
If an App Store made is legal redistribute a GPL licensed product, then it should be compatible with GPL.
Twack @wackware: Thanks for your input, and a really good example of what one contributor’s expectations are!
Your policy (restrictive license?) is pretty clear (though, ummm, a bit contradictory: the term public domain means ZERO restrictions, but you then qualify that you really don’t mean your shared code is public domain…). Which is it really?
[ Please Reference: “No License (copyrighted” vs “Public Domain” at this link: http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html ]
Regardless, let’s assume that, until further notice, most of the code here on the Forums or shared through other means (IDE Shared Examples, GitHub, etc.) are “No License” and thus “copyrighted by default” (unless the code explicitly includes a release to Public Domain or a common Open Source license)…
Now as someone who personally is hoping to develop SmartApps, Device Handlers, Aruino Sketches, etc., and SELL some of the end products commercially, a copyrighted situation for example code and community discussion presents a potentially serious dilemma.
Since it may be difficult to get the various code sharer(s) (there may be several in a thread), to willingly release their work from restrictions (either transfer proprietary license or convert to a “GPL”), there theoretically will exist an ever growing codebase that can forever be stalled or prevented from migrating to commercial use. The motivations for commercial use may include the desire to use a significant code segment in a larger “package” of SmartApps & Devices. My off-the-cuff example is perhaps a package of IP-cam device handlers. Or even the sale of ONE specific IP-cam brand device handler that was based on a well written shared example.
This is, of course, the standard intellectual property conundrum. It both promotes and stifles innovation (with strong arguments on both sides). On a positive note, at least we have not breached the topic of Software Patents (yet) in this context!
So how is this a serious dilemma? I have many ideas under Development; some of which may be commercially for-profit viable, some only on a niche scale, or some as donation-ware. Under the GPL, I can share my ideas and code during Development and solicit feedback or ask questions, and use the entire net result as a commercial product, covered by and respecting the GPL rules.
BUT: If I even accidentally read and copy a non-trivial portion of someone’s example code (and, for many Apps there are only a few good ways to code something…)… I am now at risk of making a copyright violation; or, specifically to your stated policy; I am at risk of never being allowed to release my Project commercially or for-profit.
The net result is a chilling effect: The only way to be sure I do not violate copyright, is to never-ever-ever look at anyone’s copyrighted example code: Even if this prevents me from assisting others with their own education or projects that I have no current intention of commercializing. The same off-the-cuff example: I assist someone in getting their IP-Cam working by making some suggestions, but they have written all the code (even if that code was “obvious” to me). Now I want to commercialize a similar IP-Cam; the person I assisted can refuse to release copyright; and I am thus restricted from using “obvious” code that was in my head, but I had the misfortune of not publishing first.
Well… pardon the long-winded post, as always, but I think I’ve raised a legitimate concern, no?
Some say in an ideal world all source-code would be free of restrictions and/or all intellectual property would be automatically logically protected; but there clearly is a grey area. Some of us need to find ways to profit from the implementation and packaging of useful functionality, even while both serving and using developer community knowledge.
As far as I am aware (at this moment), I believe that a key way to resolve this grey area is to decide, as a community, if we generally lean towards a GPL-like sharing of code; true Public Domain upon posting/sharing; or pure copyright. If pure copyright, then persons like myself will have to take particular precautions in using this Forum (particularly any code Examples), and/or be very good at negotiating transfer of rights, and/or be very skilled at refactoring copyrighted segments sufficiently to avoid claims of derivation. (Using “copyright” as the default, does bring along with it some weakness in intellectual-property protection, such as fair-use; and, for software, a whole mess, as far as I am aware: That’s why commercial software developers keep their source private and/or use very explicit detailed licenses.)
Oh: Just as a convenient way to express my point in other words… the link I suggested above really does a good job of describing this potential “horror story” of a situation: http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html
I quote from that writer:
It's a minefield, people. All I'm saying is this: the next time you release code into the wild, do your fellow developers a favor and pick a license – any license.
This raises good points that I regularly forget about until late in the dev process. Here is my approach:
Any code that I post in these forums should be considered public domain unless it specifically has a license in it. I’ve updated my Nest device type to use the MIT license. I like MIT because it means you can use my code for pretty much anything you want, but I can still have credit for creating it.
What would be extremely helpful for us newbies here… can someone post a quick run down of different licensing types from Public Down (which is free for everyone to use I believe) on up to what is no rights? I’d love a quick cheat sheet explaining the basics of what each license does or doesn’t do.
@chrisb The link CosmicPuppy posted has just such a rundown: http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html
It doesn’t cover every license, but it’s a good start.
Even though there are just a few of us (so far?) discussing code usage rights, you can already see the wide variance of preferences and assumptions.
–> Ranging from Twack @wackware’s public domain but no commercial use, to fully public domain with credit, per MIT <–
Precisely illustrates why assumptions of what constitutes legal code reuse are dangerous.
I’d go with LGPL 3.0, MIT, or Apache 2.0 - frankly, GPL is a problem in the cases where you do want to leverage it in a commercial use case, and I can see plenty of opportunities for leveraging the SmartThings platform in commercial applications.
@RickBullotta: (See if you can reconcile your opinion with Twack).
Objectively, with only a few contributors to this discussion so far, we are all leaning towards the “free” license model, … except Twack.
His viewpoint is still absolutely valid (and, technically, “copyright” is the default for unlicensed code published here), but it is the one that causes a hitch for a sharing community that has … “commercial” members.
Creative Commons not recommended for software :
Can I apply a Creative Commons license to software?
We do not recommend it. Creative Commons licenses should not be used for software. We strongly encourage you to use one of the very good software licenses which are already available. We recommend considering licenses made available by the Free Software Foundation or listed at the Open Source Initiative. Unlike our licenses, which do not make mention of source or object code, these existing licenses were designed specifically for use with software. Furthermore, our licenses are not compatible with the GPL, the most frequently used free software license.
Note that the CC0 Public Domain Dedication is GPL-compatible and acceptable for software. For details, see the relevant CC0 FAQ entry.
For $50 bucks cash I can get it done. Paypal to my offshore account.
Looks like the lawyers have chimed in; we all got a nasty little “present” along with the SmartThings Shop…
Please reference my new thread: Beware of Posting Code: SmartThings Terms of Service & Rights…
Enjoy and share.
Does ST have any update on when this will go live? I think this is one of the largest limitations of the smart things world right now. I am hesitant to start developing for the platform when I can’t publish my apps yet. I feel like many of the apps I write may already be done by others but I can’t get access to them.
How do you use shared codes?
The following should help. (This is a clickable link.)