Draft: Thoughts on a DocPad Re-Write
Going to have take a stance on this here and now.
It is great that the community cares soo much about DocPad and the other Bevry projects, to care enough about it, to discuss its future, and be soo involved with it. I love this community for that, for the effort they put into it, the care, and the dedication behind it.
This community, like all communities, is a powerful force for change and action. We are redefining the way websites are built. Making them abstraction friendly, fast and static, and robust and dynamic is quite the feat, and we are accomplishing that.
We must not underestimate this force we have. A community thrives under a united under a common vision, focused towards a common goal, and productive under a common agenda. And a community crumbles in vain, under fragmented agendas, illusive goals, and blurred vision.
As the community grows, ensuring unity over fragmentation becomes an ever increasing difficult one. New people and ideas are constantly being injected, amazing ones, terrible ones, all valuable ones. However, the focus of the effort behind these ideas must be crafted in directed way to produce concrete results.
With the extreme popularity that DocPad have accomplished this year, and the pressures on it to scale into new markets, and new territories, this issue of unity is becoming ever more vital, while at the same time more difficult to manage.
There is a lot of things right now in the community we must focus on. Performance & memory improvements. Better documentation. A new website. All vitally important things, but as new ideas and thirst for change pours in, focus can be detracted from the tasks that can have such a big impact.
About a year ago, we started discussing a rewrite for DocPad, as a brainstorm to where it could go in the future. Could we use noflo? Shall we abstract all the things? What shall we abstract? The plugin system? The file system handling? Etc.
This notion of an idealised re-written v7 of DocPad is starting to become problematic wishy-washy vapour-ware. If there is anything like a re-write desired, then it is the desire to abstract out all the things into tiny components, which we can then experiment with. This abstraction is the first step towards anything remotely like a re-write to be accomplished. Until then, it is just incremental changes to the right direction, a evolution, rather than a revolution.
If there is to be a revolution, a clojurescript re-write let's say, it is to be accomplished as alternatives to the tiny modules that DocPad will eventually be broken out into.
The ECS proposal seems like a good fit for evolutionary change. Something that be accomplished step by step, with clear functional improvements at each stage.