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
- the release on GitHub, where you can download a quickstart.
- the release in the wiki, where you can see issue tracker reports.
- the release page on Apereo.org, where you can't do anything interesting.
- the relevant threads on uportal-user@ and on uportal-dev@ where you can discuss this release.
Changelog
2015-01-02
Removed erroneous reference to Portlet resource cache controls working better in this release -- the functionality isn't actually changed, it's just better documented.
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:
- Merge the beautiful open pull request that improves portlet administration UI around understanding and setting portlet title, name, and fname.
- Include some example App Launcher portlet publications, in default layouts even. The App Launcher portlet is new and exciting for this release and uPortal should lead with it.
- Bump the stated Servlet container version requirement
to Servlet v3 / Tomcat 7. This would just be documentation deep, but would shed any expectation that uPortal 4.2 supports the oh so very old now Tomcat 6. - Add syntactic sugar for granting BROWSE permissions from portlet entity files, since that implementation is in a pull request under review now.
- Remove the
fl-
CSS classes from the Respondr theme. The minor release is a big enough version bump for this to be appropriate under the current versioning policies, and it'll be good to shed legacy classes and move on.
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).
- Anthony Colebourne
- Aaron Grant
- Josh Helmer
- Tim Levett
- Jodie Muramoto
- Andrew Petro
- Tim Vertein
- James Wennmacher
- Drew Wills
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
- add a Marketplace JSON API,
- support filtering
/layoutDoc
by tab, - include portlet alternative maximized URLs and icon URLs in their
/layoutDoc
representations as well as an optional target window - include portlet
fname
s in the layout JSON - include the session key, uPortal version, and server name in
session.json
- allow saving a layout change via a single JSON call rather than two
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.