March 31, 2007

How to use Sakai to QA a new Release of Pluto

Simple - Check out Sakai - check out /svn/portlet - checkout /contrib/portlets (yes - one is singular and one is plural - sorry).

Start with fresh Tomcat.

Compile everything - "maven sakai" or "maven bld dpl" depending on your fun. This compiles with the old jars - but is necessary to get everything downloaded to your maven repo.

Go into tomcat/shared and do "find . -name '*pluto*'" - blast everything - these should be the previous verison of Pluto - there should be four of them.

Edit master/project.properties and increment the version of Pluto

Go into ~/.maven/repository/org.apache.pluto/jars and wack all the files

Based on the URL in the message on the pluto-dev list, use CURL to pull down the most recent jars. You need four of them.

curl -O http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-container/1.1.3/pluto-container-1.1.3.jar

curl -O http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-descriptor-api/1.1.3/pluto-descriptor-api-1.1.3.jar

curl -O http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-descriptor-impl/1.1.3/pluto-descriptor-impl-1.1.3.jar

curl -O http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-taglib/1.1.3/pluto-taglib-1.1.3.jar

Go into ~/dev/sakai/portal

maven -o bld dpl

This makes sure you don't pull the old jars back down.

Just for fun and to keep your mind at ease - go to tomcat/shared

find . -name '*pluto*'

There should be four files with the *new* version.

Start Tomcat - tail the log like any good hacker (or if you are cool use the debugger).

Make a site - add the "Test Portlet - Sakai Test Portlet (JSR-168)" to your site - it is the one near the bottom.

Click around - test everything - watch the log. It is normally quite chatty - so you are watching for failures.

Posted by csev at 07:25 PM

March 26, 2007

Note to Self

Auto install the plugin in the master project.xml - then maven bld dpl will work everywhere.

This way - people the world over will never ever have to type this command again:

maven plugin:download -DgroupId=sakaiproject -DartifactId=sakai -Dversion=2.2

Posted by csev at 04:14 PM

March 25, 2007

Progress on the Garage 2.0

Well my garage rewiring task is completed. This was a critical pre-requisite to insulating and finishing my garage. I had the following requirements for Garage 2.0:

- An external permanently mounted photocell for 110V

- A set of outlets inside and outside that had always-on and switched on at night plug. This would be used for Holiday lighting and landscape lighting.

- A night light in the garage controlled by the outside photocell.

- Switch my carriage lights to being controlled by the master photocell rather than a switch so the carriage lights come on with the landscape lights and holiday lights.

- Add a switched flood light on the eves covering the front yard and driveway

- Move me landscape light transformer into the garage - again controlled by the master photocell.

Overall, the ideal also was to put in enough boxes that someone could re-configure which lights did which for a new owner of the house. For example, if they wanted the carriage lights to be switched again - it should be possible - if they want to switch the flood to be motion sensitive - it should be possible.

So there were extra runs of 14-3 and extra junction boxes to allow for re-configuration of where the hot, switched hot, and photocell hot were made available for easy reconfiguration.

It all went well. I am happy how it turned out. It took longer than I thought because my wiring design skills were a bit rusty. I made 9 trips to Menards and took back as much stuff as I bought. I found that I had to design iteratively - one wire run/junction box at a time.

But it worked out well.

Next steps are to insulate and drywall the garage - that will be a multi-person job and I will probably enlist my brother Scott in the effort.

After that it is on to Basement 2.0 - that will entail plumbing electricity, walls, - a bathroom, the whole shebang. But it will be fun and the last major fixup of the house.

Posted by csev at 10:44 AM

JSR-168 Portlet for IMSTI

I have started building the JSR-168 IMSTI portlet. The first challenge was getting a file uploaded in through JSR-168. I was nervous because I had never tested it in the Sakai JSR-168 and the first google searches of "JSR-168 portlet file upload" seemed to indicate problems and kept talking about Apache commons, etc - all stuff that felt rather non-portable.

The solution was found here:

http://mail-archives.apache.org/mod_mbox/portals-pluto-dev/200501.mbox/%3C41F67158.3080809@TheJavaThinkTank.org%3E

I will soon check this into SVN in contrib. On to the next thing - parsing the IMS TI descriptor with some code tha Anthony wrote.

Posted by csev at 10:32 AM

March 20, 2007

Chuck Has Resigned as Executive Director of the Sakai Foundation

