Carmack is my personal hero. I'd like to share this with you:
At 09:59 PM 1/27/2008, you wrote:
>
>Hey John,
>
>How does someone like yourself become a better engineer? I'm
>nineteen, and I dropped out of high school during my senior year to
>work in game development. Your work is inspiring on many levels.
>Were you simply born with the ability to learn very quickly, or was
>it the result of hard work? I'd like to be the best engineer I can,
>but I'm not sure how to keep improving. What are your thoughts?
Using your time effectively is very important, and there is often a
non-linear relationship between the amount of time you can stay
focused and the amount that you can learn or accomplish. It is often
possible to get more done in a highly focused 12 hour stretch than in
a normal 40 hour work week that is interspersed with email, chat, and
other distractions. Someone that can be completely obsessive about
something does have an advantage, but the same questions about focus
apply for any amount of time you choose to devote to an
undertaking. Most people work at only a fraction of their potential.
John Carmack
It profoundly inspired me. From that day to this, I've worked to push my technical ability as far as my brain and body allow.
When I someday succeed in my life's work (to build a game studio), I'll owe it entirely to him.
Wait, the guy dropped out of high school to work in game development? What does that mean? He dropped out of school to take a job or to pursue a job?
If I were an employer I would have to question his commitment and ability to complete projects since he abandoned a rather important one right there at the end.
I dropped out after I had secured a stable internship at a local game studio.
After working for them over the summer of my Junior year, it seemed like a good idea to continue working for them rather than attend my Senior year. Thankfully, I was correct in that assessment. Otherwise I would have wound up with no career and no diploma... :)
But High School isn't the same kind of commitment as your average project, because High School is compulsory. He might have just been waiting until he was old enough so he could commit to his actual ambition.
I would say that completing high school is rather high in the list since a great deal of companies wouldn't look twice at him since they often want to see university degrees.
I'd argue that despite those millions, his wealth_created:income_earned ratio is still exceptionally high. Many people earn far more doing much less for the world.
Oh, he was not humble back in the days. He was often talking about things not even the next-next-next generation would not have and left some people upset. Some random interview from that time http://www.quaddicted.com/magazines/pc_zone_55_october_1997_...
He still delivered amazing technology. I just wanted to make that counterpoint. His personality is rather calm but don't let that fool you.
Is that because of the technical achievements that Carmack has done (Carmack's Reverse, Fast inverse sqrt, etc.)?
You still have to give it to Notch for showing that you can make an extremely entertaining game while not pushing any hardcore boundaries, such as graphics. Perhaps this will inspire more people to get into software development.
More due to their attitudes towards source code and supporting a new generation of developers (Notch pays lipservice to open source and claims to be an avid supporter of the Pirate Party and an opponent of IP law yet aggressively pursues any competition that resembles Minecraft in any way with legal threats)
In terms of actual code they're not even in the same league so I won't bother comparing anything Carmack's achieved with Notch's magic number and circular reference-ridden Java code.
Before Valve and Gabe-mania my first dev crush was John Carmack. His postings and .plan files where were not only shockingly open and honest, but, I guess, genuine... it was apparent that here was a very successful man that was like me...an unrepentant nerd and geek! It is nice to know that that attribute of the company in general has not changed.
Every once in a great while I will get the feeling that I am the most productive coder on the planet. Then I remember Carmack's .plan files and am humbled.
The collision in namespace is amusing. For a second I thought this was about a modern open source compiler for the programming language called Id. It was an influential language with strong stress on functional style implicit parallelism and efficient array like data structures called I-structures. I would kill to play around with such a tool. (and kill double if a free CM-5 came with it)
The real deal is no less exciting. The clash in name space does not end there. Cormac is the first name of one of the developer's of a distributed memory implementation of the language called phLuid.
It will be interesting to see how id (or Carmack himself) will react to eventual pull requests. As far as I know the code has been frozen once released as Free Software on id FTP server.
I really doubt they'll react at all. id releases source code when they're done with it. There's little reason for them to invest much time in a commercially dead codebase, they've always got new stuff to work on.
Id Software feels like an anomaly regarding to open source in video games. In web development for example there is such a strong and diverse community supporting frameworks and libraries under permissive licenses. Why hasn't something like it happened with video games?
1. Consoles. This could be due to wanting to keep libraries in-house as a competitive advantage, or just due to console-maker licensing restrictions.
2. There is more competition. For the most part, all games are competing for the same audience within genres, and there is a lot of cross-genre intersection of audiences (e.g. people that are into both JRPGs and fighting games). On the other hand, there doesn't necessarily need to be as much cross-over between the intended audience of web sites.
3. There are fewer complementary products (related to #2). GMail doesn't compete with eBay, but Mario competes with Sonic.
4. 'The Evil Empire' A good portion of game development now happens under the Electronic Arts umbrella (at least as I understand it). Their corporate culture seems to scream 'big company' with all of the stories of them living off of the life that they suck out of new hires working 80+ hour weeks.
It'd be really interesting to see more game development companies from the 80's and 90's release the source code for old abandonware. I was hoping to see Commander Keen (one of my favorite old games from my youth) on this list, but apparently it's still closed source.
Carmack is in a perfect position to provide another boon to the free software world: a license that doesn't allow unlimited redistribution by every recipient.
I know this isn't "free software" per Stallman's definition (precludes freedom 2), so don't all rush to flame me at once here. I believe, however, that the GPL's requirement that all software can be resold and redistributed by any recipient has been a big blight on the image of open-source software and has caused companies to actually tighten up lest their software and work become entirely unprofitable.
Someone needs to write a license that can be easily reused which a) releases all source code and requires the release of derivative versions, b) allows derivative works by users who own a license (perhaps up to a certain commercial limit) and allows them to share their changes with other licensed users, and c) restricts distribution of the code or any of its derivatives to persons whom the recipient in good faith believes to have a valid license to the software.
Unfortunately the GPL has ingrained in people that releasing source is the same as negating your whole investment. I don't believe things have to be this way. I believe that every software owner deserves a copy of the source, but I don't believe that every software owner has the right to redistribute that program practically without limitation as the GPL allows. If we have someone to lead the way in profitable source releases, I believe many companies will follow and at least part of the free software vision would be fulfilled: source code would come distributed with every program.
Companies like id who resell their engine techs to other commercial developer studios would still be able to do so due to the commercial limitations in such a license and the requirements to own a valid license for id's particular piece of software and the code wouldn't have to wait five years to see the world. Anyone with the money to pay for the license isn't going to infringe because they know the court costs would be futile and cost 3x+ as much as just buying a license straight out. The open-source contributions could be incorporated into the commercial editions immediately (and hopefully vice-versa). I really don't think id et al have much to lose from this approach, so I hope someone would do it.
id is not beholden to a large corporate publisher and Carmack clearly has the interest and understands the benefit behind a source release. Carmack has the vision to do something like this, imo, and I really hope he does.
Short answer: no, FOSS couldn't possibly work without the ability to modify and redistribute, and licenses that attempt to suggest otherwise get rightfully rejected before they can proliferate. Source code has little value without the right to make and distribute modified versions. Attempts to create open ecosystems around proprietary products typically turn out badly, with very few exceptions.
Also, since you brought up engines like id's, I'd point out that copyleft licenses like the GPL make it trivial to profit even if releasing the engine on day 1, given that the numerous makers of games based on those engines don't want to ship their entire game under the GPL.
>Short answer: no, FOSS couldn't possibly work without the ability to modify and redistribute, and licenses that attempt to suggest otherwise get rightfully rejected before they can proliferate.
The ability to modify and redistribute continues to exist; the limitation should be equivalent to something like, "You are not allowed to use this unless you have a license", similar to the "You are not allowed to use this unless you agree to the licensing agreement" that many Linux distributions use to preface installation of the Oracle JRE.
You are free to disagree but I do not see any necessity for the provisions of the GPL that allow unlimited redistribution as long as source is included. It's not that I don't want people to use the GPL or that I don't find it worthwhile or noble to release software as GPL, it's just that I don't feel freedom 2, "the freedom to help your neighbor [whether they have contributed or paid anything or not]", is an essential component for all software.
I do believe that source should be included with all software, so I think there is a good middle ground somewhere out there and I want someone to seize it. I want the image to be perpetuated that giving your users source code isn't the same thing as bankrupting your company and/or resigning yourself to profit only on supplementary "support services". I don't like the image that has been perpetuated by things like the GPL that a source release == complete unsellability.
Ignore freedom 2 for a minute, and consider freedom 3: Free Software (and Open Source Software) requires the ability to distribute modified versions. That freedom can't meaningfully exist without also allowing the ability to distribute unmodified versions (since you could just make a trivial modification and redistribute). So, freedom 3 necessarily implies freedom 2, and you can't have FOSS without freedom 3.
What you've suggested amounts to the "shared source" model of "look but don't touch".
You also entirely ignored my point that the GPL still makes it possible for companies like id to easily profit from sales of their engines, without having to add further restrictions.
Also, the JRE became Free Software under the GPL several years ago. :)
>Also, the JRE became Free Software under the GPL several years ago. :)
No it didn't. The official JRE and JDK are both still proprietary software. That's the whole point of OpenJDK.
People can distribute modified and unmodified versions within a pool of licensees under my suggested license. That's the primary difference: instead of allowing wide and clear redistribution by any recipient to anyone else, you may only redistribute to persons with licenses.
Dual-licensing under the GPL is not really relevant here. There are good reasons not to dual-license. While it may work for id's case, it doesn't work in every case, and it's not the same thing: under my proposal no one would be entitled to a copy of the software until they satisfied conditions sufficient to obtain a license from the vendor. Under the dual-license scheme anyone content with GPL can use GPL without obtaining a specific license from the vendor.
As for the rest: you keep re-explaining what you want, but thankfully that won't make it happen. You can try to build a community around such restricted code, but FOSS has progressed more than far enough that restrictions of the form you suggest simply can't gain enough traction to take hold; you'd have to build a community from scratch, in the face of an openly hostile immune reaction from the FOSS community. More importantly, by adding such restrictions you remove several of the mechanisms the FOSS community has to protect itself from various critical failure modes, which makes such a scheme inherently doomed to fail in the first place. In a way, the reaction you'd get from the FOSS community comes from that community knowing that such a scheme can't work, and wanting it to fail quickly before it causes more of a distraction.
Among many other reasons, FOSS can't succeed when tied to a single privileged upstream vendor. Development of good ideas requires a community that can make changes the upstream vendor never thought of and doesn't immediately approve of, and any scheme that requires a license from the upstream vendor can't support a community like that. Such a scheme would also create a fragile community that the vendor could destroy at any time. Ironically, the possibility of forking a project and running with it in a different direction helps avoid fragmentation and prevent a variety of standard failure modes for a development community.
The FOSS community has numerous examples of successful forks, where the project just moved entirely to the fork and ignored the now-irrelevant original, and would otherwise have just died or stagnated indefinitely. A very short list of examples: Jenkins (forked from Hudson by the people actually working on it), LibreOffice (forked from OpenOffice.org by the people actually working on it), Xorg (forked from XFree86 by the people actually working on it), cdrkit (forked from the last FOSS version of cdrecord before the maintainer became even more visibly insane than previously demonstrated), EGCS (forked from GCC at a time when GCC had utterly stagnated due to excessive centralized control, and became the new GCC because all the development moved there; we could use a repeat of that right about now).
Take a look at https://lwn.net/Articles/282261/ , https://lwn.net/Articles/246381/ , and the various things Linus has written about "commit access" as a broken model. You can't have independent development when everone needs a license from one vendor, and you can't have FOSS without independent development. You certainly couldn't have a world where numerous companies, even competitors, can all cooperate in the same community and produce something useful.
I keep rephrasing myself because you seem not to understand. I am not suggesting that this model should replace the GPL or more permissive licenses entirely. I am not suggesting it will crush or destroy all free software and all extant models of free software licensing or development. I am merely suggesting a middle ground that would get source in the hands of licensed users instead of leaving them with nothing and promoting the idea that distributing source is the same as ruining your investment.
I understand that this would be more restrictive because it wouldn't allow you to share with certain people. The details, of course, are dependent on the final language of this hypothetical license, but as I said I would like most of the burden of compliance to rest on the individual consumer and not the publisher, i.e., "Do not use this if you do not have a valid license". This is not any different than what we have now -- commercial vendors put out closed-source software that says "You promise not to use this unless you are supposed to" in the EULA and this is blatantly violated by those who choose to pirate the software. I don't see how or why releasing the source would make this any worse, and I think it stands to improve profitability from specific games significantly.
You seem to believe that under this license forks would be impossible. I don't understand why you think that. Forks are by definition derivative works ("modified code") and as long as you comply with the license restrictions on distribution you can continue to release and host forks on GitHub et al.
Don't assume that people who disagree with you simply don't understand you.
I don't mean "fork" in the sense of "hit the fork button on github to do a 'git clone'". I mean "fork" in the sense of "I've taken over maintenance of this project due to lack of maintenance or fundamental disagreements with the existing maintainers". You can't usefully fork software in that sense when the original authors maintain effective veto power over the entire community. The ability to fork software in that way, though rarely actually invoked, prevents a large number of problems simply by always remaining an available option.
Apart from that, you've just attempted to reinvent a new way of profiting from proprietary software, except that numerous vendors have already tried it in numerous forms and failed. Heed the warning. Or, alternatively, don't: http://www.despair.com/mis24x30prin.html
If you want to write proprietary software, do so. If you want to foster a development community around your source code, do so. Don't try to mix the two; you'll annoy both sides, and that won't end well.
>Don't assume that people who disagree with you simply don't understand you.
It's not that you disagree, it's that you imply that forks would be impossible or that the suggestion amounts to "look but don't touch". These suppositions are clearly NOT what I am saying, so I am replying to correct and/or clarify my position.
I don't really have anything new to contribute to your arguments other than I consider a license grant irrevocable based on purchasing the game or whatever. Just as you can't go take back someone's copy of Windows because you don't like their political views, you shouldn't be able to go and take away someone's license for new_game because you disagree or think they should have paid more or whatever. It is true that under this proposition the original author would have to be paid if you wanted to use a fork and had never paid for the original copy of the software.
And if the original author disappears, or stops selling licenses at all, or changes their license to "we will not sell you a copy if you use $OTHER_FORK"? As I said, the original author can easily kill the entire community or any individual part of it at any time.
Consider what would have happened if Oracle had that kind of power over the communities that formed LibreOffice or Jenkins; those projects wouldn't have survived in such an environment.
On top of all of that, what makes the original author so special here? The community adds a huge pile of value, often more than the original author, and yet only the original author gets to demand payment? Or should this become like the NetBSD license's ever-accumulating attribution clauses, with a hundred different authors to pay license fees to?
It looks like you are having a relatively in-depth discussion and your earlier exchange reminded me of a recurring question I have. I've posted the question but no one seemed to have interacted with it. Would you be so kind as to take a look? Here it is:
I'm trying to wrap my head around this comment. You're saying that GPL isn't restrictive enough to provide the security for businesses to open-source their work? GPL is very restrictive, more so than most other open-source licenses, which is why businesses usually release under Apache/MIT/BSD.
If a business is worried that their open-source software is going to backfire and feed the competition, they have no interest in open-sourcing their software in the first place, and no license restrictions will help them.
GPL's other effects (forcing businesses to open-source software they make modifications to, which are covered under the GPL) are good enough.
> I believe that every software owner deserves a copy of the source, but I don't believe that every software owner has the right to redistribute that program practically without limitation as the GPL allows.
I'm not sure you realize how unrealistic that artificial approach is becoming.
>You're saying that GPL isn't restrictive enough to provide the security for businesses to open-source their work?
No, perhaps reading the comment I left in reply to another child will help clarify. I believe that the GPL has created a false equivocation that releasing source means you have to allow everyone to resell your product. I think that companies can release source to licensees only and I would like to see that practice enter general use. In short, I reject Stallman's "freedom 2" as an essential fundamental component in "moral" or "free" software.
> I think that companies can release source to licensees only and I would like to see that practice enter general use.
Companies already license out their source code to whoever they wish, and many already do what you suggest ("enterprise licensing"). Many prefer to open-source non-critical software, because the community can help maintain it.
I don't simply suggest "enterprise licensing" where a stipulation of a huge 5000-seat adoption is giving IT a copy of the source or whatever. I suggest a template like the GPL that can and will be used by many developers to include a copy of the source with every copy of the binary with the stipulation that the persons who do not own a valid license cannot legally use the software (in either source or binary form). This would allow the developer to continue to make money on software licensing fees, which possibility the GPL entirely upends in practice, and it would allow the end user to read and modify the code their system executes and share their changes with other end users.
Enterprise deals that include source usually do not allow the recipient to publish modifications to the code and come with a variety of other very serious restrictions. I am talking about something quite different.
Sounds to me like it comes with a raft of legal and practical troubles. Say company A has licensed a copy of this software and made some modifications. They cannot publish these modifications for general consumption (eg. on Github or similar), so it's not really obvious how anyone will ever know they have this potentially useful code. If some other company B somehow did find out that they did have it and come to A asking for them to share their code, A don't know that they're legally allowed to give it to B because they aren't the licensor.
Also, I disagree with your stance that the GPL "entirely upends" the possibility of making money off licensing software. Trolltech were (until they were bought by Nokia) an example to the contrary; Qt was dual-licensed under the QPL and GPL for years and they were obviously making money out of all the companies that didn't want to have to GPL their product.
Finally, it's not really clear to me that anyone really wants this model; there are companies (like iD) who are keen to open source at least some of their software. Many other companies are not interested in releasing any at all. It's not at all obvious to me that there is some sort of middle ground of companies who want to release their changes but only to other companies who have licensed the same software, thus forgoing the whole feel-good factor of open source, arguably much of the point of it and certainly the entire Free Software angle.
No assets released, which is a problem for the following reasons:
- Piece of history lost
- Makes it harder to boot up anything because not a complete, running application.
- Derivatives of the art are impossible
- Artists will have a hard time starting to tweak things, because there's nothing to tweak.
- Coders will despair trying to provide even a basic set of art (because we're usually crap at art) so they could start poking at the code.
Sadly, this "here you have the source, off you go" thing seems to be very prevalent, and it always irks the hell out of me.
If you don't want to release everything, alright, that's workable. But something, at least some basic art, say the first level or whatever suits you. I don't get it why that should be a bad thing. I also don't get why people seem to think that idea is bad.
While I would like to see it, absolutely, it misses the point a bit in regards to how Carmack is approaching this.
He's a tech guy, first and foremost. He's been dedicated to releasing the source to his games, because he's dedicated to sharing the tech that went in to these games. To the point that he went back and made changes to the Doom 3 source[1], at the time a four year old game, to appease the lawyers who were shy to allow them to release it because of software patent concerns.
If you're looking for the game, then yes the source is useless to you. If you're looking to learn what went in to the game to make it work, the source is literally invaluable. With art assets, it would be better. But by itself it is such a precious treasure. No one else in the industry is releasing the code to their AAA multi million dollar budget games. There are not enough words to describe the value of the contributions Carmack has dedicated to open source and release.
A colleague and close friend of mine directly attributes his early programming days to the fact that he was able to take the Quake 2 source and hack away on it. He's now a programmer in the games industry. You just cannot put a value on that kind of knowledge and examples and source being freely available. It sings to the core tenant of what Free as in Freedom is all about.
It does not miss the point. And I'm not looking for the game, it's not that the only use of assets+source in freedom form would be able to play the game (that is one side-effect).
- Curation history is crippled: Games are a piece of cultural history, and if you care about curating that history, then a complete release is important.
- Learning/Derivation is crippeled: Releasing works is about being able to learn and derive from them and to release what you've done with it. There are more kinds of people than coders, and there is more to a game than code. You can learn and tweak assets in many meaningful ways as well.
- Practice of Culture is crippled: Derivation is also about re-contextualization and remixing. Code can be remixed by programmers, and by programmers only. However sometimes remixes of content are interesting, for instance as a total-conversion of the code to something completely different (webgl for instance) or by re-contextualizing the assets entirely (you could make it props in your next CG movie).
Concerning your first statement, that the curation history is crippled:
Obviously, you can get your hands on the artwork of the game if you want to, you just have to pay for it. Same as you have to pay for that picasso if you want to "curate" it. I don't see many people complaining that entry to a gallery should be free (although I would agree that it would be a very good thing and happened already in the UK) and that you are entitled a free copy of the artworks (by free I mean that you only have to cover the reproduction cost) to play around with.
So, please, you may get the full artwork for $2 on Amazon/Steam/Whereever.
You're comparing interactive art to painting, which is a flawed analogy. This isn't about cheap, or free, and it's only cursory about freedom. It's about that in order to curate digital history, you have to be able to redistribute it, and to be able to keep the software running.
I agree that it is not the best comparison. It is the best I could come up with... The problem might be that I compared out of context - a texture is not very different from a painting (in theory, physical anomalies aside) - I did not intent to compare paintings to complete games. However, the interactivity results from the combination of the textures ("static part", somewhat comparable to paintings) with the code (making the textures interactive, animating them etc.). So I would come to the conclusion that the interactive part has been shared freely.
iD/ZeniMax owes you nothing, but they still gave you the source code and went to considerable effort to do that. Complaining about what you feel entitled to receive for free makes you look bad. Someone else mentioned that all the assets are available for $70 or less. Go and do what libraries do when they want to curate materials so that others can learn from them and enjoy the culture: buy the damn thing.
There's already been a rich culture of mods, re-contextualization and remixing. You've been able to do all of the above before this release of the source code.
Wrong, legally you can't do anything with the content. You can't modify and you can't redistribute it or anything. You're gonna exist in a legal grey zone in which ID has the right to sue you at any time, this is not good.
I'm pretty sure the mod community would disagree. id, epic, etc. wouldn't have released editing tools if they didn't expect modifications to be made. But the expectation is that you're going to make that available back to the community.
If you're trying to just simply take someone else's IP and make money off their work without their consent, that's something else. Negotiate a license and get out of the grey zone.
It's not about getting something for cheap. It's about being able to make derivations and incrementally tweak things. It's about that not having any base tweak makes it quite hard for both Artists and Coders. It's about that there's many ways that things could be tweaked that would be fun, but if you're beset by a wish to do that you're gonna spend a year creating art for a total conversion. It's about that culture in games is not code, it's assets as well, and if the assets aren't released, they're lost and never to be derivable of, because of the perpetual copyright crap.
If you feel the need to own the assets, you can get Quake 2 for $2.50 from Amazon. Though I suppose it's harder to be a curmudgeon about ID if you look for solutions like that.
I think it raises a valid observation of the role a site like The Pirate Bay actually plays in regards to preservation. When they did their little press stunt sending a letter to the King of Sweden [1], in part they said "We now have the honour to report that The Pirate Bay now archives 200 000, by the citizens donated, documents of culture and we're tracking more then 500 000 cultural treasures globally." They keep old stuff around. I have no idea where I would go dig up a Win95 disc (or stack of diskettes, for that matter), but I am fairly certain I could find it on TPB, and it would be seeded.
Beyond that, preservation of anything is an ongoing effort. Who is to say that copy on Amazon won't sell out? How do you know if it will even work when you get it. Some day physical media will go away, and you won't be able to read the CDs the game was pressed to. Git Hub will go away one day too. But moving the code to Git Hub represents a continued preservation effort on id's part, because previously this stuff was just hosted on id's FTP where no one could find it unless they knew to look for it. Being on Git Hub now makes it available to more people, for longer, should (god forbid) anything happen to id software.
So, despite the fact that his flame bait comment has been deleted, it raised some valid points about software and media preservation overall.
I agree about the archival nature of torrents, but I was reacting to the rude insistence that "only" giving away source code wasn't enough.
I hope that, in time, more credence will be given to the idea of "abandonware." Right now it's piracy of titles that publishers no longer care to protect, but I hope that some legislative body will enact limits on copyright based on availability. Though it's not particularly important in the grand scheme of things.
Most of which because the man is too humble to accept any of it.