Initial Spec Notes

Initial Spec Notes

by Mike Churchward -
Number of replies: 20
Picture of Core developers Picture of Plugin developers Picture of Testers

Here are my initial notes around what we can and should do with MyDMS to create our DMS. Please add your comments, so we can lay out a development path.

Okay. Here are my implementation thoughts, taking Moodle's current structure into account, and looking ahead.

 DMS Structure

The DMS has to be a conceptually separate entity from the category/course/activity structure of Moodle (much like the User Administration is). This is not to say that it should feel like a separate application running alongside Moodle - it should not! It should still be an integral part of the whole, just removed from the creation of courses. In other words, I should be able to create and manage documents even if I don't have any courses.

 In that sense, we need to define the following issues:

  1. Where does the DMS reside?
  2. Where does the repository reside?
  3. How is the repository structured?
  4. What can it contain?
  5. How do users access it?
  6. Who can access it?
  7. How is it accessed by courses/activities?
  8. How are documents tagged?

 Where Does the DMS Reside?

Because it is conceptually a separate function from Moodle, it should be designed such that it can run on a server separate from Moodle. It should share a user database and any group and role functionality (present and future) with Moodle. It should be able to share a database with Moodle or use its own.

 

Development Implications:

  • Have an API that can be called from any application. Reduce/remove dependencies on Moodle globals and constants.Have a separate configuration file that can be included in the Moodle configuration file.
  • Since they share an authorization function, design should allow for authorization function to be part of DMS, Moodle or separate.
  • Initially, develop DMS to work integrated with Moodle. This is the easier path, and will allow for the primary functions of DMS to be established first.
  •  How will Moodle exchange information and data when DMS is on a separate server? XML-RPC, SOAP?

 Where does the repository reside?

This shouldnt matter, according to the above. The physical repository is a combination of disk/file structures and database tables. The important issue is that all access is controlled via the DMS to maintain integrity. It would be ideal if parts of the repository file structure could be located in different physical locations. That way, the entire system expands easier.

 Development Implications:

  • Configurable locations for repository structures.

How is the repository structured?

Initially, to keep things simple and to work with Moodles current Category / sub-category / course, user and group structure, I suggest creating two directory structures just below the DMS root, called: Course Root and User Root. (see diagram)

 This structure will allow Moodle to easily control access to documents within the existing CategoryCategoryCourseGroup structure. DMS groups can be implicitly created for each category, sub-category, course and group (implicitly meaning, we dont need to use the DMS group table, just code it based on the structure). Access levels to documents could then be granted to users at the group, course, category and/or site level. Access should be able to be denied/granted on a per file, per structure level.

 The User Root structure will allow for private stores to be set up per user.

Below these levels (at any level), structures should be based on user / site preferences and languages (i.e. images, documents, assignments, etc.).

 

Development Implications:

  • Until we have implemented a more robust role/group structure around all of Moodle, using the course hierarchy seems the best structure to work with DMS.
  • Access code will need to access the course student lists to handle group emulation.

What can it contain?

Everything we can currently store in the file application all defined MIME types. Plus, zip file archives and course backups. Thought should be given to other packaging options, such as Learning Objects.

For now, we may want to define a standard keyword system to describe zips or other archives. We will want to differentiate between course backups and other file collections, as a minimum.

MyDMS provides both a download and a view online function. These are both desirable features to be kept.

Development Implications:

  • MyDMS uses an Apache mod, mod_rewrite. Look at this for use in Moodle.

 How do users access it?

Currently, there is no direct access to file functions for students. Access to these functions needs to be provided somewhere in the interface perhaps in the My Moodle menu?

 

Teachers, creators and administrators will access it as it is now from the file option in the administration menus. If we use the hierarchical structure proposed above, some access will need to be provided at the category level.

 Who can access it?

Everyone, according to the restrictions imposed by the authorization schemes. Limits will need to be placed on storage sizes, to control the user stores.

Development Implications:

  • MyDMS currently has no size limitations built into it. Code will have to be added to control this.

How is it accessed by courses/activities?

To add these to courses, we will need to add them similarly to now, via a resource. The file upload option in resource activities will need to access the new DMS features, and allow any file accessible to the course be selected. When accessing this resource, options should be available to download it, or view it online.

