CQC is going Open Source

Dean,

Sorry to hear about this... I notice you dont want to use Source Forge, maybe http://code.google.com/opensource/

I looked at Google. They seem nice except they limit you to one of a small set of license types, none of which are what I think is appropriate. Though I'm open sourcing it, for this type of product, it makes no sense for hundreds of non-compatible versions to be floating around. So I want a license scheme were I can claim sole right to host and distribute the source and binary versions. That way, there's always a known place to come get the official stuff, and anyone who puts up other copies can at least be theoretically forced to remove it.

Of course there's about zero morality on the internet and probably all of my code will show up with someone else's name on it in a week. But I'd at least like to have the legal foot to stand on. And none of the licenses that Google offers, assuming I'm semi-understanding the gobbledigood, really offers that. They are more open than I care for.

I also offered it to the Apache Project, but was greeted with complete silence. I can imagine why. This would be a product that would step on all kinds of political toes there, since it includes such a huge array of functionality.
 
Allowing the code to be rolled into other projects is not necessarily a bad thing, provided that the people who are using it are still offering up the source and not distributing binary only and making money off your hard work.

From gnu.org:

Using the GNU GPL will require that all the released improved versions be free software. This means you can avoid the risk of having to compete with a proprietary modified version of your own work. However, in some special situations it can be better to use a more permissive license.

I can see where the use of the code could make something like the LinuxHA/LinuxMCE/etc projects much better, or be used to add functionality to MythTV or other media/HA platforms. If you think someone is stealing the code for a commercial project, there are ways to inspect the binary to determine if they are using stolen code and not redistributing it as their own.

This license might actually be better in your situation:

http://opensource.org/licenses/osl-3.0.php
 
One thing about this code base though is that it's highly, highly integrated, from top to bottom. Though of course you can always pull small bits out of any piece of code that might happen to do something you want. This is not the type of code base where it's just a bunch of disparate stuff you can pull out parts and use them in isolation. There's lots of that type of stuff out there, so who needs more? The advantage of this code base comes when you use it solely for the development of applications or higher level libraries, because it's so tightly integrated. So it's more like, for instance, writing in Java and using the standard Java libraries. You'd probably not benefit much from trying to pull out a non-trivial piece of the standard Java libraries and using it in a system that didn't include any of the other standard java stuff, because it depends on itself.

So it's really most useful if used as a whole, and you base your development on it. That's why it's so huge, because CQC has broad functionality requirements and works solely in terms of the general purpose layer (with I think one exception with is the iTunes SDK which has to be used to support playback of MP4s and that's only done at the CQC level.)

Anyway, that's why I think that having a strict single home for it, where it's developed and made available as binary builds for application development on top of official versions, really makes a lot more sense because of that. Yeh, someone may build some private version for their own application and you couldn't stop them, though trying to disguise that fact would be so much work it wouldn't be worth it.

I actually don't mind that commercial applications would be built on top of the general purpose part of the code, as long as they give proper attribution in their documentation, packaging, and product info dialog boxes. I certainly wouldn't want someone trying to just build CQC and start trying to sell it, though that's probably inevitable given the level of moral constraint out there. Hopefully they couldn't get away with trying to sell what's freely available but they'll probably try anything.
 
One thing about this code base though is that it's highly, highly integrated, from top to bottom. Though of course you can always pull small bits out of any piece of code that might happen to do something you want. This is not the type of code base where it's just a bunch of disparate stuff you can pull out parts and use them in isolation. There's lots of that type of stuff out there, so who needs more? The advantage of this code base comes when you use it solely for the development of applications or higher level libraries, because it's so tightly integrated. So it's more like, for instance, writing in Java and using the standard Java libraries. You'd probably not benefit much from trying to pull out a non-trivial piece of the standard Java libraries and using it in a system that didn't include any of the other standard java stuff, because it depends on itself.

So it's really most useful if used as a whole, and you base your development on it. That's why it's so huge, because CQC has broad functionality requirements and works solely in terms of the general purpose layer (with I think one exception with is the iTunes SDK which has to be used to support playback of MP4s and that's only done at the CQC level.)

Anyway, that's why I think that having a strict single home for it, where it's developed and made available as binary builds for application development on top of official versions, really makes a lot more sense because of that. Yeh, someone may build some private version for their own application and you couldn't stop them, though trying to disguise that fact would be so much work it wouldn't be worth it.