I have resigned from the Sakai Foundation Executive Director position effective June 1. I have attached my resignation letter at the end of the blog post.

In the past four years, it has been an absolute privilege to be the Chief Architect of the Sakai Project and then the Executive Director of the Sakai Foundation. This has been the dream job for me - for my whole career I just wanted to be part of something that has broad impact. I have truly enjoyed meeting all of you and working with you. We have explored Community Source together and found a way to develop software together with a team assembled from people around the world.

The University of Michigan has offered me a position where I can continue to be involved in the Sakai Community going forward and allow me to focus on technical aspects of Sakai. My travel budget will likely be much lower - so I will probably not come to as many of your offices as I have done in the past - and my photo blog will be more boring :)

Like most of my life, a partial explanation can be found by carefully reading some PowerPoint I wrote :).  Back in December 2004 at a meeting in Phoenix Arizona, I gave a talk that puts my interests in Sakai in a very personal perspective:

  http://www.dr-chuck.com/talks.php?id=38

This presentation tells about my life and career for the past decade and how I very badly wanted to be at the leading edge of innovation around teaching and learning - When this all started - I just wanted to be a teacher who could hack on my own fun solutions and have an LMS that would let me write a rich building block - see slides 9-15. You will see that for the last decade *every* single job change I made consistently allowed me to move to where the innovation is happening.

Interestingly in Slide 17 - 19 from 2004 - I point out where I think things should go - Content Management and Tool Interoperability

So now, with that trip down memory lane complete - my goals for the future are to get to the "3.0" place in Slide 17 - and I want to be part of the technical team that is actively building the solution.

For me the next few years will be some combination of these aspects:

- Continue to contribute to the core architecture of Sakai, focusing on JSR-170, Hierarchy, Bodington transition, and a move to RDF

- Continue to work on standards at the presentation layer.  I have not given up on JSR-168 (yay for JSR-168 support in Sakai 2.4) and I have not given up on WSRP (yes even 1.0) - I am going to *make* WSRP work one way or another in Sakai - and yes it will even be useful and worthy to be run in production.

- Continue to work with IMS in the area of Tool Interoperability - For me IMS Tool Interoperability is the *most important* innovation for the next five years.  IMS TI version 1.0 is a good start - but going forward I hope to have the time to invest in IMS TI 2.0 to make it truly transformative. This will require that I build and maintain a reference implementation of TI 2.0 and evolve and give feedback to the IMS process.

- I have always been interested in the research applications of Sakai - given my involvement in the NEESGrid project for many years - I would like to focus my energy on making Sakai really work well in research environments - I wrote an NSF grant called "Sakai Research Edition"  talking about this a while back that some of you may have seen.

  http://www-personal.umich.edu/~csev/papers/2007/2007_01_ci_summary.doc

- I also hope to do some teaching - I hope to teach both beginning programming and advanced programming - and of course - you guessed it - I want to teach project-style courses where all the students write in Sakai! And of course - I want to use Sakai to teach.

- I also will continue to be interested in moving Sakai towards Web 2.0 where it becomes a flexible set of services that can be used in portals, personal learning environments, and other mash-up technologies.