Searching should be available to the course.

Development Implications:

  • Can versions of the document other than the current one be accessed from a course?
  • Is the resource activity the best way to access a file from the DMS?
  • Need to be able to deal with changed access levels.

 How are documents tagged?

MyDMS allows for keywords and comments to be attached to documents and their versions. We have these available to us as a minimum.

Development Implications:

  • Do we want to add standards to any of these tagging possibilities (i.e. SCORM)?

     

Attachment dms.jpg
Average of ratings: -
In reply to Mike Churchward

Re: Initial Spec Notes

by Paul Duff -

Terrific work Mike - youve obviously put a lot of effort into this.  For everyones convenience when reviewing, Ive included your original statements and added comments in bold red.  Should any of my views (or responses from others) sound sensible, you can then amend and re-submit subsequent versions of the specification.

How is it accessed by courses/activities?

·        

Initially, develop DMS to work integrated with Moodle. (By integrated, I assume you mean utilizing Moodle user database) This is the easier path, and will allow for the primary functions of DMS to be established first.How will Moodle exchange information and data when DMS is on a separate server? XML-RPC, SOAP? (I dont really have a view here will bow to programmers discretion or others comments)

Access code will need to access the course student lists to handle group emulation. (For read rights?  What about teachers are there groups for them?)

MyDMS currently has no size limitations built into it. Code will have to be added to control this.

Can versions of the document other than the current one be accessed from a course? (maybe latest versions only, but with a toggle to view all versions for those with write rights?  Does MyDMS understand the notion of published maybe only published documents should be searchable logically, only one version of a document would be published, and not necessarily the latest version which might be Work in Progress)Is the resource activity the best way to access a file from the DMS? (That would have been my assumption - have you another method in mind?)

(Ultimately, I would have thought so)

 

 

Regards

Paul

 

 

In reply to Paul Duff

Re: Initial Spec Notes

by Thomas Robb -
I'm fairly naive when it comes to this part of computing, but perhaps some naive questions would be helpful at this point. smile

1. I can understand the rationale behind needing to store the files on a separate server, but I'm not clear as to why the progra/scripts that manages it would have to be separate from Moodle. Couldn't this just be a separate folder within the standard moodle installation, that relies on the same PHP application for running the code? After all, this code wouldn't be run so frequently or intensively that it would cause problems, would it?

-- or is there a problem with the code on one machine manipulating files on another machine? Would it end up having to be done through some sort of FTP scheme?

2) Say that each user has a distinct storage area, and just for fun, let's say that the user wants to submit the same file to two separate courses. In this case would copies of the file be made to place in each course area (logically the simplest) or would a simple pointer be placed there, pointing to the original file in the user area? (This would save space, but would complicate matters since the original file should not be allowed to be deleted as long as something is pointing to it, etc.)

3) What is the biggest problem with simply creating a user file function within the current Moodle framework that would allow users to keep files in the same manner as courses currently do? The same basic code could be used, but of course, on drawback that even I can see is that the files then couldn't reside on a separate server, although they could reside on a separate device if the "moodledata" folder (or a parallel "moodleuserdata" folder) were set up by the moodle administrator in that way.
In reply to Mike Churchward

Re: Initial Spec Notes (more)

by Paul Duff -

Hi Mike

Just slept on it!!! 

With regard to the 'Course Root', you indicate that the likely structure below that will be cat, sub-cat.....(s?), course.  Do you see that structure dynamically mirroring the Moodle layout, and if so, do you anticipate auto-assigning rights to teachers/students as part of that process?

Going back to my original post, from our perspective, I'd like to see maybe an opdata-flag to disable auto-rights-assign (leaving the administrator to do it manually) so that course level storage can be limited/provided as required.

Ta

Paul

In reply to Mike Churchward

Re: Initial Spec Notes

by John Papaioannou -

Mike, first of all thanks for the great work you did with these specs. smile

For readability, I 've pasted your document here and added my own comments copying Paul's style. The comments of course reflect more of a programming and design mentality rather than an educationally-oriented approcach, as you will see, so I apologize in advance for the "rather technical" discussion:

