Forum .LRN Q&A: question on dotLrn status on port to postgres

Hello,

I have just recently downloaded a copy of dotlrn and installed it on
Oracle and I must say that it's incredible.

We have a project in the pipeline that would truly benefit from using
dotLrn, unfortunately the db backend is Postgres and there is a tight
deadline.

I read in the OpenForce website (correct me if it is somewhere else
or if I was just imagining it) that dotLrn will release a port for
postgres on July 1.

I was wondering if it's still good to go on that date or by recent
estimates - will it be much later.

Best Regards,

Collapse
Posted by Ben Adida on
You probably read this on the OpenACS bboards, not on our web
site, but the date of July 1 is still our target for alpha-level PG
compatibility. We're getting some great help from the Berklee
team on this. We expect July 1 will be a demoable install of
dotLRN on PG. We expect July 20 to be a solid install of dotLRN
on PG.
Hmm...

I think we have some communication glitches to iron out. The last communication on the PG availability date was the following:

"The PG version will be available on July 1. There are still some changes going into the core so we want to take our time to do things right first on Oracle, and then quickly port." [https://openacs.org/bboard/q-and-a-fetch-msg.tcl?msg_id=0004ij&topic_id=11&topic=OpenACS]

Now perhaps it was unreasonable to expect that this version would be a full, complete port given the time frame, but it does come across as a little jarring to read now that July 1 is "still" the target for "demoable" and "alpha-level" compatibility.

Just how functional will that alpha-level code be? How confident are you in the July 20th date? Does "solid install" mean "production-quality release"? Does it mean "complete parity with the Oracle version"? And will you include upgrade scripts for those who get started with the July 1 release?

Can we please get some clarification on the PostgreSQL port timeline? Is the July 20th release intended to be production-quality and achieve full parity with the current Oracle snapshot?
Collapse
Posted by Ben Adida on
Michael,

Next week we hope to have alpha-level functionality on PG. Yes,
our schedule slips at times because we are *not* contracted by
anyone to do this, and we're trying to please many people at the
same time. No, we will not have upgrade scripts from that
version to the one available in late July. We will begin
implementing upgrade scripts in August.

Late July, we will have fully equivalent functionality with Oracle. If
you're looking to install this in a production environment, don't do
it until August. If you're looking to help test, then you can start
next week.

Ben, my concern is less about the specific schedule than it is with communication about that schedule. Schedules slip. Everybody understands that is particularly true for non-paid work. You'll notice, in fact, that my complaint was not about the fact that the schedule slipped but about the way that the port was represented as being "on-schedule" when, in fact, it appears to have slipped by nearly a month since the previous announcement.

All I ask for is updates that are clear and timely. When the schedule slips, just say, "Sorry, folks, the schedule slipped." Alpha release, production release, and upgrade scripts are all important milestones that should be clearly distinguished in schedule announcements, (as you did in your most recent post). However fluid the timeline is, people need to know the current snapshot of it in order to plan development.

As for volunteering to bug test the PG version, I'd be delighted, and I'm sure I'm not the only one. If you could let folks know when and how to volunteer for this, you'll have your (end-user) QA testers.

Collapse
Posted by Rafael Calvo on
I will hapily help in the testing!
Collapse
Posted by Ben Adida on
Hi all,

Although we have made good progress on the port, we are not
quite at installability yet. I have asked Dan Chak to take over
porting responsibilities for the near future, which will give us a
boost in terms of productivity. I'll let him post more details on
estimates.

We're also receiving some great help from people who want to
help port some applets/portlets. If you have specific time to do
this and want to help out, please let us know at
mailto:dotlrn@openforce.net! I will let Dan say a few words on timeline.

Collapse
Posted by Dan Chak on
Hello all,

As Ben notes, I am now the point-man on the PG port of dotLRN.  By early next week, the dotLRN-core should be ready for download and testing, and as the week rolls through, applets will start appearing.

cheers,
dan chak (mailto:chak@openforce.net)

Thanks for the update. I can't help with the porting but I'd be happy to volunteer for UAT when you're ready.
<p>
Count me in too on the testing .... I'll be sure to grab it as soon
as it's out.
<p>
<i>"
By early next
week, the dotLRN-core should be ready for download and testing, and
as the week
rolls through, applets will start appearing.
"</i>
<p>
Does this mean that you plan/intend to have most if not all of the
apps ported as well by late next week ? :)
<p>
Forgot to ask - do you have a porting plan - at least an outline of
which apps/packages you intend to port first after finishing with
the core ?
Collapse
Posted by Samir Joshi on
Dan, I agree with Hamilton  - it would be very usefull to distribute or register  testing/porting tasks - if you will - via this forum thread , so duplicate work can be avoided...
Collapse
Posted by Dan Chak on
If you are interested in porting, send me an email letting me know which packages you are interested in porting, and what your free time / time scale looks like -- either "I'll get it done in 2 days", "I'll get it done by the end of the week", or "Give me a couple weeks."

