uPortal 4.2.0 Milestone 1

uPortal 4.2.0 Milestone 1 release

Big picture

uPortal 4.2.0-M1 is uPortal 4.1 but Better.

It's got a better Marketplace that's much more attractive and closer to feature-complete (possibly even usable by real users!)

It's got better JSON APIs and other APIs for building upon.

It includes better portlets and dependency versions.

It provides better tools and a bit better supportability through better error handling and better logging.

See also

Changelog

Unpacking 4.2.0-M1

4.2.0-M1 is a milestone release of a minor version under uPortal's current (not Semantic Versioning) versioning scheme.

Minor release

Under uPortal's current versioning strategy, a minor release (4.2.0) accepts inflicting some upgrade pain in exchange for achieving progress.

In practice this means that APIs are allowed to change.

In the specific case of uPortal 4.1 to 4.2, upgrade pain is expected to be very modest -- not much changed that's going to wreck your day on an upgrade.

Milestone release

A milestone release (-M1) is not a general-audience release. It's not even a Release Candidate. It's just a milestone, a commit along the way picked out for running the release process so that it's more conveniently available for trying out (hello, quickstart!), so that it's a shared reference point to talk about, and to try on the idea of cutting a real release without yet making that commitment.

Opinion: It's time to cut a release.

There's enough here. It's time to cut a Release Candidate, take master to bugfix-only mode, and iterate through Release Candidates until it looks good enough to cut a real general audience release of uPortal 4.2.0, which would be pretty darn quick.

Mop up for GA release

In my opinion, here's what ought to be fixed between where we're at now and uPortal 4.2.0 GA release:

Thanks

These developers have contributed commits to uPortal master since uPortal 4.1.0 was released (and so have commits included in this milestone release).

Details of what's in 4.2 (so far)

Better APIs

Perhaps what's most important about a platform and what most needs versioning in its releases are its APIs. uPortal 4.2 ships better APIs.

Better JSON APIs

uPortal 4.2 improves the JSON APIs to

Better Java APIs

uPortal 4.2 introduces branching in the rendering pipeline. This has proven useful at UW-Madison to enable selective innovation in how not-focused-on-just-one-portlet requests are handled and has seemed promising for enabling further innovation in the Respondr theme.

uPortal 4.2 cleans up IPerson, an API central to much of uPortal's guts. This helps set the stage for continuing to hone uPortal's person and security APIs in future releases.

Better SQL Query Portlet

One simple way of including content in your uPortal is by embedding SQL queries. The portlet implementing this now supports caching and Spring Expression Language expressions.

Better Launching

Another simple way of including content in your uPortal is not to include that content in your uPortal and instead simply link to it as implemented elsewhere. Portal as gateway, starting point, directory, app launcher even. The new App Launcher template makes including these sorts of integrations quick, easy, and even fun. And free as in free coffee.

There's even new suppport for a six-column layout in case you'd like to display a bunch of these app launchers all in a row.

Better person directory configuration

One of the most common configuration and integration points in uPortal is the component called "Person Directory", the sub-system for gathering user attributes from various directories and sources. uPortal 4.2 adds a Groovy plugin for this system so you can script this attribute gathering using Groovy. You might need that.

Or maybe you nailed your user attribute gathering and wrangling problems at your identity management middleware layer. If you like the user attributes coming from CAS, well, in uPortal 4.2 you can now rely upon those.

Tin Can?

There's some kind of Tin Can API stuff in uPortal 4.2.

Better Marketplace

Marketplace shipped in uPortal 4.1 as a half-baked neat concept that wasn't feature-complete. This was unfortunate, and happened because MyUW started down a path of implementing this functionality as a Portlet and contributed in-flight code into uPortal master, but then ended up going a different direction for the MyUW Marketplace implementation.

Marketplace has been greatly improved and filled in for uPortal 4.2, so even if you're not ready to take the AngularJS-front-backed-by-JSON-web-services plunge, you too can enjoy a better user experience for discovering and launching portal functionality.

Performance should be better with client-side rather than server-side screenshot validation caching and even pre-fetching marketplace content on login.

The Marketplace portlet now properly filters related portlets to only those on which the user enjoys BROWSE permission, better fulfilling the intent of BROWSE permission as the permission one must have on a portlet to be able to, well, browse it in the Marketplace.