Because it is conceptually a separate function from Moodle, it should be designed such that it can run on a server separate from Moodle. It should share a user database and any group and role functionality (present and future) with Moodle. It should be able to share a database with Moodle or use its own. (Agreed. On a different server with a shared database is no problem at all, we just create a $db object and we re set. Using its own database, its just a matter of providing for a different value of $settings->_moodleInterface).

· Since they share an authorization function, design should allow for authorization function to be part of DMS, Moodle or separate (for DMS and Moodle: _moodleInterface. Seems I will be quoting that a lot. For separate, the thought that comes to me is something like giving DMS the full treatment of authorization modules, just like Moodle has. That would be a lot of work though. As a code design proposal, since fortunately MyDMS is OO, we can have different versions of e.g. the User class file using different authorization schemes, and decide which one to include at runtime. IMO thats the best you can ever do for maintainability and extensibility in PHP).

Initially, develop DMS to work integrated with Moodle. This is the easier path, and will allow for the primary functions of DMS to be established first (100% agree).

How will Moodle exchange information and data when DMS is on a separate server? XML-RPC, SOAP? (Tough one. However, since I have the impression that the MyDMS code will be a single configurable entity and not as different versions for same server or other server use, at least we wont have to make an API for Moodle. That would definitely be an API too many. As for the info exchange dunno. Leave that for the future. As long as the design is sound, postponing this decision could only bring the benefits of experience).

This shouldnt matter, according to the above. The physical repository is a combination of disk/file structures and database tables. The important issue is that all access is controlled via the DMS to maintain integrity. It would be ideal if parts of the repository file structure could be located in different physical locations. That way, the entire system expands easier. (This would imply storage location management, and it drives my imagination insane. Why limit ourselves to a hard disk? Have support for two local hard disks. Or any number of them. Files in database BLOBs, too. On any number of servers, of course. And then theres WebDAV) (Obviously this is going to be a monster project. Lets start small: add a repositoryID to each document, which links to a (new) repositories table. This in turn will tell us what kind of repository we have, how to access it etc etc. In the beginning, the code of course wont support anything else than a single disk-based repository. What do you think?)

·

Initially, to keep things simple and to work with Moodles current Category / sub-category / course, user and group structure, I suggest creating two directory structures just below the DMS root, called: Course Root and User Root. (see diagram) (Nice idea. I m all for it).

The User Root structure will allow for private stores to be set up per user.

· Access code will need to access the course student lists to handle group emulation (_moodleInterface will tell us if we re allowed to do that).

Everything we can currently store in the file application all defined MIME types. Plus, zip file archives and course backups. Thought should be given to other packaging options, such as Learning Objects.

MyDMS provides both a download and a view online function. These are both desirable features to be kept (agreed on everything).

·

Currently, there is no direct access to file functions for students. Access to these functions needs to be provided somewhere in the interface perhaps in the My Moodle menu?

Teachers, creators and administrators will access it as it is now from the file option in the administration menus. If we use the hierarchical structure proposed above, some access will need to be provided at the category level.

Everyone, according to the restrictions imposed by the authorization schemes. Limits will need to be placed on storage sizes, to control the user stores.

·

To add these to courses, we will need to add them similarly to now, via a resource. The file upload option in resource activities will need to access the new DMS features, and allow any file accessible to the course be selected. When accessing this resource, options should be available to download it, or view it online.

· Is the resource activity the best way to access a file from the DMS? (Well, you can always access it by calling up the DMS interface thats what students are going to be doing with their personal storage, anyway).

Need to be able to deal with changed access levels.

MyDMS allows for keywords and comments to be attached to documents and their versions. We have these available to us as a minimum.Do we want to add standards to any of these tagging possibilities (i.e. SCORM)? (I m clueless about that).


Jon
In reply to Mike Churchward

Re: Initial Spec Notes

by Jason Cole -
Mike,

Thanks for all this great work.  I feel we're really getting some traction here.

I've followed suit with everyone else ... my comments are inline in red

DMS Structure

The DMS has to be a conceptually separate entity from the category/course/activity structure of Moodle (much like the User Administration is)...... I should be able to create and manage documents even if I don't have any courses. (Agreed!)


Where Does the DMS Reside?


 