I actually don't mind that commercial applications would be built on top of the general purpose part of the code, as long as they give proper attribution in their documentation, packaging, and product info dialog boxes. I certainly wouldn't want someone trying to just build CQC and start trying to sell it, though that's probably inevitable given the level of moral constraint out there. Hopefully they couldn't get away with trying to sell what's freely available but they'll probably try anything.

I think you are making a good decision taking your time and selecting a good home and licensing terms for it. There's no rush, do it right the first time. If you try to make changes later on down the road it'll be a lot more difficult. Meanwhile we'll get by...

What platform are you on, BTW? MSFCv? Does MS offer free development platforms for the version you are compiling with?
 
CQC and CIDLib (the underlying general purpose layer) are written in C++ using Visual Studio 2008 right now. I doubt that there'd be a problem using a more recent version. It doesn't use the IDE, it's all command line, using its own custom build environment and project description language, for future portability purposes. The IDE of course is used for debugging, but not for project definition and such.
 
In positive news, it appears that CQC will not become an orphan. Mr Roddey has reconsidered, and is working to find a workable business model. Full details and extensive discussion at CQC forum. Personally, I was looking forward to looking at the BMW of HA software (Control4 is the Rolls Royce?); but until I can get all my EDT lightswitches programmed, I can't go onto other projects. I should have gotten Centralite ... anyone want to trade?
 
(Control4 is the Rolls Royce?)
I need to dig it up but, 39 Cent Stamp (from Remote Central) was nice enough to do some Photoshop work and pass on a .jpg he did for me when I once described Control4 as the Dustbuster of the home automation industry. It will pick up a bunch of little messes but, doesn't have the power or finesse to handle any large load. Since they've upgraded to their version 2, I would describe them more as the Honda Civic of HA. Crestron/AMX would be the Rolls Royce and Mister House would be the jalopy (it'll get you where you want to go but, you might be a little embarrassed if your friends see you in it).
 
I was looking forward to having access to the code as open source. I still think open source is a workable business model. Just look at Alfresco, Magento, and Zenoss.

CQC Community edition - Free/open source
CQC Pro - commercial, comes with support, proprietary connectors, and central management capability for installers

Any functionality developed by the community could be rolled into Pro, and core functionality developed by CQC would be rolled into the community version. The community version would basically be a fully functional core, but just missing support and specific proprietary features.

You could even make a business model of selling individual modules to Community Edition users. If someone needs support for Centralite, then sell them a module for $50. They need Rain-8 control, another $50. This model is nice because you get a ton of people installing it and using it since they pay nothing, but then they buy parts of it in increments. It's easier for people to justify spending $50 at a time, instead of spending several hundred all at once.

This is actually exactly how Magento does it. Community and Enterprise versions, but Community users can buy additional modules individually for more functionality. I've spent nearly $1000 on Magento modules for my site for remote dog training collars.
 
The problem is that pro installers don't really care so much what features the program has (as long as it has the core stuff that's required to do the job) so much as the economics of it. If there's a free version, they have to have arguments about why they are charging $X when there's a free version. Even charging for the DIY version, when the DIY cost was lower, was always a problem. They didn't like that. Of course it was the same product, so that made things worse certainly. But if a free version is good enough to be pretty useful, then it's also probably good enough to do a lot of jobs. And they get into that situation that they don't want. Same with anything that gets sold via consumer outlets as well. They'll prefer selling something that's available in that way, and you see pretty strong reactions when something that has only be available through dealers is suddenly rumored to be moving towards being sold to end users directly.

It creates a situation that makes it really difficult to cater to the DIY and pro crowds at the same time. The pros need the higher price for the larger margin, we need the higher price for the pro systems to make our money as well, but the DIYer won't pay that much. But if you set the price to a level DIYers can handle, then pros won't sell it because there's not enough margin. If you set separate prices for the same product, they pros don't like it. If you create a very limited version to sell for the DIYers, it's not really very competitive because it's so limited.

So it's the Catch 22.22 or something like that. So you either have to just cast off from shore and say you are pro only, and suffer the consequences if you can't do it, and it's tough because you are competing against very entrenched interests. Or you stick with the DIY market, and the very limited revenues that brings in. There's also other options, such as going some sort of Best Buy type route, but that kind of maneuver requires a lot of capital to create a slickly packaged hardware product on a fairly large scale.

I was actually kind of shocked at how limited the C4 interface is. We'd discussed doing a simplifed client before. But my view of it was that it would have to be pretty flexible to be useful. But, looking at the C4 interface, it's trivial. I could create that with our interface system in a week probably. But of course they have more of their own hardware which makes that lack of flexibiltiy easier for them, and having it be more canned and foolproof would be better.

