Getting started with uPortal: Part 1
Slides and narrative from 04 June 2008 presentation of Getting Started with uPortal (session 1) at the Portal 2008 conference hosted by Gettysburg College.
The blog post rendition of my first Gettysburg 2008 presentation on Getting Started with uPortal
As noted in the files, these slides are here made available under the Creative Commons Attribution Non-Commercial Share-Alike license, version 3.0, United States localization. Portions of the materials have been drawn from other presentations at JASIG conferences, especially from Eric Dalquist's presentations at the Spring 2008 JASIG Conference in St. Paul, MN.
This slide deck and material is not the commercially offered, multi-day, orchestrated, typically on-site training offered by some JA-SIG Commercial Affiliates.
Introduction

Sessions concurrently running in the Wednesday morning timeslot included a session on planning for the next generation of online community, the enterprise portal marketplace for the educational community, a panel discussion on portal planning, and a showcase of an adaptive framework for organizing portal data. These sessions all sounded interesting to me, so I wasn't offended if people bailed my session to attend them, and I look forward to hearing what people thought of those sessions and to reviewing the posted materials.
This presentation set out to introduce
- What is uPortal?
- Where do I get uPortal?
- How do I start the quickstart distribution?
- How do I publish a channel?
- Where can I find out more?
The next presentation in this series of three presentations offered on Wednesday provided presention/lecture background on that web proxy channel that was published in this session and in the mechanism for logging into uPortal 3 (CAS).
The third and final presentation in this series of three presentations offered on Wednesdday provided further lecture on DLM (layout management features in uPortal) and then proceeded to demonstrate publishing a JSR-168 portlet into uPortal.
After talking through the plan for the three presentations, I introduced myself in the context of my involvement in uPortal, reminding that I am a software developer here at Unicon, have served as a uPortal release engineer (actually I'm working on release engineering for uPortal 2.6.2 in another window right now), am a uPortal project developer and committer, and serve as an elected uPortal developer representative on the uPortal project steering committee.
I tried to then articulate how these roles relate to the community around uPortal, discussing the role of the sponsoring organization, the developers, the adopting institutions, and the commercial affiliates.
JASIG as the non-profit sponsoring organization coordinating uPortal and organizing annual conferences at which uPortal is prominently featured. As of this writing JASIG has 42 institutional members alongside four commercial affiliates. JASIG as an organization coordinates around uPortal, but it isn't responsible for any direct ongoing work on uPortal.
This direct development and improvement of the uPortal open source project is the work of the committers and contributing developers (Java coders, user experience designers, web developers, et al.) on the uPortal project, who attain status and privileges through an Apache-style participatory meritocracy. Participatory meritocracy means that because Eric Dalquist works hard and does excellent work (merit), his opinion is given a lot of weight among uPortal developers and it's fair to say that right now, at this point in the uPortal project, he's most in charge (ocracy).
Many institutions have adopted uPortal, and all share back knowledge and value in some way. There are many ways to do this, ranging from asking questions on the email lists and raising issue tracker entries when some glitch is encountered, through sharing documentation, through applying development effort to create and share back enhancements, through employing core project committers and directly advancing the open source uPortal codebase.
JASIG has several commercial affiliates, all of whom have some relationship to uPortal. Some include uPortal and build upon it in proprietary products, while others offer consulting, training, and technical support services on the open source software.

uPortal is the proud winner of the 2007 EDUCAUSE Catalyst award. This recognizes the historical achievement of the uPortal project in setting the stage for the "community source" higher education collaborative open source projects that followed and continue to follow, including Sakai and Kuali.
Besides being interesting for its historical contribution to the momentum of open source collaboration in higher education, uPortal is ongoing interesting for its continued development and adoption. Over a dozen schools already report seriously investigating upgrading to the latest uPortal release (uPortal 3).
Downloading the quickstart
uPortal is available for download as a binary distribution in addition to its availability via SVN source control (e.g., here's the tag for uPortal 3.0.0).
If you download uPortal 3.0.0, for purposes of this Getting Started series it's best to get the Quick Start rather than the uPortal-only distribution. Among quick starts, it's better to grab the Developer editing, as that includes SVN metadata so that if you want to run SVN commands against it to e.g. compare it to the uPortal source repository (an activity out of scope of this Getting Started presentation), you can. As for distribution format, I recommend the tarred gzip rather than the .zip, since the tarred gzip will retain worthwhile file permissions on platforms that support that and it's less easy to mangle extracting it. The zip file extraction facility built into Windows fails to cope with file path lengths present in uPortal. (Likewise the default archive extraction in Solaris fails to cope too, even with the tarred gzip.) The zip files are totally workable if you use a zip file extractor that copes with long file paths, but to avoid accidentally using an insufficiently featured extractor on Windows, grab the "tar.gz" distribution format, which seems to be only extractable by tools capable of fully extracting it.

Besides the uPortal quickstart distribution, you'll need a suitable release of Java (JDK version 1.6 or later ("Java 6") will do and is relatively easy to acquire these days).
Included in the quickstart distribution is Apache Maven 2.0.9. Maven is a Java build and dependency management tool. As of uPortal version 3, the uPortal core project build uses it -- previously some portlets had used it. If you aren't using the quickstart, you'll need a suitable version of Maven installed separately. Apache Ant 1.6.5 is also included in the quick start distribution. Apache Ant 1.7.0 is not supported because it includes an unfortunate bug making it unsuitable. If you aren't using the quickstart, you'll need a suitable version of Ant installed separately. The quickstart also includes Apache Tomcat 5.5.23. Tomcat is a Java Servlet Container. uPortal is a Java servlets web application and is run in a servlet container. Besides Tomcat, which is included in the quickstart and is apparently by far the most common servlet container in use with uPortal, uPortal 3 has been successfully run in Glassfish and other servlet containers are in use with uPortal.
Once you've downloaded the quickstart, let's say you extract it into a directory named uP3 in the root directory of your hard disk. Here's how I navigate to the extracted directory and invoke the Ant target that starts the quickstart.

Once the quickstart starts up, Tomcat will be running at http://localhost:8080.

And here's what it looks like:

Fuzzy discussion of who is familiar with uPortal
At this point in the session I verified that people trying to follow along were on a path to success and then took a moment for fuzzy discussion of who at the Gettysburg conference is familiar with uPortal while those interested in following along had a chance to get the distribution downloaded and running in their environment. A quick review of the conference attendee roster and their self-reported portals suggested around 30 individual participants at the conference were at some level experienced with uPortal or with the Luminis product (which in in part built on uPortal). Jim Farmer, who gave the keynote address at this conference, had once been the uPortal project administrator. So, there were many people at this conference with whom to discuss uPortal.
Beyond the attendees of this conference, there are many deployers of uPortal. There's a table of a few deployments with more detailed information in the wiki as well as a less detailed listing of uPortal deployments on the website.
What's a portal, anyway?
Why have all these people deployed uPortal? People use uPortal for the different purposes of a portal:
- a dashboard summarizing and aggregating indicators, offering links into those systems or views of the system’s data.
- a service delivery platform - a compelling container standardizing common services for small widgets – authentication, authorization, personalization, customization, branding, provisioning, hosting – and thereby driving down the cost of delivering individual widgets.
- a personalized web experience, tailoring the content selection and experience based on what is known about the user.
- a customized environment wherein end users can express personal preferences and custom-tailor their web experience.
Dashboards
uPortal is strong at building dashboards, aggregating together summary information. This ranges from built-in support for simple channel types like SQL queries and XML transformed using XSLT through the proof-of-concept of more visual graphs of data in the portal offered by the UnConference Feedback Portlet developed largely at the JASIG UnConference hosted at Rutgers University.
Service Delivery Platform
uPortal is strong as a platform for centralizing implementation of common services or small applications, with its framework support for authentication, authorization, personalization, customization, branding, provisioning, and the portal as a place to host portlets. This can allow you to drive down the marginal cost of offering additional self-service applications, e.g. Rutgers University has proved out implementing service delivery via uPortal, often making use of web proxy channels into externally hosted small applications designed for inclusion in the portal.
Personalized Web Experience
uPortal's user attribute collection capabilities (drawing from LDAP and JDBC sources, with an extension point for adding additional local sources of attributes) and its capabilities for leveraging those user attributes in defining groups and then targeting permissions and content to those groups make it compelling platform for implementing a personalized campus web experience, with better suggestion and highlighting of the campus web applications and content most likely to be valuable to the present user.
Personalization is when the portal makes the experience personal based on what is known about the user (user attributes, group memberships).
Customized web experience
While in personalization the portal applies personal sensible defaults based on what is known about the user, uPortal also affords facilities for end-user customization. The individual user can customize his or her own experience, choosing a skin, setting portlet preferences, defining layout, subscribing to available channels and portlets.
Channels and Portlets
In uPortal, dynamic content is primarily presented in little boxes called "channels". These channels can be and often are implemented as JSR-168 portlets, but even when they are "portlets", they still have "channelness" layered on in terms of the metadata about their categorization for subscription, the permissioning of who is allowed to subscribe to them, the configuration of custom publishing workflows, etc.
(They don't have to be in boxes. You could have a theme and skin that's less boxy.)

By default uPortal includes an administrative user "admin" who is privileged to publish channels. Channel management is a permission managed like other permissions in uPortal and can be delegated to other users and groups.
You can log into an unmodified uPortal 3 quickstart by clicking the big orange login button.

Clicking the big orange button directs you to the login form of the CAS server that ships with uPortal. By default the "admin" user has the super-secret password "admin". (This secret is divulged on the front page of the portal before login and should of course be changed before you put your uPortal instance into production.)

Once you've logged in as admin / admin , CAS will redirect you to uPortal. Since the admin user is privileged to administer channels, there will be a link to enter channel administration at the upper right.

If you choose to create a new channel, the next screen in a menu of the types of channels/portlets that can be published.

The “out-of-the-box” implementation of uPortal provides publishing workflows for several specific types of channels, including
- Custom Channels
- Image Channels
- Inline Frame Channels
- JSR-168 Portlets
- RSS Channels
- Web Proxy Channels
- XML/SSL Channels
- XML/XSLT Channels
(The slide deck walks through some specific channel types in more detail here, providing examples. See also this article on channel types.)
Channel publishing example: Web proxy of Portal 2008 conference site
As an example of publishing a channel, I published a web proxy of the Portal 2008 conference website.
So I selected the Web Proxy channel type.

And I filled in some basic configuration necessary for all channels.
Channels need titles and names. These are used for labeling the channel in the end user preferences UI for navigating and selecting available content (e.g., for subscription into the layout) and for labeling the boxes on the screen when they are rendered. Channels need "functional names". These are human-readable identifiers used for e.g. deep linking to a particular channel. Channels need descriptions for providing optional additional information in the subscription UI to help users to decide which channels they'd like to subscribe and to provide more input to the search over available channels. Channels need timeouts to define how long the portal will allow the underlying code to generate the content for the channel before the framework gives up on a particularly sluggish component and replaces it with an apology for the channel being unavailable.

Beyond the basic channel configuration is configuration specific to channels that are web proxy channels. Web proxy channels are configured with such things as the URL of the web page or application to be proxied (here, https://biz.gettysburg.edu/it/portal08/program.html ), whether the markup should be cleaned up as regards well-formed-ness before transformation, and how to handle hyperlinks in the proxied application. There are several other interesting parameters in configuring web proxy channels.

There are additional web proxy specific configuration parameters that are important for securing web proxy instances. These amount to configuring the scope of the web that should be proxiable through the channel instance. This scope should be as tight as possible while still being able to get the job done. This avoids implementing a wide-open illicit proxy defeating topological restrictions.

Next in the workflow a channel publisher defines which channel controls should be available. Channel controls are the buttons that can appear in the channel title bar. (Where and how these are displayed is determined by the theme transform, which is a replaceable component of uPortal.)

I finalize the channel publication process by selecting categories (so the channel is discoverable when they look to add content to their own layouts) and by select groups (so the portal knows which users are permitted to use the channel). There's a final step for reviewing the channel publication and then the channel is published.
This results in a web proxy of the Gettysburg Portal 2008 conference page in uPortal. This is not merely an inline frame -- here the portal has retrieved the conference page on behalf of the user and has included it in the portal markup.

Structure of uPortal
uPortal is free and open source software under a New BSD License. It is a Java web application that runs in a servlet container and depends upon and RDBMS. The quick start ships with an in-memory filesystem-backed HSQLDB which is useful for simple demonstrations but is not appropriate for production use. In production deployers tend to use Postgres or Oracle, with a few deployments on Microsoft SQL Server and MySQL.

uPortal 3 follows relatively standard Maven 2 project structure, which looks like this:
- src/main/java
- Application/Library sources
- src/main/resources
- Application/Library resources
- src/main/webapp
- Web application sources
- src/test/java
- Test sources
- src/test/resources
- Test resources
uPortal 3 consists of several sub-projects of that structure. The projects include:
- uportal-impl
- Source code & resources
- uportal-war
- Web content & configuration
- uportal-portlets
- Bundled portlet overlays
- uportal-ear
- The full package
- uportal-ear-deployer
- Tomcat deploy tool
- uportal-ant-tasks
- Ant deployer tasks
The most plausible places to find things you're looking for in the uPortal project structure are:
- uportal-impl src/main/java for all uPortal source code
- uportal-impl src/main/resources for all non-UI classpath resources (config)
- uportal-war src/main/resources for UI classpath resources
- uportal-war src/main/webapp for web application configuration files, images, CSS, and javascript
The build system uses Maven 2 at the core for dependency management, compiling, testing, packaging, and war overlays. In front of Maven uPortal uses Ant to implement utilities for deployment, uPortal-specific tooling, database setup, user management, and import-export command line tooling.
Where to learn more
Fluid
At this point in the presentation I couldn't resist mentioning Fluid. Fluid is a Mellon-funded higher education project to develop more usable, accessible user interface components and improve user experience and usability in uPortal, Sakai, and other projects.

Fluid just released version 0.3 of its packaged user interface components: “Infusion”.
Besides that versioned distribution, Fluid has developed and hosts some other resources useful in usability testing and user experience design for software for higher education, including personas, a usability toolkit, rich documentation resources, and instances of contextual inquiry applied to higher education IT scenarios.
uPortal
The uPortal project hosts friendly email lists for adopters of the uPortal platform as well as for discussion of further developing the uPortal framework project itself. People exploring the uPortal 3 version specifically are listing themselves on a wiki page for discovering one another. Finally, there's a wiki-implemented manual for uPortal 3 under continued development.
I ended this session by taking questions and reminding of what was to come in the next two sessions.

| Attachment | Size |
|---|---|
| gettysburg_08_getting_started_uportal_one.ppt | 3.07 MB |
- Andrew Petro's blog
- Login or register to post comments
