Forum .LRN Q&A: Ladies and Gentelmen: LORSm v0.4d!

G'day People,

It's my absolute pleasure to introduce LORSm v0.4: an standards and specifications compliant learning object repository 😊

LORSm uses IMS/SCORM specifications/standards to implement a repository of learning objects and a delivery environment. Things you can do with LORSm:

  1. Import Course Content (IMS CP & SCORM).
      -  Imports Blackboard6 IMS CP packages
      -  Imports WebCT IMS CP packages
  2. Share courses between different .LRN classes.
  3. Course Management and Administration
  4. Metadata Viewer/Editor (to certain degree)
  5. Course Delivery
  6. Online edit of course content (versioning et al)
  7. Students time and views tracking
  8. Full text search on content and metadata
  9. Export Course Content
  10. Tons of improvement and others features

The killer features of LORS 0.4 are:

1) You can import *any* course that you export from Blackboard6 and WebCT 4.1 seamlessly into a .LRN class.
2) Once it is imported, a teacher can share a course with other .LRN classes. So for instance a course on "How to use .LRN" can be shared across many classes without having to duplicate its content. The repository does it all for you (including permissions and all that). That was hard, but it's a really really wicked feature.

LORS requires a slightly addition to File-Storage. LORS uses FS for all handling of files and resources. We did these changes for the work we've been doing for the Concord fellows. Hopefully those changes in FS are going to be merged with our FS. Otherwise, I'll see how we can go around this.

In addition, we use Jeff's views to do tracking of all sort of views for items and resources. That's pretty simple and cool as well. It's also implements service contracts to use tsearch2 or openfts.

If you want to give it a go, you can download it from here:

LORSm packages:

http://weg.ee.usyd.edu.au/people/ernieg/files/lorsm_v0.4.tgz (these are all on CVS too: lors lorsm lorsm-portlet dotlrn-lorsm)

Version of FS that will work well:

http://weg.ee.usyd.edu.au/people/ernieg/files/file-storage.tgz

You also need to check out the "views" package from CVS as it is required for student tracking.

To test it, you can use this IMS Content Package... my bloody thesis, which gives some technical details of the implementation and comparisons to other learning object repositories:

http://weg.ee.usyd.edu.au/people/ernieg/files/Thesis_v1.0.zip

By no means I can take credit for LORS on my own. It wouldn't be even half of what it is without Dave, Deds, Roel, Caroline, Mathias, Al et al who have helped to make it a much more appealing repository than what it was on version 0.1. For Lars, Don, Jeff and all the fellows who have worked on OpenACS since the beginning: thanks for have taught me with your code more than what I've learnt in four years at University 😊

Things that require some work (release notes if I may):

* As of now, LORSm is -to certain degree- a demostrator. Therefore some work on scalability is required.
* Also, it's only available for Postgres (volunteers for Oracle migration are welcome).
* UI isn't really my forte 😉

Future improvements include: internationalization (thanks Rocael), sCORM RTE integration (thanks Giancarlo), probably an online IMS CP package editor (creating course online and being able to export them to other platforms). I personally would like to implement features for federated search and discovery of learning objects across several instance of LORS. For instance, learning objects that are available at Sydney University are searchable (thru webservices) by other institutions running LORS or any other repository for that matter. Other IMS specifications should be considered too.

Ideas, comments, suggestions... always welcome.

Ernie

Collapse
Posted by Alfred Essa on
Ernie,

You rock!

Al

Collapse
Posted by Rocael Hernández Rizzardini on
sorry Al that's already taken, I'm roc ;) ....

awesome work Ernie!

