Is Wizard-Code a Derived Work?
worldcitizen asks: "Now, with all the noise from the SCO case regarding copyrights, what constitutes a derivative work and who owns what, a question started creeping up: What would happen if Microsoft starts claiming copyright infringement or other Intellectual Property claims in the wizard-inserted code that Visual C++ generates? Would it be possible that even the simplest 'Hello, world' is tainted? Copyrights don't even require uniform enforcement. Could they selectively enforce it on Free Software projects for Windows that have used VC++ for development? Could they license it in such a way that makes it illegal to use Visual C++ for Free Software? Should this be a wake-up call to never use Visual C++ unless you have a cross-licensing agreement with Microsoft (obviously not for Free Software projects)?"
Honestly, anyone stupid enough to use MSVC deserves what they get. Dance with the devil, get burned.
I've had enough abrasive sigs. Kittens are cute and fuzzy.
Now they know they can possibly do it, and I guess they think it's worth a couple of big ones to try it out.
Code wizards are way more trouble than they're worth anyway. Especially with GUI designers, the code they generate is totally un-maintainable. I've had GUI designers barf on me just because I reformmated the comments in my code, and once that happens, you might as well throw all your GUI code out and start over.
Sure, writing it from scratch takes longer. But it takes a whole lot less time than re-writing the entire user interface when your boss says "move that button over there".
What would happen if Microsoft starts claiming copyright infringement or other Intellectual Property claims in the wizard-inserted code that Visual C++ generates?
Nothing yet, since they currently don't do this kind of limiting with the wizard-code.
Would it be possible that even the simplest 'Hello, world' is tainted?
Yes, if they prove that your Hello World came from a Wizard instead of other method. (highly unlikely)
Copyrights don't even require uniform enforcement. Could they selectively enforce it on Free Software projects for Windows that have used VC++ for development?
If they make a license which says "Forbidden to use with Free Software", and someone uses it, then yes.
Could they license it in such a way that makes it illegal to use Visual C++ for Free Software?
Yes.
Should this be a wake-up call to never use Visual C++ unless you have a cross-licensing agreement with Microsoft (obviously not for Free Software projects)?
No. They won't do this.
Buy a Nintendo DS Lite
Usually, there are terms and conditions attached to the redistribution of code that came with the development environment, and that almost certainly includes code generated by wizards and so on.
For example, the MSVC license tells you exactly which DLLs you can redistribute, and example code usually has a statement at the top. Wizard-generated code surely won't be any different.
Usually the software's license will exempt generated code but you will need to read it to check.
In fact you should read the license before you pay for the software and certainly before you commit to using it.
This reminds me of the April Fools Day ask Slashdot question:
"Isn't it possible that Microsoft is using GPL code in Windows, and we could NEVER KNOW ABOUT IT?! Since we'd never know, they're probably doing it already. Has anyone notified the FSF? What are we going to do about this!?"
The obvious place to look for answers to this sort of question is in the VS license. If you don't like the terms of that license, use Emacs, dude.
Hehe. "I wrote my novel using MS Word. Now that I'm selling it, couldn't MS come after me for copyright infringement, since I used their pagination tools?"
There are no trails. There are no trees out here.
No.
Read your visual studio license... if you have one.
Is Wizard code a derived work?
Is Harry Potter a Wizard?
I've wondered about this. Not that Microsoft would do it, but maybe a smaller stupider company in a subtle way: claim copyright on the output of the program.
if the program spits out code that's already written (i.e., it copies a template and replaces some variables) I'm sure you could say YES of course it's possible.
But what if the program spits out, say, machine code? What about compilers? what if the code is generated from your input only.
I remember reading an interview with electronic musicians Autechre. They use algorithmic generators for some of their music and they wanted to put out their next CD as a program instead of audio. But they didn't because they wouldn't be able to claim copyright on the output and folks would put out the output as their own compositions (Autechre is usually the one everybody copies for the cutting edge sound anyway).
I was thinking, GOOD, imagine if Yamaha or Native Instruments copyrighted the output of their instruments/software. That would SUCK.
Anybody know how the law works here??
In the few situations I've seen, the inputs to the tools are thought of as being the "real" source code, and the C output is conceptually treated as object code, as weird as that might seem.
So, just copyright your stream of mouseclicks into the Microsoft IDE. They're your clicks; you invented them. And if someone else clicks on the pixel 51 down and 325 to the right of the upper left corner of their IDE's window, sue their ass off!
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
For example consider this from the GPL FAQ:
Can I use GPL-covered editors such as GNU Emacs to develop non-free programs? Can I use PL-covered tools such as GCC to compile them?
Yes, because the copyright on the editors and tools does not cover the code you write. Using them does not place any restrictions, legally, on the license you use for your code.
Some programs copy parts of themselves into the output for technical reasons--for example, Bison copies a standard parser program into its output file. In such cases, the copied text in the output is covered by the same license that covers it in the source code. Meanwhile, the part of the output which is derived from the program's input inherits the copyright status of the input.
As it happens, Bison can also be used to develop non-free programs. This is because we decided to explicitly permit the use of the Bison standard parser program in Bison output files without restriction. We made the decision because there were other tools comparable to Bison which already permitted use for non-free programs.
This makes it pretty unclear. A Wizard is certainly "copy[ing] parts of themselves into the output for technical reasons". It sounds like Bison has an explicit exception for this case, but that's just pragmatism because other comparable tools existed.
- adam
http://alt-usage-english.org/excerpts/fxbegthe.htm l
If a program can spit out code, notwithstanding code that does more than the minimum to complete the requested task, then the only creative element is the wizard user's decisions. Therefore it should belong to the user regardless what the license. Primarily because the wizard user has already paid for the creative elements of the development environment by purchasing the IDE.
If the code does more or differently from what the wizard user asks (like efficient design, or using one piece of code, where the wizard doesn't actually do anything but give the wizard user a security blanket), then stick that in a library and charge for the library. Otherwise that wizard is a contradiction in itself.
Stop trying to give users licensing heebie-jeebie, you can make your money otherwise (licensed libs), and quit trying to make creative people pay for their own creativity.
I have no problem making a buck on Free Software. Neither does FSF
I have a problem where someone tries to charge the developers. That's extortion.
The message on the other side of this sig is false.
Does linking to GPL standard C libraries force you to open source your code?
Just about every commercial product released for linux links to that code and includes some GPL executable code in its binary executable image.
Quoting the GPL won't help since your quoting a legal document which has not had this question decided by a court.
Microsoft could write a license that says developers using their products must wear funny clothes and send all their money to Bill Gates, but it would be meaningless until tested in court.
Open source developers would be better off coding better apps than Microsoft instead of playing amateur lawyers. Give users something they think is better than Microsot and the market will settle these "what if" questions.
-- Slashdot: When Public Access TV Says "No"
if this is a major sticking point for you, there's no reason to use wizard generated code. i know that a lot of people find it useful, but for me personally, i would rather write this stuff by hand. of course, i've never built anything with more than maybe four dialogs...
this is entirely a contract law problem
(1) read the license agreement that comes with the development tool in question, check what the terms are regarding this sort of code. if you don't like those terms, goto the next tool.
(2) have accepted the license agreement (say, in 1), then also check to see whether either party is allowed to vary the terms of the agreement - i.e. is there a provision that allows for the terms to be altered without explicit agreement between the parties ? if there are problems here, go back to (1) above. if you choose to accept these sort of provisions, then you've chosen to accept the consequences. no manufacturer would exert such arbitrary provision because no development house would ever buy such a tool, it's simply not commercially viable.
(3) now that you've agreed to the terms, you've entered a contract, and unless the provisions say otherwise, the contract is "fixed", and can only be altered by agreement between the parties (well, there are a few other issues, but not worth mentioning here).
It's a programming tool. By design its output is expected to be distributed -- except in the case of the Educational versions that don't allow commercial use. For Microsoft (or any other toolmaker) to claim that after the fact is like Stanley Toolworks claiming that since you built a house using one of their hammers and sold it to someone, that means they can put a lien on that house. I'd like to see that stand up in court.
That said, there are some DLLs that come with Visual Studio that can't be redistributed. I don't remember where the list is, but I do remember coming across it a long time ago.
Yes, GPL. But not every Free Software license.
So what if "GNU General Public License and a couple others" of one version's EULA becomes "any license requiring publication of full or partial source code of derivative works" of the next, or worse yet "any license approved by the Open Source Initiative"?
Will I retire or break 10K?
Primarily because the wizard user has already paid for the creative elements of the development environment by purchasing the IDE.
The wizard will usually copy a library of boilerplate code into the generated program. This boilerplate code is copyrighted. The IDE's EULA specifies under what terms the boilerplate code is licensed for distribution.
then stick that in a library and charge for the library.
This is exactly what some IDE publishers are doing. The terms under which the wizard's library is licensed become more liberal as the customer pays the IDE publisher for more expensive versions of the IDE.
Will I retire or break 10K?
The stuff that Visual C++ generates is probably not copyrightable because it is not very expressive. (Indeed, it is generated by a machine!)
Also, you can use Visual Studio without it generating crap. That is how I always build my projects, because the wizards go wrong too often to be worth it.
But what about how EULAs can change, retroactively? As I understand it, Virginia has passed such a law, allowing this. So the EULAs in reality have no meaning, or rather are rendered meaningless because the law has no meaning.
Gag, I read this and it sounds like babble, but I can't find a better way to say it.
Virginia and some other states specifically allow the EULAs to float, which puts us in a specifically feudal situation. But Congress also periodically considers adding such a law, at the behest of the software companies (especially M$). Assuming that they eventually pass it, it is likely to become retroactively effective, ex-post-facto not withstanding.
I understand that this is technically not legal under contract law (unilateral modification) -- but our current law is so far from legal contract law, it isn't funny.
Nor do I really expect that our courts are going to have much sway any more. They've already abandoned their authority in too many ways, in this field: I don't think it's going to get better.
In the end, my own analysis is "if the government is going to encourage theft, and there are some around who want to steal, then theft is going to happen, and there's not a lot you can do about it."
Gotta remember: law isn't solid. Right and wrong, and natural law are solid. As a country goes bad, though, law gets spongiform.
Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
You know, IANAL, but not long ago I read an IAAL slashdot comment (as opposed to IANAL), and he said that if you ask about your chances in any lawsuit, the lawyer will say "50%: it depends on how good I am vs. how good the other lawyer is, and what the judge is like."
So any question you ask, still has to be answered in a court of law if you get sued, and at that point, your chances are 50%. Except against Microsoft, which is likely to have a much better lawyer than you. Or engage in barratry. Or sponsor another company to drive you out of business with barratry.
Now, I rather suspect that in a country with a decent legal system, that "50%" answer would not be the case. But we seem to have a "50%" situation in law right now.
That being the case, I wonder if the $200 isn't $200 wasted.
Comments, anyone? (Especially lawyers?)
Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
I don't think it is a derivative work, since I cannot see an original work except my own. The wizard is a tool that takes some input and creates, based on some rules, appropriate output. The C-preprocessor does similar work, so does a compiler, or even a printer driver that saves PostScript files.
As I am generally adverse to Microsoft and every ultra-bloated software package that comes out of the unholy lair in Redmond, WA, I had to find myself a semi-useful, similar alternative to VC++ for my C++ programming class this semester. What I found is Dev-C++ from Bloodshed Software. From their website regarding Dev-C++'s features:
:
Bloodshed Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language. It uses Mingw port of GCC (GNU Compiler Collection) as it's compiler. Dev-C++ can also be used in combination with Cygwin or any other GCC based compiler.
Features are
- Support GCC-based compilers
- Integrated debugging (using GDB)
- Project Manager
- Customizable syntax highlighting editor
- Class Browser
- Code Completion
- Function listing
- Profiling support
- Quickly create Windows, console, static libraries and DLLs
- Support of templates for creating your own project types
- Makefile creation
- Edit and compile Resource files
- Tool Manager
- Print support
- Find and replace facilities
- CVS support
Source code : Delphi 6 Source code of Dev-C++ is available for free under the GNU General Public License (GPL)
I've used it for two simple labs so far, and while it may not be as "full-featured" as VC++, it's also simple to set up and use without a fuss, AND it still looks and feels to this novice programmer, just like VC++. (minus the horror of "Microsoft" bloat as far as I can tell) In fact, using WinXP at the school computer labs with VC++ 6.0 has given me compile errors and random memory overflow problems (they have new computers, it's not bad hardware) whereas Dev-C++ has not given me any problems building, compiling, and executing my programs. (Yes, I had random errors with VC++ that were NOT related to my program as I restarted the school computer and it compiled just fine with 0 changes in my code - go figure)
Linux is dying! Thanks SCO!
to be honest, i don't understand the motivation for using vc++ in a non-professional (read: outside of work) capacity in the first place. i realize the $99-$129 "professional version" price tag that i've seen, and the even cheaper academic pricing, are not too shabby compared with "enterprise" pricing... but they're still more expensive than $0! there are more than several freely available alternative compilers for win32 machines - cygwin gcc, borland (debugger also), djgpp, open watcom, lcc, MinGW, and Digital Mars (nb: haven't examined the license in detail) to name a few. can anyone else shed some light on why a developer might prefer vc++, or under which circumstances vc++ might be considered a clear-cut better choice than one of the alternatives listed above?
Read the EULA, Luke!
Mod me as you will, just thought you two were funny.
And Khy, please stop advertising for me. I build my own hype machines you know =D
Lata,
~Daedalus
" What luck for rulers that men do not think" - Adolf Hitler
I find it interesting that Anders Hejlsberg reverted to wizard-generated code for Visual Studio .NET. I think it is more restrictive than the .DFM model, because with the .DFM model all the object properties are data in the .DFM file, and you (if you know what you are doing!) can override object methods in terms of how stuff is written and read from the .DFM file. If you want to do comparable fancy stuff with .NET (like composite widgets and setting properties of component widgets of composite widgets) you may have to start looking at overriding the classes that control the round trip from Form Designer to code and back (the code DOM classes) and things start to get ugly fast.
Where things start to get code-wizardy is in using Delphi to generate ActiveX controls. You generate an ActiveX control by starting with a VCL control, and then a code wizard spews out tons of stuff. Their model is that they have base classes that handle all the ugly ActiveX stuff, and that you decorate a class derived from such a base class with your own interfaces. They are essentially using the Bridge Design pattern to have your ActiveX object forward all of your interface method calls to a contained VCL control. An ActiveX control is a bridge to a VCL control much as a VCL control is a bridge to a window-handle control.
The wizard takes care of 1) the generation of the ActiveX bridge class code from the ActiveX control, 2) the necessary registration calls to go into your "library" app that compiles to a DLL, and 3) generating the "type library" that exposes your ActiveX control methods and properties to the outside world.
Writing your own VCL control is strictly a matter of inheritance, and any properties you add to the "published" part of a class are exposed to the Form Designer. I think what gums up an ActiveX control is the requirement for maintaining a type library and the requirement that the ActiveX be a bridge to a VCL control. I find it really easy to make changes to a VCL control. Since I don't want to rewizard the ActiveX everytime, I find I have to edit the ActiveX control to keep it in synch with the VCL control. The best way is to use the Type Library Editor, because that allows you to change the ActiveX control interfaces in synch with the IDL code that generates the type library, and once you have updated the ActiveX control interfaces, you can easily write the forwarding code to the corresponding VCL methods.
Can you ditch the wizard and just edit IDL and Delphi code. Good luck! Besides IDL (Interface Design Language -- the C-like code for specifying COM and ActiveX interfaces and properties) being a piece of work in its own right, Delphi imposes its own bizarre (undocumented) restrictions on IDL, and you may as well accept life as it is and make your interface changes through the Type Library Editor.
With practice, I find that I can use the Delphi Type Library Editor to modify and maintain and ActiveX control, and it is reasonably easy to do, but it was far from obvious how this was all supposed to work when I started out, and the documentation or how-to books were far from completely helpful on this score. In other words, in addition to using the wizards to spit out an ActiveX from a VCL as a one-time operation, I can make changes to the VCL and keep the ActiveX in synch with the VCL, only it is a really good idea to make all the ActiveX interface changes through the Type Library Editor, which is a really clunky way of writing code sometimes, but it is the only way to keep the IDL and Delphi code in synch and Delphi happy at the same time.
Do you suppose you can write an ActiveX control without Wizard support? I think we all have read Petzold and understand enough of the inner workings of the Windows API to write our own class framework for it or to use your cleaned up version of MFC for it. But ActiveX takes the Baroque period of computer programming into the Roccoco. Most how-to books tell you about IUnknown and after that they are cookbooks into the wizards. Can you (easily) do an ActiveX control without wizard support?