- I hope to write one or more books about Sakai If time permits - I hope to write a book about community source processes and then some technical books about Sakai - I have consciously scheduled some programmer and end-user tutorial sessions for me to teach over the next few months to force myself to produce training materials which can lead to a book or two. Then I can write the book for the class I teach (something I did a long time ago - http://www.oreilly.com/catalog/hpc2/).

- I also hope to do some consulting around Sakai - I have seen lots of neat uses of Sakai and at times felt bad when I could not stick around to "help" as I was jetting off to the next visit. With a more open schedule I can be more deeply involved in a few selected projects working with Sakai.

I leave the Sakai Foundation in excellent hands - the team of Megan, Mary, Anthony, Mark, and Peter have done an outstanding job on the past few releases. We have pretty well established processes and practices. The Sakai software and community are also very strong and I am very proud of how far we have all come in three short years.

http://www.ohloh.net/projects/3551
http://www.ohloh.net/projects/4006

On a personal note, I might actually take weekends off for a few months. After four years of working almost seven days per week, I am way behind on little construction projects around the house and am way behind on my camping, off road motorcycling and ATV riding.

http://www.dr-chuck.com/images/2006/08/index.php?img=12-08-06_155318_01.jpg
http://www.dr-chuck.com/images/2007/03/index.php?img=18-03-07_142526_01.jpg

So you can see that I will be busy and involved in Sakai going forward.   So much to do and so little time....

/Chuck

-------------------

I hereby resign my position as Executive Director of the Sakai Foundation effective June 1, 2007.

I want to thank the Sakai Foundation Board for the opportunity to lead this historic effort. Not only have we built a world-class collaboration and learning environment serving over a million users around the world, we have also demonstrated for the world a new model for software development – community source.

I have already discussed my future options and am pleased that the University of Michigan has a position for me that will allow me to continue my involvement in the Sakai community.

As I make this transition from Foundation employee to community member, I will of course assist the Board in transition issues, and in any other ways that advance the Sakai mission.

-------------------

 

Posted by csev at 07:12 AM

March 19, 2007

I am disappointed with Google SMS and Amazed by Comcast Digital Cable

I *never* ever thought I would ever write a blog with this title. This weekend I wanted to track the NCAA Basketball and NIT Basketball tounaments while I was attending the CCHA hockey tournament - so I turned to trusty Google SMS (46645) and started typing in things like "NIT", Wolverines, etc and I got nothing back except a stupid message about what Google SMS does. I tried NCAAB - one of its suggestions - and still nothing but a blank stare.

I wonder what happenned - I used to think Google SMS was the bomb - it was as if a bunch of people were there ready with the answer in 4 seconds. But now it cannot even seem to get the simplest thing right. I have given up on it.

On the same weekend - I installed Comcast Digital cable - the box that costs me $1.00 per month. This is AWSOME - it has so much free stuff - on-demand old movies and on-demand old TV shows and HD radio are probably the best - but things like Karaoke, extended previews and PPV are cool as well. I wasted hours this weekend exploring.

All this for only $1.00 - dang! This will save me a bunch at he video store. I got two of the boxes and probably need to get three more (at least).

Technical note: My only gotcha was that I had one TV behind too many splitters - the signal was not too great - the digital box would not sync up until I dropped back to a single splitter. So if your TV signal is snowy - fix that before trying to go digitial. Luckily I was doing two boxes at the same time and the second one worked perfectly on the basement TV - so I swapped the boxes - the box still worked downstairs but not upstairs. So it had to be the wiring - dropping down a Splitter solved the problem.

Posted by csev at 12:35 PM

Sunsetting a Sakai Tool like Chat

There is a disucsison about sunsetting the Chat tool and replacing it with a new JSF/Hibernate Chat Tool.

This is an important discussion as the sunsetting of a tool is as important a process as the bringing up of a new tool.

Here are my thoughts.

I do not like the wholesale replacement of a tool - particularly when there is persistence involved and no database conversion is provided.

Like David I am sure many will immediately use the new chat - but for folks who want to keep things simple, it would be nice to have the *option* to keep the old chat.

Just as an example - while the old chat has demonstrated issues under load - it has years of solid production experience - the new chat was checked in for the first time last week and while it claims to have solved these problems - it might have introduced more problems. Of course QA will likely reveal functional problems - but it would be nice not to have to scramble if some problem is found and have the old chat available to folks at least for one release.

To me this is like Discussion and message center - while Message Center is all shiny and new and Discussion is old and crufty - a surprising number of folks prefer the old and crufty tool.

I think that we should put both chat tools in the release. We could let the new chat tool "take over" the tool id for chat and change the old chat to some thing like sakai.chat1 in its too registration - this way folks get the new chat by default - if they want the old chat wholesale - patch the tool registrations. If they want the old chat on a case by case basis - then they place the chat1 tool.

I just don't like working code disappearing with zero notice. In a way the removal of code should be done in as considered a manner as adding code. We need a way to make these transitions while allowing folks to make choices in their deployment.

I can see us facing this increasingly in the future as folks start rewriting tools - perhaps in a move to JSF or RSF - so we will need a way to do this in a controlled manner - lets do this one "right" and "clean" so that we establish a precedent for when we do something much more complex like "replace the resources tool" in the future.

Posted by csev at 08:47 AM

March 17, 2007

iTerm on Mac's

I was sitting in Marcus Christie's office Wednesday and saw him use this new cool terminal program - tabbed terminal program - called iTerm - I made a mental note to figure out where to get the software.

Then Friday my pal Paul Hubbard posts a blog post and sends me a note about it:

http://www.phfactor.net/wp/2007/03/16/iterm-and-distraction-free-computing/

FYI,
Paul

Now I have it and it is installed. The only key is that Command-T opens a new tab.

This will help me a lot because no I can have *ALL* my windows full size - I normally run with about six terminal windows (vi, find, and grep are my IDE).

The problem is that tiny fonts make one's eyes get weaker. So now I will experiment with iTerm full screen with large font - should be nice.

Posted by csev at 09:09 AM

March 15, 2007

On the Eve of Sakai 2.4 Code Freeze...

Today is the nominal day for code freeze for Sakai 2.4 - of course Sakai 2.4 is the major release for Sakai for 2007. For me I have been a bit more technical the last few months in my push to get JSR-168 and many other portal features into Sakai.

Code freeze is good because it focuses one - but I have been letting my non-technical duties slip a bit the last six weeks. Particularly my inbox which has balooned to 920 unprocessed messages. Aargh. But the fact that the portal is in good shape thinks to Ian Boston and David Dewolf - I can get back to answering all the mail and putting "sorry it took so long to respond" in front of each message..

I think it will be worth it - 2.4 will be with us for a long time as with all of the other Sakai June releases - so we might as well make it as awsome as possible.

:)

