PDA

View Full Version : Qt Licensing And Programming In The Real



rushtontb
8th September 2008, 14:53
Hi!

I've used Qt off and on with Commercial licenses for about five years now, and recently a situation at my company has caused me to ask questions about the Qt licensing agreement that I cannot get a straight answer to. I have read the Qt license agreement(s) (they've evolved in the last five years) and there seems to be no straight answer to my questions.

The current commercial Qt licensing agreement states that I must have the license assigned to a specific, named developer. It also states that - should the developer leave the company or the project - the license can be transferred to another developer, but only once every six months. Perhaps my experience in the software development world is unique, but I have worked in places and projects where developers come and go more often than six months. In addition, the release engineering group at my company has a bevy of engineers, any one of whom should be able to do a full build - using a Qt license to produce the product - at a moment's notice. And then, I also work at a company where we wish to be able to build - and as a result, we buy licenses for - multiple platforms.

The questions I have are these:

1. Does Release Engineering need to buy one license for each platform for each release engineer who might be called upon to build the product? This seems not rather well thought out. If the release engineer "named" in the Qt license is on vacation for two weeks, technically, my company cannot ship the product until the engineer returns. Does that make sense to anyone here?

2. Generally speaking, I've noticed that there are very few software developers who are equally skilled in Windows, Macintosh, and Linux development . If my company buys a 3-OS Qt license, does that mean that all the builds for Linux have to be done by someone who only cares about Windows? Does my company have to buy three separate licenses - one for the Mac genius, one for the Linux guru, and one for the Windows whiz?

3. I have purchased, independent of Trolltech, five (5) books on Qt development over the last five years. Each one is chock-full of Qt programming examples. Even without a Qt license (I do not own a commercial Qt license, nor do I have the open-source version of Qt), I believe I have the right to express myself, and that this right includes entering text I read from a book into a text file. Am I in violation of any Qt licensing agreement if I do so at my company, where my company has bought a Qt license but has not named me as the "named" developer?