E-lane will help on "intensive" testing, plus using it in real scenarios (and we'll come back with study cases when the time comes), also with i18n work, scalability testing & improvements and oracle version!

Collapse
Posted by Nima Mazloumi on
Congratulation ... this is an invaluable contribution for the community.

Greetings,
Nima

Collapse
Posted by Rafael Calvo on
Go Ernie.
Congratulations on submitting your Master thesis as well!

Rafael

Collapse
Posted by Malte Sussdorff on
HI Ernie,

this is a cool piece of software. Congratulations on this and your thesis!

Now, I got a couple of questions for the "future" of LORS, while working with it a little bit.

- Will it be possible to detach LORS from file storage in the future so that LORS folders do not show up in the file storage view ?

- Will it be possible to add versioning (so you can upload a new version of the course which creates a new version of each file in the course and adds/deletes new/old files) ?

Looking forward to more on this front !

Collapse
Posted by Nima Mazloumi on
I also think that it would be usefull to detach from file storage and use CR right away. The bulk delete functionalities of FS are very slow and not useable at all. We need something that can easily create and delete content that was uploaded since SCORM courses are nothing that should be stored for ever. Since the real content was generated somewhere else and is volatile.

What do you think?

Greetings,
Nima

Collapse
Posted by Dave Bauer on
Nima,

Bulk delete of anything from the CR is going to be kind of slow. It doesn't any any overhead above deleting from the content repository. That said, I don't see any reason LORs needs to work on top of file-storage, especially with the new CR Tcl API.

Collapse
Posted by Rocael Hernández Rizzardini on
FS use of LORS is good for some cases, though will be useful to hide it when its needed ...

Delete content is also useful, but not always needed specially if you are building a Learning Object Repository, which is something worth to have in many installations ...

Collapse
Posted by Ernie Ghiglione on
Malte, Dave, Roc

I think using FS to do the file management of all LORS related resources and files is optimal. Even if now we have CR TCL API, I really don't see a reason for LORS to have its own interface when it could easily reuse the FS one. Additionally, we get all the perks from FS: webdav support, versioning, permissions, etc.

On version 0.1, we even were using file-storage's template for delivery. Now we aren't, but still I find it easy (and useful) to rely on FS for file management.

Maybe with time and when LORS gets a bit more specilized either on content delivery or as a repository, it will make more sense to migrate to a propietary way to handling file, but for now, FS does all we need.

<blockquote> Will it be possible to detach LORS from file storage in
the future so that LORS folders do not show up in the
file storage view ?
</blockquote>

Yes, Giancarlo has mentioned this to me before.

Maybe instead of using the FS community/class FS root folder, we can create a new one for LORS. That will prevent students to see the folders and files on the FS interface.

How about that?

<blockquote> Will it be possible to add versioning (so you can upload a
  new version of the course which creates a new version of
  each file in the course and adds/deletes new/old files) ?
</blockquote>

This will be the ultimate feature.

I'm sure that it's possible but it might be really tricky since you might need to keep track of all changes in files and versions.

Right now, course are acs_object and maybe they should be cr_items so versioning will be a bit easier.

If anyone has suggestions/experience about this, please do share them here so we can see how we can go about this.

Thanks,

Ernie

Collapse
Posted by Nima Mazloumi on
Ernie,
I tried to install lors but APM says this:
Package                             Version  Error    Message      Added  
Learning Object Repository Service  0.4d                          *  
LORS Management Portlet             0.4d     Requires lorsm 0.4d  *  
LORS Management                     0.4d     Requires views 0.1d  *  
dotLRN LORS Management Applet       0.4d     Requires lorsm-portlet 0.4d  

Any idea? The packages where taken from your tar.gz file above.

Greetings,

Nima
Collapse
Posted by Nima Mazloumi on
Sorry, views was missing.
Collapse
Posted by Nima Mazloumi on
Ernie, I tested our course editor with lors. But I have a problem since you embed the html pages inside the master template of dotlrn learn.

The result is that several things break:
- design
- loading of JavaScript
both stuff that appear in the head of the page.

Any idea? What we could do is either display the content without any master template, so that all pages are loaded properly or we need to strip off the head part of the pages and serve them in the head of the master template so that design stuff and javascript is loaded.

What do you think?

Greetings,
Nima

Collapse
Posted by Ernie Ghiglione on
Hi Nima,

You can get rid of the <master> template in your-acs-root-folder/templates/lorsm-default.adp. You can customize it to use your own template or just get it of it all together.

Let me know if that does the trick for you.

Ernie

Collapse
Posted by Nima Mazloumi on
Ernie, another problem I have is that I always get the following error. Dave told me that Malte already merged your extensions of file-storage to HEAD. So I updated my the file-storage package and proc fs::item_editable_p exists.

Any idea?

referred by "http://madura.bwl.uni-mannheim.de:8080/dotlrn/classes/test/subject/class/lorsm/delivery/menu?man_id=4340&track_id=0"
invalid command name "fs::item_editable_p"
    while executing
"fs::item_editable_p -item_id $content(item_id)"
    invoked from within
"if { [info exists content(item_id)] } {
    set write_p [fs::item_editable_p -item_id $content(item_id)]
} else {
    # No content to edit
    set wri..."
    ("uplevel" body line 39)
    invoked from within
"uplevel {
          # Put the current revision's attributes in a onerow datasource named "content".

Collapse
Posted by Ernie Ghiglione on
I checked out file-storage (HEAD) but have not seen the fs::item_editable_p yet. Malte?

You can download the version that works here:

http://weg.ee.usyd.edu.au/people/ernieg/files/file-storage.tgz

Hopefully, file-storage can be updated on CVS shortly.

Thanks,

Ernie

Collapse
Posted by Jose Agustin Lopez Bueno on
Hello, Ernie!

Are there any trick for not show the next info in the
portlet? Some users with many courses have that two lines
many times repeated.

Course Name       Subject       Last Viewed On  % Viewed
No Courses

Best regards,
Agustin

Collapse
18: LORSm v0.4d upgrade (response to 1)
Posted by Ernie Ghiglione on
G'day everyone,

Yesterday the e-lane fellows (Luis de la Fuente in particular) has shown me a potential security problem with LORS 0.4d. If a random striker (student) knows the exact URL for certain administration pages, he could potentially get access and change some of the LORS' course parameters (disable/enable, shared, etc).

I just committed the changes to prevent this to happen. Basically added:

# Permissions
dotlrn::require_user_admin_community -user_id $user_id -community_id $community_id

Additionally:

- Exporting/Importing courses with "()" characters on them, now are working (bug

- Curly brackets causing error in menu.tcl (Bug # 2100): fixed.

- LORS not displaying CSS with HTML pages: fixed

If you are using LORS, it is higly recommended for you to check out the new changes. No DB upgrade required.

Thanks,

Ernie

Collapse
Posted by Gerardo Morales on
Hello I´m going to internationalize  LORSm and do the translation to ES_gt.

regards

Collapse
Posted by Ernie Ghiglione on
Hi Gerardo,

That's great news!

You might want to talk to Jonatan Tierno Alvite (https://openacs.org/forums/user-history?user_id=195386) and/or Abelardo Pardo (https://openacs.org/forums/user-history?user_id=49412) from the e-lane project since they mentioned to me before that they wanted to do the i18 for LORS.

Thanks,

Ernie

Collapse
Posted by Gerardo Morales on
Thanks Ernie, I'm working with the e-lane project too. I'm going to notify to Jonatan and Abelardo about my work.

Kind Regards,

Gerardo

Collapse
Posted by Matthias Melcher on
<blockquote> and do the translation to ES_gt.
</blockquote>

Does that mean that it will be available on the translation
server such that we can also localize it into DE_de ?

Collapse
Posted by Gerardo Morales on
The i18n of lors is complete! Please if you find any bug or problem, let me know ;)

regards

Collapse
Posted by Malte Sussdorff on
Hi Gerardo, good work. Would it be possible for you to commit the new catalog files as well, they are missing.
Collapse
Posted by Malte Sussdorff on
On a related note, I wanted to share with you the confusions that had surfaced when talking about LORS within .LRN to new clients. Though SCORM is speaking about "courses", using this term within a .LRN "class" works in English, but does not in German (course and class are too close for understandable differentiation). Therefore we are using the term "Learning Unit". If this is okay with you, we should think about switching to that term in other languages as well.
Learning unit is better for spanish as well, I think.
Collapse
Posted by Nima Mazloumi on
Hi all,

I have a problem with installing lors/lorsm. I got dotlrn/openacs from oacs-5-1 branch. lors/lorsm packages were all emtpy. So I got them from HEAD. then I installed dotlrn and now I try to install lors/lorsm but it's not working. The APM tells that the packages were installed successfully but neither in the log nor in APM nor under "Manage Applets" in a community I can see that anything is installed. In fact when starting the installation the comment that everything was installed successfully appears right away.

Any idea?

Greetings,
Nima

Collapse
Posted by Michele Slocovich on
Nima,

Just an idea:
I'm afraid you should refer to a class, the installation we have here doesn't show up in communities, just in classes, right under manage applets.
Does that apply ?

Greetings
Michele

Collapse
Posted by Nima Mazloumi on
No, actually as I said LORS isn't installed at all even though APM tells so.
Collapse
Posted by Nima Mazloumi on
Alright. There seems to be a bug in the package manager though I don't know what it is. The old installer under /acs-admin/apm/packages-install is still working. That is how I finally got LORS installed.
Collapse
Posted by Nima Mazloumi on
How does LORSM take care that files relative in the course are available at presentation time? I have an applet or a flash that needs to get files relative to its positions but its not working.
Collapse
Posted by Nima Mazloumi on
Ok, found out why. The default-lorsm template was serving xml files required by my applet not properly.

1. ad_html_text_convert didn't allow text/xml..so this had to get fixed. I will commit that to cvs

2. default-lorsm.tcl needed a little tuning:

} elseif { [string equal "text/xml" $content(mime_type)]} {
cr_write_content -revision_id $content(revision_id)
}

Now everything works just perfect.

Collapse
Posted by Nima Mazloumi on
He Ernie,

what do you think about a little improvement on the navigation frame to display an Icon with the content type of the file it is referencing?

If it's an html page to be displayed we show a page as is now. If it is a PDF we display a PDF icon, word a word icon... so the user knows what he the next element will be.

Also one question: Is it possible for an item in the manifest to reference a URL in the internet instead of a resource?

Greetings,
Nima

Collapse
Posted by Ernie Ghiglione on
Hey Nima,

Some else just pointed to me that I have missed your posting here. My apologies.

<blockquote> what do you think about a little improvement on the
navigation frame to display an Icon with the content
type of the file it is referencing?
</blockquote>

Hmm... although nice, this could be a bit cumbersome.

This would require to change a few small changes in the delivery/menu.tcl. The menu.tcl is the page we use to generate the "index page" for the course based on the ims_item that it contains.

Now, the problem here is that ims_items have really little idea what their content is. So you'll have to find out what that is by searching for the ims resource reference (which usually points to a file or URL). In the ims_cp_resources table you'll have the href which will point out to the actual file (or URL) that is meant to be loaded when hitting the ims_item, but since an ims_resource could potentially "enclose" many different files, you will have to search the ims_cp_files table to get the actual cr_item id for that file.

Once you have the cr_item, you can find out what the mime type is and then add an "<img src="pdf.jpg>" after the ims_cp_item title.

So, yeah, it's possible but requires a bit of fiddling.

<blockquote> Also one question: Is it possible for an item in the
manifest to reference a URL in the internet instead
of a resource?
</blockquote>

Yeah, that's not a problem. You can have an entire course that is based on URL and not a single file in the resources.

Thanks,

Ernie

Collapse
Posted by Nima Mazloumi on
How can I add an item to the manifest that links to an external resource?
Collapse
Posted by Ernie Ghiglione on
Nima, here's an example

<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" identifier="MANIFEST-8236AF77-88E6-8E6E-CEDC-B301827FE87F" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd">
  <organizations default="ORG-4396F8E8-EB84-246F-7FDE-C39985F68086">
    <organization identifier="ORG-4396F8E8-EB84-246F-7FDE-C39985F68086" structure="hierarchical">
      <title>Organization</title>
      <item identifier="ITEM-DB63FDB5-9FA0-5449-D172-BD99F2B5526C" identifierref="RES-30036DFA-FCA1-39CC-BE46-D8C6665A9A5F" isvisible="true">
        <title>Google URL</title>
      </item>
    </organization>
  </organizations>
  <resources>
    <resource identifier="RES-30036DFA-FCA1-39CC-BE46-D8C6665A9A5F" type="webcontent" href="http://google.com" />
  </resources>
</manifest>