Projects - Working Goals for June
Draft of June 2, 2001 by Dan Corwin
Below I outline three June tasks intended to aid the management of
ALL user groups and working groups in MESDA. Each task associates
with - but does not complete - an active Web Apps project.
The unifying technical element is shared data-storage mechanisms. They are
kept limited by policy and design to encourage
separate work (not yet staffed) on a non-EJB tier 2 (data transport)
layer, which is planned so far only to this extent:
It works for Web apps creating XML response streams, to which it may
apply "filters". Some filters use XSLT to transform the given XML
into an import file format for a target data base (one of several).
Other filters may just pass on the XML unchanged, or nearly so.
Help from other working groups and/or XML gurus may be sought on this final
phase of work. Meanwhile, here are deliverables from initial efforts, which
will simply use output-page templates cast in standard HTML.
Task 1 - Activity Tracking: JugNews
"JugNews" models activity
in Web Apps projects - e.g. Registry and Surveys - or even in other
WGs, but not at the level of details. Rather, it reports the news
which its team members post to a MaineJug.org page.
This task - previously unstaffed - will be done jointly and ASAP by the Web Apps and
JugSite WGs, aided be anyone else who wants to chime in. It shows how a simple
log of immutable comments ("news") can advance high-level goals, and takes only two
new web pages. The first is under /projects; the second under /jug:
-
Form-based News entry - Captures an ID of the USER entering data,
a brief textual comment, and the ID of a GROUP most connected to its topic(s). The
USER must also supply a password for that GROUP, or an error occurs when the form posts.
Otherwise, its data is saved with a timestamp, and the second page is displayed.
-
Recent News Reporting - This shows an ordered list of prior comments,
most recent first, filtered by GROUP and "age" limits (if any are passed). A
small local form lets the end user (here unrestriced) add or adjust these limits
and redisplay, to explore JugNews for any or all GROUPs.
The core idea is that by visiting page #2, any observer can instantly see all recent
JugNews for all defined GROUPS - a dynamic "What's New?" for MaineJug. The filtering
options enhance this power by providing for customized reports. (One can "publish" them
to the mailing list by just posting their customized URI + query string.)
This web app helps keep MaineJug informed on working GROUPS, especially news on
Projects or Tasks too localized and frequent to be broadcast in MaineJUG emails.
It lets GROUP leaders report WG progress in batches, exposes WG decisions to a wider
audience, and in general makes our web site more interesting and lively. If JugNews
text holds links to new or changed pages, it also adds new ways to find them.
Technically, the simple logging aids used for this application are adequate because
JugNews postings never need later editing. In design pattern lingo, like many other
textual declarations posted on the web and equally easy to support, they are
immutable.
To aid similar web apps, the generic "Log" Java Bean
supporting JugNews will be posted with June deliverables. It implements a simple
but general read/write API to a backend text file.
The Bean itself is insensitive to the specific Strings being logged,
so it can be reused in many related "registration" tasks, which all let a USER sign up
on-line for some meeting, project, task, event, etc.
Task 2 - Modeling MESDA's Registry
JugNews and its Log bean help this get started. The Registry is really an open list
of web pages that extend registration logs by optionally adding the current user's ID.
For example, as a browsing USER discovers what MEETINGs and GROUPs (or projects, or events) are
available, a [SIGN ME UP] button on related pages lets him or her register. If the USER ID is part
of the session, due to an earlier login, this can happen with a single click. A sexy feature I'd
like to see is that if a USER is already signed up, the button says [YOU'RE REGISTERED].
Additional "backend" pages also must let some administrator(s) - Joe and/or a related GROUP's
leader - review the associated logs of registrations for recent changes, and/or migrate any new
information they hold into some desired independent data store(s).
Each of these "mini-applications" roughly repeats the JugNews pattern. Each will therefore
be implemented partly by reusing its machinery. However, many details need designing first,
and before that can be done, conceptual plans and page architectures must exist. Overall,
several unknown things cry out for design attention:
- Use Cases - Who benefits from on-line registrations? Do forms beat
emails? What would be done with the info gathered? By whom? When? How?
- Scalability - What changes as USERS grow past 100? Or 1,000? Can we
handle 500 distinct GROUPS? 5,000? Could it grow 10:1 more? 100:1?
- Attributes - Besides log-based associations, what fields do we want
for each USER, GROUP, or MEETING. Whhy? Which fields can mutate?
- Subclasses - Some record types have them - e.g., is a SIG the parent of
user GROUP and working GROUP? How do these differ and relate?
Also, an abstract thread links all the record types above - their "special
interest" profiles. So far, MESDA is planning SIGs on job-types, business
types, system components, development processes, and coding languages.
How does this non-uniformity of SIG topics impact our designs? In our specs,
should we not try to better define and use "special interest" profiles,
based on much more finely-grained and numerous sub-topics? If we do,
can we make it easier to match USERS up to the GROUPS and MEETINGS
they'd like, or to discover new GROUPS that would be readily filled?
Overall, such formal modeling efforts seem needed soon to clarify the type of
on-line communities envisioned, the specific web utilities that will help them grow,
and the specific attributes that would support them. Unless we want to learn these
AFTER we've built the wrong designs, now seems a good time to take these key steps,
then solicit feedback on them from MESDA's board and member firms.
I expect we'll need on-line edits of attributes for USERS, MEETINGS and GROUPS, at
least by adminstrators. Also the PROJECT (similar to a small GROUP). Aided by
handy Lexikos "admin" utilities, I have therefore created examples for all four
record types, focusing initially on
- GROUPs for Web Site, Web Apps and EJB WGs, plus JUG management
- PROJECTs for JugSite, Registry, Surveys, and JugNews.
Each GROUP or PROJECT leader initially gets a USER record citing an ID, plus
email address and names as noted in Yahoo. This is Dave, Dan, Donna, Jason,
Craig (as mgr-admins), and I added Joe as a key client. Later, we'll add an
open page to self-register new USERS, so everyone can get involved.
Mgr-admins each also get (from me) training and a password letting them temporarily
add/edit new USERS, GROUPS, MEETINGS and PROJECTS as desired. All mgr-admins
have the same access (if they ever choose to look). Security is pretty lax.
They will also be able to (re)define a password needed to post GROUP or PROJECT
JugNews, then pass it along verbally to other USERS in their teams. (These are
mostly to keep random site visitors from posting nasty messages.)
Example MEETINGs are being built for the 3 Wed. night lectures we've had so far.
An HTML template to present them at need should be straightforward to build. They'd
might let us replace the static "Last" and "Next" meeting pages with a Bean that
"shifts" next to last automatically during each JUG meeting (just to prove we can
automate JugSite maintenance).
Example PROJECTS are mostly for the Web Apps team, to explore uses in project
management and aid early planning/demos on Showcase. As I see it, people who
register for a PROJECT do so to request emails on its JugNews. To request work,
make suggestions, or get a password to add JugNews, they email its project leader.
As these record sets fall into place, all code and ideas above can be tested, and
both adjusted as feedback dictates. If you have suggestions or questions on anything
in advance of such testing, RSVP. Thanks.
|