Posted by csev at 10:02 AM

JSR-168 Edit and Help Mode

Did some QA of the Sakai JSR-168 portlet support with Marcus Chirstie and Marlon Pierce of Indiana Unviersity. Found a bug and decided that we needed Help and Edit mode support. Off goes two solid hacking days :)

But code yeilds eventually and I just committed the stuff. Interestingly - this makes my todo list for 168 realy short - and just in time for code freeze.

To test, do this

check out a copy of sakai

The also check out the portlets into the source directory:

svn co https://source.sakaiproject.org/svn//portlet/trunk/ portlet

and them compile it .

The Sakai Test Portlet shows up in the site list.

TODO:

Re-Enable Sakai API support in portlets when Pluto 1.1.2 is released
Why to we register too many times?
reference/docs/architecture - Update
Fix going to a URL before we are logged in...
Fix look and feel of edit button

DONE

JSR-168 Edit and Help Mode - 22653
Why do we doView more than once? - 22583
Re-enable userInfo capabilities once Pluto 1.1.1 is released
Sakai APIs fully functional in Portlets - done - but commented out - 22164
JSR-168 Preferences - permanently persist in Tool Placement - 22128
PDA - Rename - Done 22111
Test Portlet - Done
Test CSS - Done
Reset - Fixed
PDA Presence - Fixed

My cool SVN statement - merged a branch all by myself!
svn merge -r 21991:HEAD https://source.sakaiproject.org/svn//portal/branches/experimental_portal_branch/

Posted by csev at 01:59 AM

March 11, 2007

Neat Article on Commercializing Open Source

I ran into a old friend in Best Buy last week and he told me to look at this article - it took me a while to find it - so here it is - it was in Time Magazine February 26, 2007 - Page 51.

Here is a quote:

Clever entrepreneurs and even established companies can profit from this volunteerism--but only if they don't get too greedy. The key, Benkler says, is "managing the marriage of money and nonmoney without making nonmoney feel like a sucker."

Here is a URL:

http://www.time.com/time/magazine/article/0,9171,1590440-2,00.html

Posted by csev at 11:12 AM

Working Towards Pluto 1.1.1 intrunk

Mostly geek-notes

http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-container/1.1.1/pluto-container-1.1.1.jar

http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-descriptor-api/1.1.1/pluto-descriptor-api-1.1.1.jar

http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-descriptor-impl/1.1.1/pluto-descriptor-impl-1.1.1.jar

http://people.apache.org/builds/portals-pluto/m2-staging-repository/org/apache/pluto/pluto-taglib/1.1.1/pluto-taglib-1.1.1.jar

portal-render-impl/impl/project.xml

pluto-container

portal-render-impl/pack/project.xml

pluto-container
pluto-descriptor-api
pluto-descriptor-impl
pluto-taglib

portal-service-impl/impl/project.xml

pluto-container
pluto-descriptor-api

Posted by csev at 10:30 AM

March 03, 2007

JSR-168 Progress

Fixed my last Blocker level issue and improved my JSR-168 test portlet.

Add support for a real preferences store for JSR-168 portlets. The store is in
the Tool Placement, properties are prefixed with javax.portlet: and are URLEncoded.

Sometimes JSR-168 preferences are arrays - these are represented in Sakai
preferences as strings concatenated together with "!" - since the individual
bits are URLEncoded - there will be no "!" characters in the strings.

