[WWdevel] Re: CVS alternative
Sam Hathaway
sh002i at math.rochester.edu
Thu Jan 13 23:55:33 EST 2005
On Jan 10, 2005, at 5:47 PM, John Jones wrote:
> Sam Hathaway wrote:
>
>> On Jan 10, 2005, at 4:13 PM, Michael Gage wrote:
>>
>>>>
>>>> Problems start in the non-tagged side, basically however we find
>>>> them. Once this thing is initialized, I guess we can start filling
>>>> that up with lots of pg files. When it gets tagged, then it is
>>>> moved to the tagged-side, which will be organized to mirror the
>>>> heirarchical topic structure of the database.
>>>>
>>>> We may not be able to "polish" every problem, but as that is done,
>>>> it simply gives an updated version of the problem on the tagged
>>>> side. The setup as described above basically gives up on the
>>>> notion of systematically polishing problems. If we want to keep
>>>> that alive, we should have 3 basic sub-divisions (raw, tagged, and
>>>> tagged-and-polished). Actually, this 3-part version might be a
>>>> good way to go.
>>>>
>>> I like the 3 part version. Possibly even a 4th part for problems
>>> which can be used as models for future problems (exhibiting best
>>> practices, etc. etc.) This fourth part could be fairly small
>>> however, and may not need to be a CVS.
>>
>>
>> Can anyone give me more details on how the repository of problem
>> sources and the "database" will interact? Based on what little I
>> know, it seems to me that the problem source should be part of the
>> problem's database record.
>
> In a sense, things are reversed. The problem files initially contain
> all of the information; the extra information comes in the form of
> special comments in those files. We then have a script to set up a
> mysql database, and to extract the information from the files and load
> it into the database.
Would it be fair to say that the MySQL database does nothing more than
act as an index on the metadata associated with each problem? Or am I
missing something?
> I like this approach since it is easy to reload the database if
> something goes wrong, and we are shipping mainly flat text files
> (except for the images).
I like the simplicity of this, and in a distributed system like this
the more we can do with a version control system the better.
>> By the way, has anyone thought about how problems will be packaged?
>> Many problems consist of more than one file and it might be worth
>> laying out a packaging format, so that a problem and all of its
>> auxiliary files and metadata can be distributed as a single file.
>
> I hadn't thought of the extra files. Thus far, the problems were
> basically not packaged in any special way.
>
> The distribution method I had in mind was that webwork would handle it
> behind the scenes. It would fetch files over http from perl (I think
> the perl module is LWP, or something like that). The entry point
> would be an extra tab in the admin course (along with add course, ...,
> and then Problem Database). If you ask it to update your Problem
> Library Database, then it fetches the current list of files/version
> via http, checks it against your current list, and gets whatever is
> new and reloads the database.
Shouldn't we leverage the version control system checkout features to
fetch and update problem libraries? It seems like a waste to keep the
problems in CVS (or Subversion) and then ignore the versioning features
of that system and track versions separately and fetch via HTTP.
> My guess is that this is how the perl cpan module works, and it is how
> the xemacs package system works.
By the way, CPAN modules are packaged in "distributions", tarballs
which have a predictable naming scheme and layout and a standard way to
build and install them.
> Since knowing which files need updating keys off of version numbers,
> we may have to keep those as part of the files' metadata.
Would that still be a problem if you were to keep the local copy of the
problem database as a checked-out CVS (or Subversion) working copy?
> If we use cvs for the files, we can just use the cvs revision number.
> If we use subversion, then there is one number for all files, so every
> change would make it look like all of the files need updating, so that
> would be a case where a problem's version number would have to be
> kept.
I don't really know, but I would expect Subversion to provide some way
of identifying a version of a particular file. I know that it has the
concept of a changeset, and that might be more like what you want
anyway. Each changeset would encompass a small set a files, usually a
single problem file but sometimes a problem and its auxiliary files.
> This approach should still be ok with extra associated files. They
> are listed in the manifest along with the problem files. So, if you
> don't have one at the time of an update, it will be fetched for you.
What is the manifest? I don't think you'd need any such thing if you
were to use a version control system to track files.
Thanks for explaining this all to me. If you get sick of it, just let
me know. I always have opinions about things that aren't really my
business, but if you'd like to be left alone, say the word. :)
-sam
More information about the webwork-devel
mailing list