Now this is how you pitch your product to an open source company
blog.reddit.com
blog.reddit.com
The only product I see here is an open standard which would be forked the moment they try to slap ads on it.
I guess semantically using "didn't" is past tense, implying some type of initial attempt to read it and then because it's too long, you didn't. But nevertheless it would more helpful at the top?
TLDR is useful for and needed by those who are skimming.
Is github going to be kept in sync with reddit's copy now? Is that the idea there?
Our goal right now is to publish weekly, but we'll see how that actually works out.
Also, we stopped doing it because it meant revealing features before we were ready to reveal them, like sponsored links. That is when we split the public and live repos. Before that, the public repo was the live repo.
As for controlled feature revelation, I think that's counter to the spirit of open source community -- the community is not really on equal footing with the company. It like you're saying "aren't we nice to share our code with you" rather than "let's all work on this together".
Well that's my two cents. I understand that not every company feels they can work that way, but I think the really successful projects have figured this out.
We very much embrace open source -- we use only open source software and we contribute back as much as we can.
However, we are still a for profit company, and occasionally have to keep things secret (especially new features, for competitive reasons).
So yeah, unfortunately the community really isn't on the same footing as us. The idea is that the code is modular enough that if someone wants to work on a new feature, they should be able to do so without having to worry about what we are doing, and for the most part that is the case.
Also, as CUViper suggested, I think that tagging releases and providing tarballs of these is a pretty good idea. Right now, everyone is just like, "I have commit z1z1z1z1, what do you have?", which most people can't easily memorize like a version number.
Tagging "versions" can also help with dependency changes -- for instance, the new codebase uses Cassandra instead of memcached (as I understand it); if you have the last release (currently HEAD on master) tagged as 1.2 or whatever, you can say 1.2 needs these things: x, x, x, x and our new release 1.3 needs these things: x, y, y, x. This really helps people, especially people who use "server" distributions, because many of those have only certain packages and versions for quite a while (see RHEL or Debian), like, 3-6yrs in most cases, some people go longer (some shorter, but not that many imo). master HEAD of course would be the latest and greatest without any necessary warnings, because things are expected to break on a development version. Versioning is pretty important imo.
Internally we use a lot of branches and tagging and versioning, etc. The problem is if we published everything live, it would add a lot of overhead for us.
While we do eventually publish everything, we are still a for profit company, and occasionally have to keep things secret for business reasons (like new features). Keeping track of what code is for a new features vs a fix to an old one would add a lot of overhead that we just have the time for.
In the name of reduced overhead, we only publish to the public repository once we have released a feature and it is fully baked.