So I'm very much thinking though the architecture for a second client that is of that ilk, hard coded, very simple, with its own internal abstraction for a core set of device types, which just work in terms of our driver system. That would allow for a canned system in which you only have to select the device, tell us how to talk to them, and provide a little info as to placing certain things in certain rooms or assigning certain things to well defined control points (i.e. kitching lighting, patio audio, etc... ) and you have a working system, within the more limited set of devices that this simple client can work with.

So we could sell a CQC Mini system, that was very simple, one machine, one client. And that client could also work as a client within our larger system, by itself or in conjunction with regular interface viewer clients. So it would allow for a lot of flexibiltiy, and it would be completely upgradeable/expandable from the mini system to a full system over time and such.

It's not something to rush into. You want to get it right. So I'm just kind of spinning the CPU on it in between doing a few other things, to get my ducks oriented before moving forward. There are a couple bits that would require real actual new non-trivial architecture. The rest would be making use of tools we already have.

And, BTW, the looming threat of people coming out the woodwork and demanding their money back months after purchasing if we open sourced it didn't help with that process. I've come to understand that vendors have little to project themselves against such things. Maybe in the end not all of them get anywhere, but for a company with limited revenues, who has to spend what it gets to keep moving forward, there's no way to deal with such a thing. Credit card companies will allow almost any chargeback by their customers long after the fact it seems, and that will tie up any new revenues for long periods of time until the case is decided. Being a very trusting person, it's a side of business that I've discovered I really don't like, and that I was very lax about protecting myself in the past.
 
If the "Pro" version had some very installer specific features, you still probably make it very attractive to them.

- An easy way to do branding. As an installer, I could remove all reference to CQC and put my company name into it.
- Centralized management.
-Installer has a server. CQC box at the client's house establishes an encrypted connection to it and maintains that connection. If the client needs troubleshooting help, or changes, I can use my centralized management box to push those changes down to the client.
-Templates for different things. I can select a template, and then hit a list of checkboxes for each client that I want to push the template down to instead of configuring it for each client
-The centralized server could allow you to "link" together multiple homes. Like if I were a customer and had a cabin and a regular home. I could control everything through a panel in either house.
-The centralized manager could also provide offsite video surveillance storage for customers.

YOU could actually run the centralized management server. Installers would get access to it when they got the Pro version. And you could sell bits and pieces of the functionality to Community version users, such as "linking" and offsite surveillance camera storage.

CQC, while a great piece of software, didn't exactly have a huge adoption rate. Part of it is because there just aren't that many DIYers that do home automation. It's a niche market, even commercially. Only 2 other people I know (in real life, not internet), and I know A LOT of people, have home automation systems. But I do know a lot of guys that have played around with it at some point. Giving away something for free is an almost certain way to increase your adoption rate, and if you make it extensible with additional non-free modules or support, you have a much larger potential customer base that is going to fork over the money.

I guess I look at it this way... If you can get people to use CQC over all of the other commercial options out there, then they will be more likely to spend money on additional things to extend the system. Right now, if I want to play with CQC, I have to spend money. Demos are fine for some people, but I rarely install them since with all of the crap I'm busy with doesn't really allow me to sit down and focus on it before the demo period expires. If I can whack something in, knowing that it won't expire, and that I can continue to use it without spending money, I'm all for it.

I looked at a lot of options for CMS/Shopping cart software for CollarWise.com. Many were free, many were commercial, and some were hosted. I eventually chose Magento, and the reason I chose it was because:
- It worked
- It was free
- I had the option of purchasing additional functionality as I needed it
- I have the option of purchasing full support for it
- There are independent consultants that are familiar with the code and I can pay them to make it do whatever I want if I don't have the time

This was in February when I first installed it. Since February, I have required some additional functionality on the backend and the frontend, and I've purchased around $1k in additional modules. I needed to be able to hide the price on some items until they were added to the cart because of manufacturer agreements, I needed a one page checkout, and on the backend I needed some better reporting tools. Out of all of the times I've purchased software, the model that Magento uses is by far the best experience I've had. There's a strong community of people that use it, so it's easy for me to converse with others on how to do things, and I can buy just about any functionality I need when I need it.

Can you tell I'm trying to convince you? :( Actually, I just hope you fully explore the option instead of writing it off as unworkable. If it won't work for you, it won't work for you. But it is certainly one of those things that could have a strong community following and would greatly benefit from that.
 
