Source code for Hub

It’s nice. Less polish here and there but the community is about the same size as ST.

Well sure. On an infinite timescale I’m sure that a volunteer effort could produce something wonderful.

This only becomes meaningful to the marketplace, however, if it can be done before (or at least contemporaneously with) any or all of the offerings from names like Google, Samsung, Apple, etc.

1 Like

I apologize; I didn’t mean to be confrontational or personal, but you just happen to hit a sore spot.

SmartThings has invested ~4 years of effort, gained investors (and the buyout) and came up with a lot of creative and innovative ideas, and it confounds me that someone would copy or “steal” the conceptual model and architecture; especially the intellectual property represented by Hub V2, for a non-profit open source venture.

Is it any better if a for-profit or closed-source venture does it? Maybe: At least they would pay their developers, lawyers, and other staff. Open source projects seem like unfair competition.

I’m not implying anything I say above makes sense. But I am saying that I find it beyond incredible that folks think an open source SmartThings is a feasible solution.

Then again, you are quite correct about Linux. Did Linus “steal” all the effort that went into the development of Unix? What about desktop managers that replicate the look-and-feel of Windows? Or Gimp that “replaces” Photoshop.

I’m conflicted, obviously.

The people who built SmartThings deserve to reap the rewards of their efforts. But at the same time, we have a lot of evidence that SmartThings is not yet “deserving” of accolades and it is reasonable to bet that they will face formidable competition. Open sourcing “SmartThings” in some form seems like tossing out baby with the unstable bathwater… i.e., if it’s “easy” to fix SmartThings (with volunteers!?) then why can’t the best talent money can buy do it with all the internal advantages?

Will there be a “Linux moment” for smart home systems? I guess it’s impossible to know.

2 Likes

That’s funny because the CEO is quoted as saying the exact opposite.

SmartThings will soon be available to purchasers of Samsung TVs, no hub required.

Except for the hub (which is fairly generic hardware), you don’t need any SmartThings or Samsung branded hardware to run SmartThings (actually, if all your Devices are cloud-cloud, you don’t even need the hub).

While they sell hardware it’s not their bread and butter so to speak.

It’s like Google with their Nexus devices, that’s not what their focus is.

1 Like

I have hard time believing that. What OS is it running then? Windows? :slight_smile:

1 Like

The new one is Tizen I think

That would explain why it was so late behind the schedule and still lacks a bunch of features that were promised a year ago. Anyway, it seems like an artificial choice for a device that has no user interface whatsoever.

1 Like

Sure … but, per this discussion, it is a practical choice for Samsung (for internal reasons), and, to ensure it can be kept fully proprietary (no open source).

But it wouldn’t achieve that - Tizen itself is based upon the Linux kernel and the GNU C library, and thus inherits open source obligations.

Samsung proprietary Tizen components released under the “Flora” license also have certain guarantees to access to the source code under the terms of that license.

So it is highly likely there are core components (kernel, network stack, GNU utilities, shared libraries, etc.) which are based on open source software with attendant open source obligations. Of course source for those components is already available to you elsewhere. However, the “application/s” running atop that, the crux of the SmartThings hub functionality, likely has far less, if any, open source requirements attached to it. This is a nuance many people overlook - just because an open source kernel is used does not mean all of the firmware in a device is governed by an open source license.

So - SmartThings most likely do have an obligation to provide access to the source code for SOME elements of the hub firmware/software, but it is near as dammit to a certainty that such access would be insufficient to create your own version of the hub without significant time and effort to work out what was missing, how those missing pieces work, how they interoperate with the SmartThings cloud, etc., etc. By the time you did that, SmartThings would likely be three or four generations ahead of where you started…

1 Like

The hub can be running the Linux kernel, but that does not mean that the firmware is based is on an existing open source project. The underlying OS does not make the entire stack running on top of it open source.

This is exactly what I was alluding to.

Still, whatever GPL’d software you use in the hub, including Linux kernel, must be available in the source code form, along with whatever modifications you may have made. Please see A Practical Guide to GPL Compliance - Software Freedom Law Center