The packages in question are:

file-storage, bulk-mail, faq, news, calendar, forums, syllabus

I'm still aiming for the core to be completed by early next week (either Monday or Tuesday depending on whether I get much hacking done over the holiday).  At that point, I will distribute the porting based on any emails I get over the weekend.

So for now, there is no detailed porting schedule, as I do not know how many packages I will get help with and how many I will end up doing on my own.

Expect an update Tuesday.  Until then, Happy Independence Day 😊

Collapse
Posted by Samir Joshi on
Thanks for the update Dan !

I am registering for FAQ , News and WP-Slim; in that order with
time-frame of 1 day, 3 day and a week respectively from avalibility
of core. See you early next week  :)
hi all!

It was mentioned before that the Berklee team is putting a
lot of effort into getting a postgres verion. Is that still true?
How does this porting effort relate to the work being done at
Berklee? I am curious!

I recently left my job, and am now planning to work full time
with OpenACS and dotLRN, and am very interested in pitching
in if there is something to be done. porting? testing?

Cheers.

Collapse
Posted by Ben Adida on
Berklee contributed early on and we've continued collaborating
with them. However, they're busy with some internal deadlines
right now so OpenForce has taken on the bulk of the porting
work for the time being. We're looking forward to many other
Berklee contributions, though!
Collapse
Posted by Dan Chak on

The dotLRN core datamodel has been ported to postgres. Now we can start porting other packages to postgres (at least the datamodels, for now).

To see it/play with it/work on it, check out OACS and dotLRN as described in http://dotlrn.openforce.net/doc/dotlrn-install.adp , but don't install the dotLRN packages with the APM. (If you already have a copy checked out, be sure to update acs-kernel, user-profile, and new-portal as well as all dotlrn* packages.)

Instead of installing with the APM, from a within the packages/dotlrn/sql/postgres directory, do:
psql your-db-name -f dotlrn-create.sql

Hopefully the datamodel will load with no errors. (If not, please let me know!).

So far, Samir and Mohan have volunteered to help with porting. Below is a tentative schedule of when things should get done. Unassigned tasks default to me, with the ones with asterisks (*) taking priority.

package assigned to expected completion
dotlrn chak done
dotlrn-portlet chak 2002-07-10
dotlrn-dotlrn chak 2002-07-10
dotlrn-portlet chak 2002-07-10 *
dotlrn-calendar *
calendar-portlet *
dotlrn-faq Samir Joshi 2002-07-14 *
faq-portlet Samir Joshi 2002-07-14 *
dotlrn-forums Mohan Pakkurti ? ? *
forums-portlet Mohan Pakkurti ? ? *
dotlrn-fs *
fs-portlet *
dotlrn-news Samir Joshi 2002-07-10 *
news-portlet Samir Joshi 2002-07-10 *
dotlrn-static
static-portlet
dotlrn-bm
bm-portlet
dotlrn-syllabus
dotlrn-research

For each applet, you will notice there are two packages: dotlrn-packagename, and packagename-portlet. Both need to be ported, and the dotlrn-* packages depend on the *-portlet packages.

If you notice something broken in the core, send me an email or post here. To Mohan and Samir (and anyone else who decides they want to port stuff), just send me tarballs of your sql/postgres directories as the datamodels start loading.

If anyone else wants to work on something, be sure to email me first so we don't up with two people working on the same thing.

Collapse
Posted by Dan Chak on
Just a note for portlet porters:

I overloaded the portal_datasource__new function in new-portal to make it easier to port to postgres.  The first function call in every *-portlet-create.sql file uses this function with most parameters left out.  To avoid having to specify all the default parameters, be sure to do another update of your new-portal/sql/postgresql directory and reload the new-portal datamodel.

-dan

Collapse
Posted by Dan Chak on
Hello all,