Now you're talking... Sell CQC as a subscription service, it's the way all the other vendors are going. Microsoft, Google..

You could have a home/DIY version that is a software product. Open source or not, through that vehicle you still get everyone developing drivers, templates, testing for you, etc. The professional service is a cloud based service, sold through installers or directly by you.

You might need to make some code changes to accommodate it. Right now your apps aren't very good at dealing with latency, you may have to make some performance changes and test with a WAN emulator. Do things like get rid of serialization etc, adjust timeouts, add some retries and redundancy.

Definitely some good possibilities along those lines. A customer wants in home access $X. Mobile/Remote access add more $$$. Break it up however you want.
 
I don't think that a cloud type scenario would ever work. No one is going to risk not being able to control their home if their internet access is lost. It's been brought up before and recieved a resounding negative response from any pro installers that were involved and most users, that I've seen.

Obviously there's room for providing net based services, and we know them by heart, having discussed them many times. But most of them would require a fairly substantial investment in infrastructure. You can't offer stuff like that and not have a real IT team and back end redundancy and failover plans and all that. We'll get there at some point, since it's a no-brainer to do.
 
I don't think that a cloud type scenario would ever work. No one is going to risk not being able to control their home if their internet access is lost. It's been brought up before and recieved a resounding negative response from any pro installers that were involved and most users, that I've seen.

Obviously there's room for providing net based services, and we know them by heart, having discussed them many times. But most of them would require a fairly substantial investment in infrastructure. You can't offer stuff like that and not have a real IT team and back end redundancy and failover plans and all that. We'll get there at some point, since it's a no-brainer to do.

Well you definitely want redundancy, but you would be surprised at how many vendors are selling cloud based services and don't have it. At a basic level you would only need a couple of servers with enough horsepower to service your clients. Since you are in control of the client app code you can program in the redundancy, otherwise you could subscribe to some load balancing. Honestly, though doing it with MS platforms drives the expense and complexity up over doing it on linux. Also with VM services these days, redundancy can just be your provider spinning up a new VM image upon failure in a reasonable amount of time (although instantaneous could also be done).

I understand that there is a negative response, or maybe was last time you checked. But cloud based services are really new and lot of people have a lot of misconceptions, that is definitely the direction software is going though. Once they see it, they begin to understand. You could start with a prototype system on small hardware and as you sell subscriptions, scale it up.

To cover the internet failure scenario, maybe that is an opportunity to introduce your own branded hardware. Installers sell them the CQC server/appliance, it provides the in house communication and talks to the cloud for remote access and updates. Its a lot like the alarm system market that installers are already familiar with. And that's ideal because a lot of installers aren't going to want to maintain their own server hardware.

I am just thinking out loud here...
 
The problem is that pro installers don't really care so much what features the program has (as long as it has the core stuff that's required to do the job) so much as the economics of it. If there's a free version, they have to have arguments about why they are charging $X when there's a free version. Even charging for the DIY version, when the DIY cost was lower, was always a problem. They didn't like that.

As someone who contemplated going Pro, I never saw this as a problem.

You want the product to be cheap so the potential buyer is interested. The money is in the service that the Pro offers, such as the configuration of the system and the support. Not to mention the experience that comes along with it. We all know that CQC has a steep learning curve, but is the most flexible on the market (and my opinion the best).

I still believe that Charmed Quark should run officla training and have CQC approved installers and make money from the peripherals of the system

Mick
 
As someone who contemplated going Pro, I never saw this as a problem.

You want the product to be cheap so the potential buyer is interested. The money is in the service that the Pro offers, such as the configuration of the system and the support. Not to mention the experience that comes along with it. We all know that CQC has a steep learning curve, but is the most flexible on the market (and my opinion the best).

Mick

You would think so, but it's not the case. Maybe it's just inertia in some cases. That's how they've made their money in the past, by margin on the proprietary hardware of companies like Crestron, Lutron, etc..., so that's what they feel comfortable with. And I guess it's because they don't have to then argue about what their time is worth, because they don't charge as much for their time that way, getting most of it from hardware margin, which is only possible for hardware sold exclusively through dealers.

But, one way or another, most of them are very much not into selling something anyone else can buy directly. I think that's changing. There's been more discussion of it on the integrator based fora and such. But, if you are selling Crestron, at least for now, it's not something you have to make a decision on. You can still get the big margins on that equipment, and so why change I guess.
 
Back
Top