Thanks again for everyone's comments and candid responses.
And also, I do appreciate the candidness and respect that everyone have been showing, especially the QCubed guys, I know this is a trying time for the community at large, and one that could easily turn very ugly given the amount of time, energy and emotional investment that everyone has put into the community. But I believe that the honest, respectful dialog across the board in the forums has gone a long way in helping to find productive solutions to the issues at hand.
Okay, a long post/response -- but here it goes:
First of all, please note that my not mentioning anything about QCubed in my post above was not meant to insult or snub the QCubed project at all. I think they are doing a great job pushing forward a lot of things that I have obviously let fall by the wayside over the past months, and please know that I did not mean to intentionally ignore them. It is just that my stance on the subject has not changed since the last time I posted about it (see my response on <http://www.qcodo.com/forums/topic.php/3443> from Monday, November 17, 2008, 4:59:34 PM).
The plan and roadmap for Qcodo over the next 1-2 months remains the same: I am actively working on developing the infrastructure-related pieces to remove anyone and everyone from being the bottleneck in allowing the community to grow. This means not just myself, but anyone; community member, “core” contributor, etc.
What this means is that anyone and everyone should be able to publish changes, modifications, enhancements, etc. which can easily be discovered, installed, discussed, and improved upon by the rest of the community.
The use of git and github is obviously core to this strategy. It allows anyone to fork off the project and publish new versions/flavors of Qcodo w/o needing any interaction by myself (or any other core contributors).
The toolset for git is especially great at handling this, with its ease to report on changes, merge branches, etc.
However, there are some limitations inherit in SCM tools like git and the rather unique/complex structure of Qcodo, being that Qcodo is a framework which involves both client-side and server-side components. Namely, if there are rather large changes/differences to only part of the codebase in the new branch/flavor, and if there are changes to Qcodo in the originally unchaged part of the codebase in the new branch/flavor, then the new flavor/branch could quickly get “out of date”. Situations like this will easily happen as we try to push for a community that encourages contributions across the board.
This is one reason why the entire move-to-git process has been so prolonged. It took me a long time of researching and experimenting to try and find the “right way” of setting up git to mitigate this issue/risk. Unfortunately, after months of trying to work through this issue, I was not able to find a way to setup our SCM to resolve it.
One solution, of course, could be to allow multiple people to commit to the core repository. But there are two things to point out:
1) As more people get involved with that process, issues of code consistancy and quality start to take place. Note that these issues do NOT take place due to the caliber of the people involved -- they take place merely because of the fact that there are now more people involved.
2) This still does NOT solve the issue of bottleneck. Sure, the issue is minimized because the “load” is spread among more people... but the fact is that there is still an inherit bottleneck. There is still a group of people that is determining the future direction for the whole community by determining what gets committed and what does not.
And the unfortunate thing to note is that the resolution of (1) plays squarely against the weakness of (2), and vice versa.
This is where the other set of tools come into play. The things I mentioned in my above post (the CLI stuff) are not just some frivolous side project to get some things up and running. The CLI stuff is as core to this strategy as git is. Built on top of the CLI toolset will be the Qcodo Package Manager (tentative name). Specifically, these tools will allow anyone to package changes, enhancements, modifications or plugins. Moreover, it allows community members a very easy way of consuming each other's changes, without needing any sort of official “blessing” or intervention by core contributors.
These patches, modificuations and plugins will be posted in a new section of the website, and people will be allowed to make comments, discuss, make improvements, etc. So even if certain changes or fixes haven't make it yet into the core distribution because the core contributor(s) have been too busy to get stuff in (sound familiar? =), it can still be used by the community at large, without any bottleneck in the way.
Moreover, if there are plugins/featuresets that are of high quality/caliber, but would be only of interest to a segment of the community, then packaging will be incredibly useful in allowing community members to grow microcommunities around those packages, even though it's not part of the “official” Qcodo release.
Will this turn the Qcodo community into an anarchy / free-for-all? Certainly not. Of course, there will still be an “official” Qcodo release. And with this platform, it will be even easier to roll up these releases, because it will quickly become evident as contributions/packages are tested and validated and made popular by the community, itself. And the combination of git with these package management tools will make it incredibly easy to push those packages back into the “official” release.
Hopefully (along with the community-related structural changes of qcodo.com itself that I have mentioend earlier, e.g. issue tracking, wiki, package repository), I am able to paint the picture of the goal to have a community where there are truly no more bottlenecks.
I know that the pressing question among most people is: Is QCubed going to be merged back to Qcodo? Or alternatively, why doesn't Mike just drop Qcodo, and instead, join the QCubed team as he as been invited to do so.
I believe both these questions, while valid questions, miss the point of where I am hoping the community can move to. Hopefully, if I have been able to clearly articulate the roadmap, you can see that with the new structure of the community in place, the new community will actually make these questions irrelevant.
However, one question that wouldn't be irrelevant and that should be addressed is the question of what I hope to see happen after these things are in place.
Honestly, I'm still not sure.
I have not directly reached out to the QCubed guys... nor do I think it's appropriate to do so yet. I believe I've put some pretty exciting things in motion... but please do keep in mind, that all this is still just a starting point -- there is obviously still quite a bit of work I still need to do.
The folks at QCubed have been (very understandably) disappointed with my failure to deliver on a lot of these things in the past, which is a good reason why they felt the need to move forward with QCubed, in order for them to be able to push forward with their projects, products and companies despite my inaction.
With my track record of failing them in the past, I do not feel it's right or useful for me to approach them with my proposals/solutions to bring the community back together until these structural changes I am proposing are concretely back in place -- live, up and operational.
And at that time, as I said in my previous post, I would be open and happy to work with any or all of them to bring everything back together into one community. But at the same time, I would understand it if they want to remain separate, and I would not want to force any sort of decision on them.
(But the ironic thing is, even if that were to be the case, with these planned changes I have laid out, it would actually be very straightforward for anyone to be able to build a package that would connect the QCubed and Qcodo changes together, and even that could be run on its own, without intervention from either myself or any of the QCubed guys.)
So I am going to continue to spend these next few weeks focusing on the things I have outlined above... and once those things are in place, I, they, or both of us will begin to post back to the community so that everyone can get a sense as to that progress.
Hopefully, this gives you a fuller sense as to what I'm trying to push forward over the next couple of weeks. As always, if you need further clarification or have any questions, please don't hesitate to post.