Guest users are no longer taunted with invitations to rate a portlet or add it to one's favorites, since those features are only for logged in users.

Behind the scenes, Marketplace entries can now have keywords, though this isn't yet reflected in the UI. Marketplace also enjoyed some basic code cleanup.

Better Search

Search is a really important platform feature and it gets a bit better in uPortal 4.2.

The pervasive search box now supports auto-suggest.

Simple content portlets can participate in uPortal search reflecting their dynamic content rather than just their portlet description. That's really cool. However, the title of the search entry was always something silly like "advanced-cms" instead of the title of the actual portlet. That wasn't very cool at all. That's now fixed.

Better tools

uPortal is in part a construction set for building your local portal implementation. Construction sets are better with better tools. The tools get a bit better in uPortal 4.2.

Better portlet manager

The portlet manager UI in uPortal 4.2 is spiffier.

There are tool tips to help disambiguate portlet title from name and to provide some context on the other basic portlet metadata. This is supported by updates to channelDefinition.dtd documentation.

Portlet preference administration is now roomier.

Maintenance Lifecycle State

Portlets can now be placed into a Maintenance lifecycle state to temporarily take them out of service with a reasonable portlet unavailable experience.

Inline Portlet Configuration

Administrators can now conveniently launch the config mode of portlets embedded in the chrome without finding those portlets in the portlet administration table of portlets.

Better permissions manager UI

The Permissions Manager UI is also fixed in this release.

Better command line tools

This release adds convenient Ant targets for generating SQL schema update scripts, and for deploying the LESS or XSLT files without incurring the full build lifecycle.

Better import and export

Importing local group changes now updates cache entries. Exporting a layout containing portlets with null portlet preferences no longer fails with a NullPointerException.

Better command line build implementation

The build process now uses a better Groovy compiler, avoids stealing focus when building under OSX, and includes other Maven build process fixes.

Better look and feel

uPortal 4.2 looks a little better and includes better technology for delivering good portal experiences locally.

Session timeout warning dialog

uPortal now includes an (optional) client-side warning that a session is about to expire with the opportunity to extend the session.

Sticky profile selection

This is an optional, off-by-default feature. You don't need it if you only have one profile or don't need to let users choose between them. However, if you're like MyUW and you want to provide a opt-in or opt-out graceful transition from one profile to another (say, in moving from Universality to Respondr), this sticky profile selection feature remembers what users chose and re-applies it on subsequent sessions.

If you do press forward with Respondr implementation, and you should, you'll want to be sure the Respondr XSLT compiles, and there's now a unit test to reassure of that.

Dynamic Skin improvements

You can now set more colors dynamically.

Display of Portlets

When you render a portlet that's not in your layout (i.e., addressing it by fname), it now appears in an ad-hoc transient tab, even if you're not logged in.

Portlets with showchrome set to false now enjoy better styles and functionality.

mUniversality and Respondr now play more nicely together

Respondr regions no longer show up in mUniversality navigation.

Better guts

The SmartLdap group store now runs as part of the normal Spring application context.

Better Google Analytics integration

The Google Analytics integration shipping in uPortal 4.1 was a bit rough and required local changes to get working. uPortal 4.2 provides a better starting point for local Google Analytics usage, fixing the integration, adding Google Analytics to mUniversality, and using the guest username to represent unauthenticated access.

Upgraded dependencies

  • Updated PostgreSQL dependency
  • JasigWidgetPortlets to 2.1.5
  • Simple Content Portlet to 1.1.1
  • Notification portlet to 2.1.1
  • Announcements portlet to 2.1.2
  • CalendarPortlet to 2.2.1
  • Quick start Tomcat to 7.0.54
  • Quick Start Maven to 3.0.5
  • Allows Ant 1.9.3+

Better collaboration

uPortal 4.2 ships with an updated CONTRIBUTING.md that emphasizes communication.

Better Logging

Better logging makes uPortal more supportable and eases troubleshooting. uPortal 4.2 improves logging around profile selection, around DLM fragment audience determination, and upon portlet failure.

Acknowledgements

Post cover image : Florida fish and wildlife panther release. CC-BY-ND-2.0.