The porting is moving along quite well.  With the help of Samir, Adarsh, and Mohan, most datamodels are ported.  I am still working out some of the bugs in the core queries, but many dotlrn pages are loading now.  Update all your packages, reinstall, and play around with dotlrn (but don't expect *too* much just yet 😊.

Hopefully by Monday all core queries will be working and we can move on to the portlets.  Have a great weekend!

The dotLRN core is fully ported now.  There are lots of new/changed files, so cvs update again, and try it out!  When you find bugs, please post here.

Also, take a look at the updated dotLRN installation instructions.  There are a couple of additional things you need to do as of late last week.

Collapse
22: Installation Tip (response to 1)
Posted by Dan Chak on
Since only the dotLRN core is fully ported right now, you want to be sure that that is all you install over the basic OACS install with the package manager if things are to work properly.

So when in the APM, you should uncheck all *-portlet packages, and all dotLRN packages EXCEPT: dotlrn, dotlrn-portlet, and dotlrn-applet.

If you do that, all should go well, and you should get the plus sign (+) next to dotLRN after you mount it in the site-map and restart your server.

--dan

Collapse
Posted by Dan Chak on
dotLRN+applets is ported to postgres.  Whew!  Again, thank you's to Mohan and Samir for their help in the porting process.  Everyone please download, install, test, and post.

Note for now though, that bm-portlet, dotlrn-bm, and dotlrn-research should not be installed (the bm stuff will be installable soon -- there is some dependency issue that I have not figured out yet..).  For now just uncheck these when installing with the APM.

There are definitely still many bugs.  I just did a grep and found 39 connect by's that are yet to be ported (most are not dotLRN specific, actually).  I'll keep everyone posted on the progress; we are *really* close now.

I just did a fresh openacs+dotlrn install. When I restarted after mounting dotLRN I didn't get the (+) next to it in the site-map. The error log contains:

[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: dbinit: sql(localhost::janine): 'create function __exec_1_rename_folder () returns varchar as '
                 
            begin
                select content_folder__rename(
                    ''5623'',
                    null,
                    ''User''''s Folders'',
                    null
                );
            end;
        
                      ' language 'plpgsql''
[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: Querying 'select __exec_1_rename_folder ();'
NOTICE:  Error occurred while executing PL/pgSQL function __exec_1_rename_folder
NOTICE:  line 3 at SQL statement
[22/Jul/2002:10:42:32][4001.1024][-main-] Error: Ns_PgExec: result status: 7 message: ERROR:  SELECT query has no destination for result data.
        If you want to discard the results, use PERFORM instead.

[22/Jul/2002:10:42:32][4001.1024][-main-] Error: dbinit: error(localhost::janine,ERROR:  SELECT query has no destination for result data.
        If you want to discard the results, use PERFORM instead.
): 'select __exec_1_rename_folder ()'
[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: Querying 'drop function __exec_1_rename_folder ();'
NOTICE:  current transaction is aborted, queries ignored until end of transaction block
[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: dbinit: sql(localhost::janine): 'drop function __exec_1_rename_folder ()'
[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: Querying 'abort transaction;'
[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: Ns_PgExec: Rolling back transaction
[22/Jul/2002:10:42:32][4001.1024][-main-] Notice: dbinit: sql(localhost::janine): 'abort transaction'
[22/Jul/2002:10:42:32][4001.1024][-main-] Error: Error sourcing /export/staging/janine/packages/dotlrn/tcl/dotlrn-init.tcl:
Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")
    while executing
"ns_db 0or1row $db "select $function_name ()""
    invoked from within
"db_exec_plpgsql $db $full_statement_name $sql  $statement_name"
    invoked from within
"if {[regexp -nocase -- {^s*select} $test_sql match]} {
            db_qd_log Debug "PLPGSQL: bypassed anon function"
            set selection [db_ex..."
    ("uplevel" body line 6)

etc, etc.

I don't have time to fix it right now, but wanted to let you guys know about it.

Dan, thanks for the regular and timely updates on this thread.

What's your current sense of how close the port is to being production-ready?

Collapse
Posted by Dan Chak on
Hey all,

The postgres port should be fairly usable right now.  There are some bugs left.  We know about some -- particularly, uploading files does not work (I am looking at this right now) and forums permissions are a bit screwey (viewing forums does not work unless you are the sitewide admin).

Please play around with it and let us know about other bugs you find.  Doing an update every day is a pretty good idea right now.  We're working pretty hard to squash the few remaining bugs.

Collapse
Posted by Dan Chak on
Well, here's more good news -- file uploading on PG works now.  Updates are in the acs-kernel and file-storage packages.
Collapse
Posted by Dan Chak on
Just fixed a bug in dotLRN-pg that gave a server error when trying to drop membership from a community.

The error is a typo in the sql datamodel that gets loaded at package installation, so simply updating updating from cvs won't do the trick unless you reload the entire db.  To avoid having to do that, type this in plsql:

update acs_object_types set id_column='rel_id' where id_column='red_id';