
Id Software Open Source releases on GitHub - gmcabrita
https://github.com/id-Software
======
bittermang
I don't think the games industry will ever be able to adequately thank or
appreciate all that Carmack has done over his career.

Most of which because the man is too humble to accept any of it.

~~~
Caligula
They thanked him by the millions of dollars in licensing and fees paid. He
certainly took the money he rightfully earned :)

~~~
arctangent
You're right. But even if money wasn't at stake I think he'd have done it all
anyway.

~~~
VMG
Well he still doesn't release the source code straight away and wants to earn
a few dollars with every new game.

Remember, this guy has some pretty expensive hobbies.

------
mikehuffman
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.

~~~
alanning
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.

~~~
db42
This just gave me the motivation to write my own dev logs every day. Thanks!!

~~~
follower
You might like to check out my Labradoc site which is designed to make it
easier to create project/dev logs: <http://labradoc.com/>

Here's an example of a project log for a current project I'm working on:
[http://www.labradoc.com/i/follower/p/notes-qualcomm-
apq8060-...](http://www.labradoc.com/i/follower/p/notes-qualcomm-
apq8060-dragonboard)

My style is more verbose than Carmack's but Labradoc can be used with either
approach.

------
srean
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.

<http://en.wikipedia.org/wiki/Id_%28programming_language%29>

<http://en.wikipedia.org/wiki/CM-5>

------
program
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.

~~~
aw3c2
Before ttimo left he merged some pull requests to the Doom3 source
<https://github.com/TTimo/doom3.gpl/commits/master>

------
stephth
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?

~~~
pyre
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.

------
timothya
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.

~~~
albertzeyer
Afaik, there are (were?) some licensing issues why Keen stayed closed.

There is a compatible Open Source clone, though:
<http://clonekeenplus.sourceforge.net/> (Disclaimer: I work on that project.)

Btw., a very nice history of Keen (also referencing some of the licensing
issues): <http://www.3drealms.com/keenhistory/index.html>

------
jf
So awesome! I know it's unlikely, but I'd like to think that I helped put
GitHub on Carmack's radar:
[https://twitter.com/#!/ID_AA_Carmack/status/1415891465222307...](https://twitter.com/#!/ID_AA_Carmack/status/141589146522230785)

------
cookiecaper
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.

~~~
JoshTriplett
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.

~~~
cookiecaper
>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.

~~~
JoshTriplett
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.

Take a look at this entry in the GPL FAQ: <https://www.gnu.org/licenses/gpl-
faq.html#ReleaseNotOriginal>

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. :)

~~~
cookiecaper
>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.

~~~
JoshTriplett
OpenJDK has become the official JDK/JRE at this point (see
[http://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_th...](http://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the)
for an official statement to that effect from an Oracle developer). The
proprietary JDK/JRE represents legacy software.

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.

~~~
cookiecaper
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.

~~~
JoshTriplett
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.

~~~
cookiecaper
>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.

~~~
JoshTriplett
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?

------
mumrah
Here's a link to the infamous fast inverse square root function:
[https://github.com/id-Software/Quake-III-
Arena/blob/master/c...](https://github.com/id-Software/Quake-III-
Arena/blob/master/code/game/q_math.c#L552)

------
dan00
I had to giggle, looking at the quite large interface of 'Entity.h'. Also
Carmack has to do it in this "ugly" way. In a way that's relieving.

------
libin
Wow! This is a really bold move.

Thank you, Id!

~~~
jaredsohn
Most (all?) of this has been released in the past. I think the news here is
that they're putting the code on github.

------
pyalot
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.

~~~
nanexcool
id Super Pack is 70 USD on Steam... <http://store.steampowered.com/sub/440/>

That'll get you every asset you need. Also it always gets a discount during
Steam sales. You can probably get it for 30 bucks if you time it right.

~~~
AndyJPartridge
At a UK price of £38 the amount of software for the money is incredible, just
to play it all.

Along side all that source as a learning tool it's astounding. Wish I could
make use of it :-)

Thanks ID!