Development Implications:

  • Have an API that can be called from any application. Reduce/remove dependencies on Moodle globals and constants.Have a separate configuration file that can be included in the Moodle configuration file. (I would argue that building a system on top of WebDAV would be the most flexible and would meet this requirement)

  • Since they share an authorization function, design should allow for authorization function to be part of DMS, Moodle or separate. (Yep. We can set this up in a WebDAV system as well)
  • Initially, develop DMS to work integrated with Moodle. This is the easier path, and will allow for the primary functions of DMS to be established first.
  •  How will Moodle exchange information and data when DMS is on a separate server? XML-RPC, SOAP? (I don't think we need to worry about the protocol yet. Let's set the reqs for the separate server functionality and the mechanism will follow)

 Where does the repository reside?

Agree

How is the repository structured?

Initially, to keep things simple and to work with Moodles current Category / sub-category / course, user and group structure, I suggest creating two directory structures just below the DMS root, called: Course Root and User Root. (see diagram)

 
This will present some interesting useablility challenges. If I have to keep flipping back and forth between my classes and my personal repository it might get tricky. But I like the organizational structure of this. So I'll put my faith in our UI design skills to present a useful view.


What can it contain?

Agreed

Development Implications:

  • MyDMS uses an Apache mod, mod_rewrite. Look at this for use in Moodle. (Again, I'd argue that WebDAV has replaced mod_rewrite (which was really just a hack to get something up and running)

 How do users access it?

Currently, there is no direct access to file functions for students. Access to these functions needs to be provided somewhere in the interface perhaps in the My Moodle menu? - That's what I was thinking as well

 

Teachers, creators and administrators will access it as it is now from the file option in the administration menus. They should also be able to access it from the My Moodle menu as well. Especially if we are going to include personal archives.


 
Who can access it?


Agreed


How is it accessed by courses/activities?

To add these to courses, we will need to add them similarly to now, via a resource. The file upload option in resource activities will need to access the new DMS features, and allow any file accessible to the course be selected. When accessing this resource, options should be available to download it, or view it online.

Searching should be available to the course.

Development Implications:

  • Can versions of the document other than the current one be accessed from a course? Do  we create a pointer to the latest version no matter what that is? What happens if the version changes after I create the link?
  • Is the resource activity the best way to access a file from the DMS? The resource module is a bit cluttered in my opinion. Perhaps there's another way to do this? A new module?
  • Need to be able to deal with changed access levels.

 How are documents tagged?

MyDMS allows for keywords and comments to be attached to documents and their versions. We have these available to us as a minimum.

Development Implications:

Do we want to add standards to any of these tagging possibilities (i.e. SCORM)?

Adding SCORM metadata (or Dublin Core) would be valuable in the long run. In the short run, getting most instructors to fill out metadata will be difficult.

In reply to Jason Cole

Re: Initial Spec Notes

by Mike Churchward -
Picture of Core developers Picture of Plugin developers Picture of Testers

Sorry. Been busy and haven't had time to respond. I will organize all the comments with some more of my own into a new post - soon.

Jason, I'm *really* not up to speed on WebDAV. Can you shed some light on what it is, what it does and what's available to integrate?

mike

In reply to Mike Churchward

Re: Initial Spec Notes

by Jason Cole -
What? All your time isn't devoted to Moodle and Moodle disucssions? big grin

WebDAV is a set of HTTP extensions that enable collaborative web authoring. From the FAQ on WebDAV.org

"Some view DAV as a network filesystem suitable for the Internet, one that works on entire files at a time, with good performance in high-latency environments. Others view DAV as a protocol for manipulating the contents of a document management system via the Web...... A final goal of DAV is to leverage the success of HTTP in being a standard access layer for a wide range of storage repositories -- HTTP gave them read access, while DAV gives them write access."

Basically, your webserver also becomes a file repository and management system. It makes the Web a writeable, collaborative medium.

Features include:

Read and write of files
Creation of "folders"
Locking
Namespace manipulation
Storage of arbitrary metadata

The system works by passing XML with new HTTP headers. The metadata is stored either as XML or, using a system called Catacomb, in a MySQL database.

There's currently a mod_dav module for apache that is available for 1.3 or 2. DAV access has also been written in to both Window and OS X. Apple's iDisk is completely WebDAV. DAV protocols have been written into Office as well (you can save to a DAV directory directly from Word, Excel, etc).

It's rapidly becoming a standard. Most SANs and NAS systems have WebDAV capability. Subversion (the new CVS replacement) has WebDAV capabilities (although not a full set currently).

I think the most flexible approach for our development of a DMS would be to build it from the ground up on top of WebDAV. It would be easy for people to point moodle at various webDAV enabled repositories around the web (I could even use my iDisk) as long as they had access. We can also leverage the other DAV work that's going on and make it a much more powerful system.

I don't think using DAV changes any of the use cases or requirements we've spec'd so far. In fact, everything we've talked about can be easily implemented using the protocol.

There's a start at a PHP library for WebDAV that I've attached here.

In reply to Jason Cole

Re: Initial Spec Notes

by Mike Churchward -
Picture of Core developers Picture of Plugin developers Picture of Testers

Thanks Jason -

If I understand correctly, the advantages of WebDAV to us (Moodlers) is:

  1. We could create, access and edit documents directly through Moodle.
  2. We would have the capability of extending our document repositories beyond the local one, using any accessible WebDAV systems.
  3. We could use the already established metadata and namespace systems.

From what you've posted, it sounds like we have the freedom to post metadata information in the database still (if that's the best solution).

