The developer documentation says you can submit your application for approval so that others may install it. But, I don’t know how to do this. I’ve written an app that I’m using and thought others might find useful.
The global approval process isn’t live just yet. BUT you can self-approve and then use the share code functionality so other people can see your code.
?! My edit dialog give me this.
OAuth Client ID:
OK, I see it now - from ?
The “share” option doesn’t show up until you publish the SmartApp. You can’t publish until you at least look at the code (of course), so wouldn’t see it when you start a new app. You have to start an app, write the code, publish, then go back to App Settings to publish.
I believe that some time in the future they’ll be a way to submit for review and then it will go into the “app store” so that developers can put their apps out there without releasing the code. Possibly even a method to sell apps.
I just wrote a “find my keys” app, it wasn’t too hard at all. Awesome that you can write your app and then see it played out in the real world!
@Urman (et al.)…
Loosely related, since at the moment all SmartApp sharing is only via examples which reveal the Source Code:
- Can you please recommend a specific open source license (and/or restricted copyright phrase) to put in our shared code?
- If code is not commented with a license type or explicit copyright; is it customary to assume the code is free of restrictions, or the opposite (i.e., that the code is completely restricted)?
- Can the "share" button force the Developer to choose a particular licensing model or force the Developer to acknowledge that shared code is completely free of restrictions except any restrictions included in comments in the code?
@tgauchat good call. We will discuss on putting that in there. Kinda like youtube videos.
Please don’t hesitate to make some license type / wording and code usage etiquette suggestions in the meantime; either for feedback or for us “open source novices” to have something to start with.
I don’t want to inadvertently step on toes by borrowing or stealing code from shares or example, nor do I want to ignorantly give away rights to MY code unintentionally.
If you use a GPL license, it should be fine I suppose. I guess you could probably also use the MIT license
Well… there’s a big difference between GPL and MIT, right? Certainly makes sense to reduce the suggestions down to the most commonly used and, thus, well understood license options.
So, given GPL vs MIT (vs. fully copyrighted): Which best embodies SmartThings’s vision and/or existing codebase, etc.?
I presume most of SmartThings’s code is proprietary, trade secret, and copyrighted; unless specified otherwise.
Is ST using any GPL modules? Are they properly isolated from proprietary code, per GPL license risks regarding derivative works?
The example code in the IDE and pasted in the Forums, etc., tends to have no license or copyright – EXCEPT, this notice is on the bottom of nearly every web page: “Copyright © 2013 Physical Graph Corporation. All rights reserved.”.
There is certainly a legal standard regarding implied copyright; yet there must also be a typical etiquette that code discussions or examples are exempt, or ?
This is much less interesting than solving actual coding problems; but I guess I think Developers ought to be aware of their options when sharing code (and their obligations, when using shared code). If the default assumption is fully restricted, then we’d all get nowhere at the moment.
(Haven’t quite figured out how to tag people on here just yet)
Generally, GPL is used to protect code from being reused commercially. I don’t foresee this being an issue on the SmartThings platform, but regardless, that should be sufficient. Also, given that SmartApp code is irrelevant anywhere outside the SmartThings platform, I’m not there’s any commercial benefit.
Of course, if you have an idea that you may want to publish as a paid app at some point, I wouldn’t recommend sharing the source with everyone.
@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.