4. Hypothetical situation: I am the Qt license-holder for a 3-OS Qt commercial license that my company has purchased. I am a Windows developer and develop - using the Qt framework - a Windows application. One of my colleagues is a Macintosh developer. The Mac developer is not the named developer on the Qt license - this implies that they cannot build on their Macintosh the Mac version of the Qt application I developed. However, since the Qt licensing agreement cannot dictate who uses the hardware, I can login to the Macintosh, build the Mac Qt application, and then let the Mac developer test/debug it. Is my company now in violation of the Qt license agreement? Or does the Mac developer have to drag me into their development cycle every time they need a new Mac build? Or do I have to buy a Linux box and a Mac box just to do builds? (please spare me any jokes about VMWare...) Do I then become the Builder for my group? Technically - as a result of the Qt license - I am authorized to build for Windows, Mac, and Linux, and am legally permitted to release my built application and all of its attendant development data files (sources, debug files, etc.) at my discretion (it's a commercial license, so I don't have to give source code away outside the company, but inside it's okay) to the developers in my group. Effectively, I become the Builder. Is this a violation of the Qt commercial license?

5. Extending the hypothetical situation: my 3-OS Qt license allows me to install the Qt framework and tools onto, at the very least, three different machines (let's assume I don't want to virtualize any of them, because that's scary). If I set up scripts and processes such that, from a network connection, I can (a) log me in, (b) run a build, and (c) return the build products to a network-accessible location, am I in violation of the Qt license agreement? From the computer-user-tracking point of view, there is no way to tell that I am a person who is actually "logged-in" (the computer doesn't know I'm not sitting at the keyboard). How would Qt enforce this? All the records that they can subpoena would show that - on multiple occasions - I had logged in to the build machine and performed a build, just like the Qt license agreement allows me to do.

Any assistance with these deeply philosophical issues is welcome. Especially from Nokia's lawyers. ;)

rtb

jacek
8th September 2008, 15:07
If you want authoritative answers, better contact the Trolls.

rushtontb
8th September 2008, 15:32
Jacek: thanks for your response. And you're probably correct. My big complaint is that this stuff isn't obvious in their online FAQs or their documentation or even their license agreement. I've gotten word (from another within my company) that the Release Engineering question above has an answer (which we received after asking the Trolls): a build-only environment (aka Release Engineering) can perform builds by any Release Engineer for any OS they have a Qt license to do. This means that one 3-OS license purchased by Rel Eng will allow any person in Rel Eng to do a build. I was going to suggest to Rel Eng that they assign the license to the department head or sub-division manager, and let them assign who they want to do the task.

Another complaint is that the Trolls don't seem to offer site-licensing for their tools. That seems, well, odd. As a corporate developer, I would prefer to have a "site license" which allows me to throw any set of developers at a task that makes use of Qt without worrying about who's named on the license agreement. And I am (or at least, my corporation is) happy to pay for the privilege. If I were cynical, I'd think that Trolltech isn't interested in corporate development efforts; they want people to do open-source instead.

Thanks,

rtb

elcuco
8th September 2008, 22:31
I am not a lawyer, but IMHO, this kind of license cannot be enforced. I would buy 6 licenses and let 6 people write code. What happens inside - they cannot see, and even if they can, they have no mean to enforce this.

I hope Nokia will change this issue, and lower the prices :(

rushtontb
9th September 2008, 14:22
I went to the Trolltech website and sent them a "contact us" request, regarding site-licensing. Their response was:

"We do offer quantity discounts for large deployments of Qt."

I'm happy to pay more for a site-license, but keeping track of which developer has which license seems more bureaucratic than it needs to be. Of course, MSDN sort of functions the same way, but they have less issue with us shifting developers (not to mention the fact that I get a whole lot more from an MSDN subscription than I do from a Qt license). I really want to just pay one fee and not have to worry about the license-police flying from Norway. Maybe they could just attach the license to the hardware? Or do it the Apple Way: give the dev tools away for "free" with each piece of hardware they sell ("free" meaning my hardware costs are higher because it's got to cover the cost of the "free" software). :rolleyes:

And no, I'm not in tune with Herr Stallman. Software Piracy exists, and is wrong. :mad:

wysota
9th September 2008, 17:41
The licence is not about "pushing the buttons", so it doesn't matter who performs the actual build. If your head release developer is on vacation, go ahead and build the code. The licence is about working on the code. So if you have three people "entering text into text files" as you said, you need three licences. It doesn't matter that the code is then built once (which might suggest you need only one licence).

The six month rule is to prevent a situation when you share one licence among 7 developers - one working on Mondays, another one on Tuesdays, etc. In that case you need 7 licences and not one (one developer working at once).

If you have three people skilled in different platforms each, don't buy a single three platform licence nor three three platform ones - buy three licences for a single platform so that you can perform a build for each of the platforms. And make sure developers don't "cross-work", it would violate the licence (regardless of the being caught doing that).

As for books and code within - you can't copy the code from a book into your project. You have to be sure you are not violating the copyright of the author of the code (which is probably the same as author or publisher of the book). The same as you can't reprint part of the text of the book, you can't reuse the code unless it's explicitely mentioned otherwise.

luf
9th September 2008, 23:00
As for books and code within - you can't copy the code from a book into your project. You have to be sure you are not violating the copyright of the author of the code (which is probably the same as author or publisher of the book). The same as you can't reprint part of the text of the book, you can't reuse the code unless it's explicitely mentioned otherwise.

You are right, but the funny part about this one, is that if we consider all books ever written on programming, all written code is for sure in violation with the copyright of one book or another, as someone might just have written those three lines you just wrote....
(in theory even a simple "for (int i = 0;i < 10; i++)" might be a violation of a copyright, if you learned it from reading an example in a book that wrote the same line.

So I guess we all are copying code :)

wysota
9th September 2008, 23:26
You are right, but the funny part about this one, is that if we consider all books ever written on programming, all written code is for sure in violation with the copyright of one book or another, as someone might just have written those three lines you just wrote....

That doesn't matter. You can make the same invention/discovery/work without violating someone's rights as long as you're not "too much inspired" by the "original". If you copy it literally, you're in clear violation. If, inspired by a concept, you create something similar (but clearly different than the "original"), it is fine. It would be nice though if you mentioned what inspired you to write such a solution by referring to someone's work.


(in theory even a simple "for (int i = 0;i < 10; i++)" might be a violation of a copyright, if you learned it from reading an example in a book that wrote the same line.

No, I don't agree here because of many reasons I won't even mention here not to start a flame war (yes, I know, it's not my usual behaviour...).

rushtontb
10th September 2008, 17:57
My understanding about books about programming is this: they are intentionally chock-full of examples from which I am permitted to copy in my own code. Copyright law protects the Implementation of an idea, not the idea itself. That is why it's different from patent law. So if Charles Petzold writes a book about Windows programming and includes a chapter with ten examples of how to create Menus, I can use the code listed in his examples - character for character - to create my own Menus in my own application. That is the entire point of writing a book with example code.

Of course, your mileage may vary, and IANAL. But I agree with luf - unless you're in your sixties at this point, pretty much every line of code you've written was written by someone else and very likely placed in a book somewhere, protected by copyright.

As for typing text into files: there is no law, and even if there were, there is no way to enforce it, to prevent me from typing code that looks like:


QWidget* aWidget = new QWidget( null );

into any file on any machine that I choose. The above code right now sits in a file on a server that is not governed by a Qt license agreement, nor was it written by a person named in a Qt license agreement. The license agreement can only apply to the stuff that Trolltech ships to me - the moc compiler, the header files, and the source files, as well as any compilation of those source files. Since the above code is useless without those items (because neither gcc nor the Windows compiler will be able to compile the above code without them) it does not affect Qt's bottom line by my typing that code into a file somewhere.

Here's something true: Typing Code is Not Development. A Qt license's restrictions cannot be imposed on anyone who is not using Qt's sources, headers, object code, or the moc compiler. Since I can access all of Trolltech's APIs via the Internet, and since they provide examples on the public portions of their website, they cannot enforce any copyright infringement or license violation against me for copying and pasting their code. There is no Intellectual Property loss - they have published the information in a medium that is free to access by anyone.

From Dalheimer's and Pedersen's and et al.'s "Practical Qt: Real World Solutions to Real World Problems":


All the code examples are copyrighted by Klaralvdalens Datakonsult AB, the authors' employer, and you can use them freely in your own (commercial or non-commercial) software projects. You may not use the examples, however, for teaching or publishing without further written authorization. My apologies to KD AB, as I am unable to reproduce the umlaut over the second "a" in "Klaralvdalens".

I would hazard a guess that this same quote is in pretty much every book containing programming examples - if it weren't, that would be one more reason not to buy the book, which would tend to upset the publishers and authors who are trying to make a living publishing books about programming with examples.

wysota
10th September 2008, 20:50
There is no Intellectual Property loss - they have published the information in a medium that is free to access by anyone.

If there is a car with doors wide open standing in the street, it doesn't permit you to take it and drive wherever you want just because it was put in a public place with free access to everyone. If you hack into a network or machine that is not protected you still commit a crime and you can't excuse yourself that you didn't force any securities. So what you have written here is not an argument. If you take a closer look at the reference manual available on the doc.trolltech.com website, you'll notice a "Copyright (C) 200x" text at the bottom of each page. And nothing is changed by the fact that this is the reference for the open source release of Qt - it's still protected from being claimed as your own.

Copying GPL code character by character using a keyboard into your own application is in violation with the licence and copyright, regardless of the fact that the code is available for public view.

As for books you can take the code and use it as you want only if the licence permits you. If I write a book and say that you can use the quoted examples in opensource projects only and you use the code in commercial application, I can sue you for stealing my work. Even if you changed variable names and reformatted the code. The idea is Free (as in freedom of speech), the implementation might be not (both as in freedom of speech and as in free beer). The fact that you copy the implementation onto another device or modify it slightly it is still the same implementation. Otherwise you could take KDE source code, spend a few nights retyping the code onto clean files, change variable names and then say "Hey, I wrote KDE! I own the code!" and release it under a different licence (for example BSD or proprietary). If you take Van Gogh's "Sun Flowers" and make a perfect (or imperfect) copy you can only say you made a copy of Van Gogh (explicitely mentioning his name). And copyright is about making copies, right? :)

rushtontb
10th September 2008, 22:36
We keep coming back to the same problem. There is no way any code that's been written since the 1960's is NOT a copy of some other code somewhere. If you're publishing a book containing example code, it will get copied into someone's application, commercial or otherwise. Think about every line of code you've written. There is no way any of it wasn't written and copyrighted somewhere else - because someone, somewhere, had to tell you what to type, most likely from a book you read. A thousand monkeys typing in Emacs for a thousand years might actually produce compilable source code, but one person doing it on one machine is not likely to do it without help.

Algorithms can be protected by patents. Example source code cannot. Why? Because examples are intended to teach. If I use an example - something clearly stating "this is an example" - you cannot (successfully) sue me because of how or where I use it. Software development would grind to a halt if your view is the true one; everyone would sue everyone else. The fact that this doesn't happen, and the fact that the marketplace for books of example code (including "cookbooks" and "recipe books") is pretty large, suggests that "example" code is different from "source code".

But hey, thanks for giving me something to rant about on a boring business day ;)

wysota
10th September 2008, 22:45
The fact that two pieces of code are identical doesn't mean one is a copy of the other.

As for example sourcecode - take a look at Qt Quarterly examples, they all contain licencing information, the code is not public domain. Nobody forbids you from reusing the concept, but not necessarily the exact code.

God, how I love flamewars! And this time I didn't even start it! :)