I need to soak this in. I'm having problems seeing a working access structure for Moodle. The one I posted previously, using the Moodle Category/Course structure, doesn't really do what I want it to. I want to be able to gather collections of documents without copying them, and have easy categorization access.

By the way - you mentioned an attachment, but I don't see it.

mike

In reply to Mike Churchward

Re: Initial Spec Notes

by Jason Cole -
Hmmm... Looks like it didn't like my tar archive. Here's the link where I found the PHP library. http://freshmeat.net/projects/class_webdav_client/?branch_id=46009&release_id=145053

I think your summary is accurate. To me, WebDAV has many of the features we want in MyDMS, but it's built on an open standard. Once we have a WebDAV system, we can plug it in to many servers and access it with many clients.

Posting metadata in the db is possible, but it would require integrating Catacomb.

As the server stores each item with a unique URL, we may want to simply create different views on the repository. Creating a collection would simply be pointers to the unique URLS.

J
In reply to Mike Churchward

A view on the "competition"

by Jason Cole -
I just attended a demo by a higher ed CMS vendor about their new content management system. It's very expensive, but it has some very nice features.... Here are my notes and thoughts.

Organizational features: Creates folder for each course and each user - course folders are under the user root, not the document root. So I see my documents for the courses I'm taking / teaching as folders in my content view

Public Area - For sharing institution wide content.

Portfolios - Create and publish portfolios from the content system - not a very friendly interface.

Tasks

1. Add content
Click on add item, file browse, options

2. Web folders - Create and manage sub-folders

3. Search -  creates a nightly index - Ability to limit search to files within an area

4. Turn versioning on an off

5. Create a new version

WYSIWYG - allows insert of media - Insert flash, image, etc.

Add content to course  - Browse file system, add from content system, specify URL

Portfolios point to individual items in the content system and URLs

Custom meta-data fields

Fine grained access control

Mount file system using WebDAV - Can mount the content system directly to your desktop via MS webfolders or OS X webDav. Also has direct Office integration

Uses same Db as course system


Thoughts:

Basically its everything we've been talking about except for the WebDAV part. I think that's really important though.


In reply to Jason Cole

Re: A view on the "competition"

by Ger Tielemans -

I think that you should realise that Moodle is organising content around topics in the sections. The logical organisation and right structure of resources is therefore connected to these sections and the way a teacher as admin regulates the rights for groupsin a course:
If you press on resources in the left activity box, you get an overview of all these resources, with the last changed date, organised in the order of the sections with a small summary after each item. (If you filled that summary with a description...)

We already have a public area for files, and Shelfs is also a way for presenting grouped resources to students. When wiki is in place with file-attachment-ability to each page, aslo students get their annotated files-areas..