Specifically, this:

the most important component to maintaining GPL compliance is inclusion of the complete and corresponding source code in any distributions that you make of GPL’d software.

I am in correspondence with some internal team members about this. A FOSS page is definitely in the works.

1 Like

I hope it won’t take too long. :smile:

Just FYI,

If you ship a firmware (kernel plus filesystem), and the filesystem contains binaries of GPL’d programs, then you should provide whatever is necessary to enable a reasonably skilled user to build any given GPL’d source program (and modified versions thereof), and replace the given binary in your filesystem. If the kernel is Linux, then the users must have the instructions to do the same with the kernel. The best way to achieve this is to make available to your users whatever scripts or process your engineers would use to do the same.

Also,

If you put GPLv3’d software into a User Product (as defined by the license) and you have the ability to install modified versions onto that device, you must provide information that makes it possible for the user to install functioning, modified versions of the software.

On the one hand, the OP is completely correct in that modifications made to GPL code must be provided in source format upon user request after receiving a binary. We received the binary in the firmware of the device when we bought it, and a request for those portions of that device which are under GPL must be made available in source format as well.

On the other hand, it’s unlikely to accomplish much for those looking to make modifications. ST can (and presumably has) locked down the bootloader to prevent running unauthorized code. All of the secret sauce was presumably not hacked into the kernel (and thus under GPL) but rather as an application that runs on the open source bits. The GPL specifically allows for this, and they are under no obligation to release code they wrote themselves. There are a lot of companies that are pretty bad about following these rules (I’m looking at you, Ubiquiti), but the reality has been the source releases almost never help the community accomplish much. The secret sauce doesn’t have to be in the release, so all you get are the things that were already public anyway.

edit: I’m talking about GPL v2 here. GPL v3 has intentionally poisoned the well for commercial use, which is why several projects refuse to move toward it.

Also, it’s worth mentioning that the local hub is nearly useless without the cloud bits. The GPL doesn’t cover cloud use at all, it only covers code you’ve been physically given (in this case, flashed onto firmware). For better or worse, most of ST lives in the cloud and wouldn’t at all be impacted by GPL provisions. An attempt to deal with this has been put forward but I’m pretty confident it’s doomed to failure.

1 Like

Now is the time for SmartThings to do the Right Thing and publish the source code and procedures for the GPL based components that they used for the benefit of all.

Where can we find it?

Looks like they are working on it.

1 Like

FYI Tizen is based on many FLOSS components including Linux Kernel.

Hello All. Stumbled upon this thread a bit late, but responding here now to help put some closure on this topic.

I have been working with @jody.albritton, @nastevens and others to improve the automation and processes around open source within SmartThings. I myself am an creator/contributor/maintainer of several Open Source projects (@posborne on Github) and look forward to working with others to ensure that SmartThings is in compliance with the various open source licenses in the software that we make use of. At SmartThings, I work on the software for the Hub itself (Kernel/Bootloader and on up from there).

Here’s the links with the complete license information and source code (including modifications for licenses requiring that) for the software packages we distribute. Several of these have been up for some time, but I want to make sure that everyone has the links.

The V2 Hub downloads for the released versions of the hub are somewhat large (~500MB) as they include the complete source code (including our modifications) for pieces of software requiring that. We also include the full source for some packages that do not clearly include a single license file (dependencies from npm are handled this way in general).

For those interested in diving deeper, the two main pieces of GPL software that we have modified on the hub are the following:

  • Linux Kernel (directory: linux-pgc_3.10.79-3)
  • U-Boot (directory: u-boot-pgc431_2013.10+gitAUTOINC+ee49ccfbd7)

As noted earlier in this thread, there are closed source components on the hub in addition to the open source pieces we used. For now, those will remain closed, but we are always looking at new ways to further the openness of the SmartThings platform/ecosystem.

Feel free to let us know if you see problems with what we are currently delivering by emailing opensourcesupport@smartthings.com.

10 Likes