charles-severances-computer:~/dev/sakai/portal csev$ svn commit
Sending portal-render-impl/impl/src/java/org/sakaiproject/portal/render/portlet/services/SakaiOptionalPortletContainerServices.java
Transmitting file data .
Committed revision 22128.
charles-severances-computer:~/

The rest of this is just my current notes on 168 progress.

TODO:

Why to we register too many times?
Why do we doView more than once?
reference/docs/architecture - Update
Re-enable userInfo capabilities once Pluto 1.1.1 is released of we put it into the Sakai repo.

Nice to have
JSR-168 Edit Mode
JSR-168 Help Mode
Sakai APIs fully functional in Portlets

DONE

JSR-168 Preferences - permanently persist in Tool Placement - 22128
PDA - Rename - Done 22111
Test Portlet - Done
Test CSS - Done
Reset - Fixed
PDA Presence - Fixed

My cool SVN statement - merged a branch all by myself!
svn merge -r 21991:HEAD https://source.sakaiproject.org/svn//portal/branches/experimental_portal_branch/

Posted by csev at 08:52 PM

March 02, 2007

Compiling JSR-168

Instructions are really simple now:

svn co https://source.sakaiproject.org/svn//sakai/trunk/ sakai

cd sakai

svn co https://source.sakaiproject.org/svn//portlet/trunk/ portlet

maven bld dpl

Start tomcat. The portlets will simply show up as tools - you may want this in your sakai.properties:

webservices.allowlogin=true
webservice.portalsecret=plug-xyzzy

webservice.portalIP=127.0.0.1
webservice.IPCheck=true

Posted by csev at 08:01 PM

JSR-168 Branch Merge - Fix Reset etc.

I made some progress here is the status for JSR-168. Pretty much all the big stuff is done (Broken reset was the last "blocker"). Here is status:

TODO:

Why to we register too many times?

Why do we doView more than once?

reference/docs/architecture - Update

JSR-168 Preferences - permanently persist in Tool Placement

Re-enable userInfo capabilities once Pluto 1.1.1 is released of we put it into the Sakai repo.

Nice to have
JSR-168 Edit Mode
JSR-168 Help Mode

DONE

PDA - Rename - Done 22111
Test Portlet - Done
Test CSS - Done
Reset - Fixed
PDA Presence - Fixed

My cool SVN statement - merged a branch all by myself!
svn merge -r 21991:HEAD https://source.sakaiproject.org/svn//portal/branches/experimental_portal_branch/

The rest of this is just notes form my desktop.

charles-severances-computer:~/dev/sakai/portal csev$ svn commit
Sending portal-impl/impl/src/java/org/sakaiproject/portal/charon/SkinnableCharonPortal.java
Sending portal-render-impl/impl/src/java/org/sakaiproject/portal/render/portlet/PortletToolRenderService.java
Transmitting file data ..
Committed revision 22107.
charles-severances-computer:~/dev/sakai/portal csev$

org.sakaiproject.portal.service.PortletTool

charles-severances-computer:~/dev/sakai/portal csev$ vi portal-service-impl/impl/src/java/org/sakaiproject/portal/service/PortletTool.java

m_finalConfig.setProperty(PortalService.TOOL_PORTLET_CONTEXT_PATH, portlet
.getApplicationId());
m_finalConfig.setProperty(PortalService.TOOL_PORTLET_NAME, pdd.getPortletName());


http://localhost:8080/portal/site/9be11bc9-b692-4b7d-005d-0dd86027b355/page/fc5f6cce-11c6-441e-0026-b6340720900b

public class PortalServiceImpl implements PortalService
// To allow us to retain reset state across redirects
public String getResetState()
{
Session s = SessionManager.getCurrentSession();
String ss = (String) s.getAttribute("reset-stored-state");
return ss;
}

// Reset the tool state if requested
if ("true".equals(req.getParameter(portalService.getResetStateParam()))
|| "true".equals(portalService.getResetState()))

private PortalService portalService;

portalService = org.sakaiproject.portal.api.cover.PortalService.getInstance();

public boolean isPortletPlacement(Placement placement)
{
if ( placement == null ) return false;
Properties toolProps = placement.getTool().getFinalConfig();
if ( toolProps == null ) return false;
String portletContext = toolProps.getProperty(PortalService.TOOL_PORTLET_CONTEXT_PATH);
return (portletContext != null);
}

Posted by csev at 04:48 PM