I do not see the added value of seeing files out of context in dirs without describing label. You compare it with a tool that uses (as you describe it) more a "personal portal" approach. Complaints with that kind of portal-tools is that you loose the overview when there are many resources in your stduent area.


If you are talking about a "clean" resource management system, then you should drop your five cents in the discussion about DMS and the rights-regulation between DMS and an independent Moodle (or not indep.. smile) ...Oh you did, I see blozend

In reply to Ger Tielemans

Re: A view on the "competition"

by Jason Cole -
I'm not sure I follow you completely Ger. Perhaps we're envisioning two different systems, or I'm not understanding your argument..

I feel that giving students the ability to store their own files in a repository outside of the context of a class woudl be a valuable feature. On our campus, we're moving to a more distributed architecture with students accessing files at a number of different sites around the campus. There's even talk about getting projectors that have direct access to a file server so there's no need for a client computer in the classroom (I love technology like that).

So as a student, I could upload a presentation to my store, share it with my friends in other classes, present it in class, or anywhere on campus. I could upload drafts that I'm not ready for other people to see and work on them from home or on campus.

The way I'm envisioning it, only the students would see their files that weren't uploaded to a shared class area.

Does that make more sense? Did I understand your objection and clarify my position?

In reply to Mike Churchward

Re: Initial Spec Notes

by Paul Duff -

Hi Mike

Recently found a commercial product which tends to highlight some or more of my thinking.  This PDF from the page is interesting - might be work a look - note the location!!!!

Paul

In reply to Paul Duff

Re: Initial Spec Notes

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
Ha! Yes, this looks to me exactly what we should be aiming for long-term. (Disclaimer: I have not yet had time to read these interesting recent discussions about the DMS).

Funnily enough, the Harvest Road company is only a few blocks from my house, and I was actually there for a meeting early last year (looking at implementing some of their stuff for a High School I was consulting to). At the time I was not very impressed with what Hive did, but it seems to have evolved a lot since then!
In reply to Mike Churchward

Re: Initial Spec Notes

by Mike Churchward -
Picture of Core developers Picture of Plugin developers Picture of Testers

Sorry I haven't been active here lately - been busy.

I've been doing a lot of reflecting on this effort, and I'm troubled slightly. I'm wondering if we are actually going to get anything that much better than what we have, once we're done.

Jon, I know you're chomping at the bit, wanting to get the code done, and you've done quite a bit, which means you may have some good answers.

I really want to be able to have libraries of resources available to users. These should be gathered into groups:

  • manually, by selecting them,
  • dynamically, by meeting certain search and category criteria,
  • referentially, by being refered to by other documents,
  • recommended, by others in the system,

Additionally, they have to be available according to privileges. And scoring by all participants with comments should be critical.

This requires a (module?) quite unlike the current resource module.

My worry is that MyDMS isn't really getting us that far. Other than allowing for a prettier interface, all it seems to be getting us is a better version system and metatags. We probably could've added those to the existing file system even easier.

Jon, what are your thoughts after having spent a lot of time with the code. Is MyDMS a valid choice, or would we be better suited starting from scratch?

mike

In reply to Mike Churchward

Re: Initial Spec Notes

by Jason Cole -
I think part of the issue is we converged on a solution before really understanding the problem. We don't really have a clear picture of what we want.

We've got a couple of wish lists, but no clear use cases and no requirements doc. I think we should draft a formal doc about what we want it to do, who is going to use it, how we envision the architecture. Then we can put it up for comment, poke some holes in it and revise. Martin then puts his stamp of approval on it.

Only then do we see if MyDMS will meet our needs.
In reply to Mike Churchward

Re: Initial Spec Notes

by John Papaioannou -
I 've been troubled even more, working on the source. My intention was to "brute force" a working solution, something you can actually use to replace the current resources handling interface, and present that "prototype" to get things running. Of course I 'd have to avoid making any design decisions myself during the process (or at least binding ones), which I think I 've managed.

But somewhere here the good news end... What I mean is that it's increasingly hard to integrate MyDMS into Moodle. And I don't believe it's MyDMS's fault; in fact, MyDMS has a decent OO design (for PHP at least), which has to be a good thing. But let me present to you the latest problem that's troubling my thoughts in the wee hours:

Mike's screenshot shows a "folder tree" that has course categories, subcategories etc etc. Now, these are stored in their own DB table. Courses are stored in another DB table. To avoid data duplication, the DMS should somehow collect that kind of data and present its folder view (no points for solutions that propose a mirrored structure in other tables and double housekeeping). But the data is not uniform; each table has a different format. And the "user folders" would have to be constructed in a different way entirely. If you sit and think about this for a while, it becomes obvious that there are difficult problems that need to be solved. Add the fact that we 'd like the DMS to not be too tightly coupled with Moodle (all that talk about "external file deposits") and you 've got a really hot potato in your hands...

Thus far I 've talked about the problems that await us. But why did I spend this time and effort in the first place?

  1. Trying to implement things shows flaws of the planning phase. Of course making better planning in the first place is preferable, but frankly I don't see us having the resources necessary to complete that kind of plan before 2005.
  2. MyDMS has a decent OO framework already in place. That in itself would be a very welcome change; otherwise, the objective of "de-coupled AND customized at the same time" simply cannot be met. Period. So this effort has (painfully) pointed out where the OO framework is lacking and needs to be improved. This point especially goes to answer the "all it seems to be getting us is a better version system and metatags" comment.

Now, for the burning question:
Is MyDMS a valid choice, or would we be better suited starting from scratch?

Well, I really think the correct solution will be given by starting from scratch. But there is no use in starting from scratch right now: we need a plan beforehand. That plan can be obtained from either: 1) an extremely well thought-out and completely fleshed-out design (do not take this lightly: I mean that people with loads of experience and design genius should devote time to this task; sadly, I know of no such person available for free), or 2) an (unsuccessful) attack on the problem that will of course provide very specific "feedback", in the form of insurmountable problems encountered.

So, even though I 'm all for the "from scratch" approach, I believe that the time spent on MyDMS is going to bring its rewards. Remember: to be able to do such a design correctly and without trial and error (which is exactly what the MyDMS port is) you really need to be a guru on systems design.

I 'll now refer you to a previous paragraph, and say that I 've come up with a few ideas of how the "in fact I realize that we won't get anywhere by having a table of dms_folders because the 'folders' we want to implement are diverse, not uniform" problem could be solved. But I sure wouldn't have thought of it like this during any planning and design phase.

Jon

In reply to John Papaioannou

Re: Initial Spec Notes

by W Page -
Hi Jon!

What about a re-look at OWL which Martin was kinda strong on before MyDMS.

Maybe that will be helpful in organizing the thoughts of the Moodle-DMS team in its continuing and evolving approach to a DMS for Moodle.

OWL
http://owl.sourceforge.net

Hope it is helpful.

WP1

In reply to John Papaioannou

Re: Initial Spec Notes

by Mike Churchward -
Picture of Core developers Picture of Plugin developers Picture of Testers

Hi Jon -

I sure didn't mean to imply that you're time was wasted; it was not.

I've been trying to grab some time over the last while to really spec this out, but I just haven't had the time, so instead I posted my last reply. My intent there was just to see what everyone though with respect to MyDMS and what Moodle needs.

If you think the MyDMS code is still a good base, then I believe you. I may have some more time this week (no promises) to gather all the requirements we have seen and start listing them into a spec, which can then lead to a design.

In thinking since my last post, I believe what I need is actually two requirements anyway. What we need to do with the DMS is expose eneough of an API to allow us to create a different resource (library) module.

mike

In reply to Mike Churchward

Re: Initial Spec Notes

by John Papaioannou -
Mike,

No, of course I didn't take it like that... smile

In fact, I 've been trying to do this (against my better judgement) and I 'm pro-"MyDMS code base" not because it's efficient for the project; it's definitely not. The reasons are practical: it's much easier to concentrate on addressing one issue at a time, possibly spend time rewriting subsystems, than to make "the mother of all specs" and start then implementing. The second approach would be most productive, but it requires experienced people with lots of time in their hands.

So, I 'm taking the other path because there just isn't time for the uber-design. You 've said so yourself. One step at a time, on the other hand, will be one step closer to the goal each time. And of course, don't forget the morale issue: people need to see progress, no matter how small! (and that includes us developers!)

Regards,
Jon