Reddit source code
github.com
github.com
It just seems to defy reason that we must make humans increment a number every year in every file in our projects, nevermind the fact that the top 20-30 lines of every file in our projects has been taken over by stuff most readers don't actually need to read (again and again).
Is this really the best we can do without somehow letting the bad guys take our home away due to some licensing gotcha? Like simply having this at the top of each file:
# see the top-level LICENSE fileIn essence it's because there is a very large number of lazy programmers who live by cut and paste. We're not just talking the "I've found a solution on Stack Overflow and will use that", but more "I've searched Github for keyword + language and this file does what I need".
The files are copied into their projects in its entirety, sometimes whole libraries are, and those programmers never bother to check how a project is licensed.
Once this process has been repeated a few times the code is firmly detached from the licence and any original license is ignored.
If I use the suggestion you make, then by them copying files into their project they have changed the licence of a file (it now inherits whatever their project uses).
Though I do like the idea of a stub instead of the full thing:
# Licence: BSD (3-clause) https://github.com/owner/project/LICENCE.md
That would be enough to describe the licence for the file in a way that survives cut and paste, whilst also providing a URL for the full licence details.In fact, I will now probably shift to that.
I've had programmers copy and paste GPL'd code into proprietary projects I'm responsible for. It's not laziness it's ignorance. "What's a GPL?"
Laziness, ignorance, irresponsibility. Or: usage.
The cards I'm dealt are "proprietary projects". I comply 100% too: we don't ship GPL'd code. We've gotten close, though (c/o what I mention above).
> If I use the suggestion you make, then by them copying files into their project they have changed the licence of a file (it now inherits whatever their project uses).
No, the only one who can actually change the license of a file is the rights holder, so the person who copied the code while ignoring the license misrepresents matters but does not change anything about how the work is licencsed.
The Apache 2 license library has language that indicates the use is to put bits of the license in every file. That's why. It's easy enough to maintain a license at the top of files with an IDE like IntelliJ
Perhaps in places like github. With central versioning systems where the server is under our control we simply run daemons that check the copyright. Each user can define how it should work for them. If copyright is not okay the user can either a) have the submit fail so he is notified that it needs fixing or b) let it be fixed automatically by the daemon.
This fixing also includes adding a copyright notice to new files that didn't have any. Nicely defined depending on the file type.
The implementation was a one time effort which now saves us from doing exactly what they are doing now. Manually going through thousands of files to fix a copyright.
The CakePHP project has done away with yearly update by replacing the year(s) with '(c)'.
https://github.com/cakephp/cakephp/commit/7b860debe4731a9cbc...
I remember watching a Stephen Fry interview who mentioned that placing the Copyright symbol once on your piece of work is sufficient to claim Copyright. But is placing the symbol once on a book, the same as placing a Copyright/License block once in a project directory?
[1] http://copyright.gov/help/faq/faq-general.html#register [2] http://www.copyright.gov/title17/92chap4.html#401
Ah, but why do you assume a human did that? Writing a script to update the year in all files doesn't take more than a few minutes to write. Chances are he simply ran "update_license_year" and committed.
Likewise for having a license on every single file: it may simply be a git hook that preprends it to every file with a certain extension.
…why not just put a mention in the top-level license that all empty (0 byte long) __init__.py files are in the public domain?
(Yes, yes, it's less confusing to license the entire thing under one license. But attempting to assert copyright on an empty file is humorous.)
> you may not use this file except in compliance with the License
This is patently absurd: the file contains no content other than the license itself, and arguably its name (which is shared by millions of other __init__.py files around the world).
But I assume that they have this header on every file as part of their internal process. Hence, they don't make an exception for empty files. I would book it as a cost of this process.
Also, it is handy if somebody starts appending to it ( i.e. https://github.com/reddit/reddit/blob/master/r2/r2/lib/autho... ) , they don't need to take care of that the license is correct.
https://github.com/reddit/reddit/commit/8e2737dab409c46d688c...
Now, if pylons turns out to be a roadblock to an expansion they want to make, that'd be a reason to swap it out for something different.
Pylons most probably won't roadblock them but will definitely bring a lot more challenge.
Me, I see no difference between reddit now, and USENET of the 80's/90's. Except that reddit isn't distributed, by nature, but rather .. empirical ..
I still use USENET. Its a quite place now the kids have all grown up and left the basements...
We had a great time. Free snacks, lot's of parties, luxurious office furniture, skateboarding in the hall... In the end, the company ran out of money before the product reached a useful state.
Good times. It has been some time since then and I have a "normal" job now. Last thing I heard about the founder is that he started a new vc backed company destined to run circles around something.
Yeah, I for one think this was equally flawed. People have made succesful and quickly iteratable web services/apps in all kinds of languages, including Perl and PHP.
Plus, one single data source like pg had is never that accurate, plus the fact he and Martin were already Lisp guru s helped them in their use of it.
Spend months rewriting the most beautiful backend and nobody care, redesign a button and everyone is excited.
In two cases, the guys running it knew it was going to fail from day one and their business model was to do this in two year chunks, syphon the cash out of the VCs after talking the product up, live the high life and disappear for a bit.
I felt no shame working for them back then but I do now.
Even rubbish code, in any language, can survive for a lot longer by shifting the spotlight of scrutiny to the biggest bottleneck, the database. Which will also be the deciding factor in reducing growing pains.