environment/toolkit/language is its groove. I suspect I'm speaking
for a lot of other Open/ACSers when I say that I started using the ACS
toolkit because I got into the groove very easily. I could code
working database-backed pages, and they worked, and when I thought of
an improvement, very often I could do it and see it in a few minutes
or less. And backing this up, I could see that the groove wasn't a
dead end - that this effortless code had a fair amount of stability,
reusability, and other good stuff. That I wasn't just making cheap
progress that would come back to haunt me, but that I was using a
well-engineered system. (Or at least, a system with a lot of
promise.) It was a long groove. And that was a rare combination in
1998, and it's still rare or there wouldn't still be people committed
to this toolkit.
What's made Open/ACS coding a bit of a love-hate thing is that we have
a rough balance between things that make coding a groove thing - quick
and easy success and feedback - and things that make it good long-term
engineering - reusability, encapsulation, and the other buzzwords.
It's always been a rough balance, and perhaps the early success was
sheer luck. I don't know if there's a consistent long-term trend, but
I'm concerned that development by and for the high-end developers -
the very people who do the heavy lifting in the community - may be
making the groove harder to find for new entrants. Maybe we can dig
up the aD forums and try to do some statistical analysis over the last
five or six years of the frequency and intensity of newbie
frustration vs joyful posts.
I'm not sure I have any useful
prescriptions for this beyond what we're already doing with
documentation and the tutorial - trying to make a clearer trail to the
groove. A few people have made some great contributions to the
tutorial, such as Simon's automated testing intro and Jade's many
comments. I'd love to see more pieces of tutorial get contributed.
Maybe people could pick a few of their own packages, that are in
production in the real world, and choose a few pages around which to
write tutorials for interesting techniques. Or people could pick some
core modules and write tutorials explaining bits of them. In terms of
API improvements, I'd like to see it even easier to build the basic
unit of a database-backed website: a sortable, filterable list of
records combined with one page per record add/edit screen. I would
like to back away from the recommendation of xql for everything, and
yank it from the tutorial in favor of xql only for pages that need
it. Making things ACS objects is more useful than even before, since
now you get not only permissions but also comments and notifications
almost for free; someday soon maybe categories; can we eliminate all of
that ugly, hard-to-debug, lots-of-work-with-little-positive-feedback,
groove-killing PLSQL code required to Objectify records? Maybe code
generation?
Anyway. food for thought, I hope. Which parts of coding OpenACS
packages still provide groove? Which really don't?
Request notifications