uPortal developers meeting Cornell University

August 7-8, 2003 [a Thursday and Friday]

Attendees

Dan Ellentuck -- Columbia U.
Alex Vigdor -- Columbia U.
Stephen Barrett -- Cornell U.
John Fereira -- Cornell U.
Aaron Hamid -- Cornell U.
Dave Koehler -- Cornell U. -- Thursday morning only
Rich Marisa -- Cornell U. -- Friday afternoon only
Michael Oltz -- Cornell U.
Peter Kharchenko -- IBS/Unicon
Ken Weiner -- IBS/Unicon
Kevin Gary -- Unicon/IBS, architect of Academus
Jon Allen -- Instructional Media and Magic (IM&M)
Justin Tilton -- IM&M
Jim Farmer -- JA-Sig/IM&M (project 'clerk' or 'administrator')
Shoji Kajita-- Nagoya University, Associate Professor; and CEO of his own company which is the main distributor of WebCT in Japan.
Mark Boyd -- SCT
Jan Nielsen -- SCT
Mike Zackrison-- SCT
Chuck Severance -- U Michigan -- Friday only

These notes were taken and edited by Michael Oltz (mdo1@cornell.edu) and corrected with input from the presenters and other attendees. Most of the links for companies, organizations, and standards are provided only once, usually at the first appearance of the name. A few are provided multiple times. If no link is given where you notice a word, go to the beginning of the document and search for it.

Decisions and action items are indicated by non-link underlines.


Thursday August 7


Ken -- introductions, agenda changes

The goal of this meeting is to nail down the completion of 2.2 -- one conversation will be how to complete what we are working on, another to discuss future features.


JA-Sig board perspective, by Dave Koehler -- he is director of Business Information Systems at Cornell, and is on JA-Sig Steering Committee (often called the "JA-Sig board")

JA-Sig started in 1999 [java In Administration] to cooperate developing academic administration software in Java. Mostly to learn from each other, and reuse code.

The JA-Sig Clearinghouse is to exchange miscellaneous free code and other things. The board intends to increase promotion and use of Clearinghouse. (a) Share more than just code, e.g. channels (b) get at it through uPortal.

At the first JA-Sig meeting, it was asked, what should JA-Sig collaborate on? All the schools were looking at portals. So that's what they decided. After that started, a number of 'lurker' schools said, let the rest of the world use it too, not just for the schools that write it. JA-Sig went to Mellon Foundation for money to support broadening what kinds of schools could make use of it. They required that uPortal be open source.

The implementation schools are learning a lot from the project. Bernie Gleason (of Boston College) said that the total effort had a value of $3 million, but the results are given away free. Java and portals are not the only things that need coordination; so now JA-Sig has the reputation of not just talking but doing something. Colleges are asking JA-Sig to give guidance re other open source ideas, what to use, how to connect it together, choosing standards.

For example JA-Sig is trying to help start up an effort of open source financials [in conjuction with National Association of College and University Business Officers NACUBO] including a vendor and several colleges; Mellon Foundation is not as interested in funding this one.

Dave mentioned 2 articles in Chronicle of Higher Education August 1, 2003 about open source in general, and about effects on higher education of Oracle's takeover of PeopleSoft.

He also mentioned a book "The Cathedral and the Bazaar" -- how open source model works and why it works. [The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary revised edition, by Eric S. Raymond, O'Reilly, 2001]

The first production site: University of British Columbia (hereinafter "UBC") went live with uPortal in September, 2000. 30,000 students. Live only with freshmen at first.

Mellon funding is running out. Unicon has offered to continue to support Ken and Peter at least through the end of 2003.

Some colleges are comparing raw uPortal with Luminis (formerly called Campus Pipeline), which to go with. JA-Sig is pleased that companies are embedding uPortal.

[next JA-Sig conference is in Miami Beach this winter]

Jim question: Dave, what do you consider to be the impact of the Oracle/PeopleSoft merger?

Dave: If we don't bury our heads in the sand, the way we have chosen is not necessarily the way that will sustain value. Yale Princeton Columbia etc. will be in existence 50 to 100 years from now to support our environment, corporations may not or may be doing different kinds of things. Our handshake to others is an open hand, palm up -- we want it for free. Our cycle is the gestation period of an elephant, it takes a long time to decide what to do. Colleges tend to heavily customize canned products and that means we have to support it ourselves. In the long run, the Oracle/PeopleSoft will at least be a wakeup call to consider strategy. Nothing against the two companies as products, but what about total cost and fit to the problem. Dave's original take was it was a brilliant marketing ploy for Oracle, not that Oracle really wanted it. Now it has evolved into a conflict between the CEO's. They're presently waiting for the anti-trust ruling. But even if they do merge they would still be number 2 to SAP.

Carl Jacobsen (at University of Delaware, on JA-Sig Steering Committee) attended NACUBO conference.

Ken: What is the board's take on the portlet (JSR-168) spec. Does the board expect uPortal to be compliant?
Dave: I'm not the technical member of the board. We have not had a specific conversation about it. If you want board approval or consideration, write a one-page executive overview.

Ken: Will it be a problem if a lot of portlet-compliant containers come out and uPortal is not one of them?

Dave: We want open-standards, generally accepted things.

Jim: there is WSRP, Portlet, and Jetspeed's Velocity. Will a Sun Java portlet spec emerge as a strong business force? Dave, what is JA-Sig board's relation to Sun?

Dave: I don't think I can answer Ken's question. The developers have made good decisions in the past. Ken, please keep telling us what technical issues we should consider important and evaluate.

Sun has been our benevolent benefactor so far. We are more interested in their architects/luminaries than in marketing types. They have contributed something toward conferences. Sun can communicate with this kind of market without JA-sig, but not as well. Sun was concerned about the percentage of sites running on Sun boxes, but the issue is behind us.

Sun is not as eager to support the Clearinghouse as the other things. Dave thinks we have an influence on what Sun does.

Ken: What about Jim Farmer's role? What will happen when the funding runs out?

Dave: I don't know exactly how much is left in the pot. Jim is careful about spending. What Jim does is 'virtual glue' to other organizations. They are looking for some other source to continue this.

By the way, Columbia is trying to get a Mellon grant for CUCMS (Columbia University Content Management Suite, information and download available from the JA-Sig Clearinghouse).

Alex: That grant application is currently sort of in limbo.

Dave: Mellon (especially Ira Fuchs) is more interested in funding matching-fund grants now. The in-kind contribution of developers is not as important an influence on them now as it was.

Ken: is it that we don't want funding from them or that we can't?

Dave: We would like to get the money but the bar is now higher. They won't give money for 'evangelism' they want development to happen from the money and they want to see a plan for after-grant continuation of the results.

Jim: One bad thing is, if Mellon hadn't been so positive to begin with, the board might have taken another direction back then and there would not be quite this problem.

Kevin: What is the board's metric of success re uPortal?
Dave: a) It's a great product in and of itself.
b) Continued exploration of the context of delivering products and services to the community. E.g. the content management project. SCT's learning management system. Connection to other standards groups and so on. A lot of serendipitous discovery is happening.

JA-Sig is now kind of an aggregating group for higher ed.

HEKATE is a new higher education organization whose focus is on web services and on using the web to facilitate education.

So far you developers and uPortal in general have 'bet on the right horses'.

Jim: There will be questions based on the open source article. Jim summarizing what Dave said:
1) Uportal -- JA-Sig board expects project to continue more or less in the same form.
2) Board now strongly supports open standards.
3) Board has a broad application interest.
4) Board satisfied with architectural decisions.
5) Clearinghouse is important as a service to the community.

Common Solutions Group has not actually come out with any specific solutions.
UPortal has. Dave congratulates the uPortal development group; the product continues to "wow".

Jim: What about corporate interest?
Dave: We don't want uPortal to fork into a corporate vs. a higher ed version. We don't want to lose control. We're wary. Companies expect high-class service.
Potential problems: (a) if corporations invest bunches of money, the H.E. community won't get as much attention.
(b) what if corporations hook in vertical-market standards or proprietary things, and we can't get the code? E.g. ".NET" ??? That's how the forking would happen. "They're bigger elephants than we're used to."

 

Second session

Jim: Transitional comments: The reason for all the questions at the end of Dave's talk was, we wanted you to have authoritative answers; "When Dave talked to us, this is what he said" a) What is happening to the uPortal project? b) why are they doing other things?

Jim on CHEF: What is the "there" there? The CHEF project plans to implement their own 13 services there, which is more academically relevant than raw OKI. This will not be incorporated in the framework but will be available to uPortal community. [CHEF is software for group collaboration developed at U Michigan. Presentation on it on Friday, see later]


Ken on Portlets (JSR-168) and WSRP [the second session]

[JSR-168 is a specification from the Java Community Process:
http://www.jcp.org/en/jsr/detail?id=168
for an API for how to do what JA-Sig calls a "channel". WSRP is a spec from Oasis:
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp
it defines how a client can aggregate application data from a remote server via web services. It would replace or parallel Ken's "remote channels" feature.]

a) If we took the spec seriously, could we do it in uPortal 3.0?
b) Would we have to cut features?

Jan Nielsen thinks there's a great advantage, "we can't not do it". All the other horses will overtake you if you don't do it. And we will be abandoned. SCT really wants this. He's not so comfortable with WSRP, not as much confidence. Jan expects the Java development community to run with JSR-168 "like a wild pack of dogs". [because it is from the Java community per se.]

Ken: WSRP is an enabler -- it allows things to communicate with each other once they have been written. [it is for remote channels] JSR-168 is a container specification really. Do we write a wrapper for 168 on top of uPortal? Or rewrite uPortal to 168 and make a wrapper for IChannel? Rewriting uPortal would take about a year.

Kevin: Also get involved in the standards process for 168 version 2.0.
Peter: A technical detail, the spec says that portlets must be loaded with the same class loader as the framework. This is problematic for our implementation of CAR files (channel archive files, like a jar).

Aaron: Did you say features would be cut?
Ken: Some of the features we've done may not make sense in 168.

Steve: What do people think is the timeframe of adoption and rollout?
Ken: As a first step write WSRP and try to write an adapter.

SCT says the industry will adopt JSR-168 rapidly.
Steve: We need an analysis of how much it needs to be altered to do it.
Ken: Gut feeling -- a lot.
Mark: -- It will be easier to rewrite uPortal as a portlet container than to write an adapter.

Ken: Adopting another JSR-168 portal framework in place of uPortal is technically one of our options.

Alex: What we're better at is value-added stuff, e.g. groups and permissions.

Jan: It would take 4 people for 6 months [a deliberately casual estimate]

Peter: The rendering is not going to be so difficult, it's the authentication, handling users, etc.
Ken: I am not so concerned about those issues. We already have mechanisms, just make the 168 API call that. I agree with their estimates. I compare it with what we did in going to 2.0 rewriting the internals. But it will be easier to assign work this time around. And there are compatibility tests available for 168. The difficult part will be morphing legacy code. Two person years. (4 people for 6 months).

Ken: If we don't implement JSR-168, we'd be making a one-off portal that isn't standards compliant.

Jan: Maybe JA-Sig should concentrate on integration rather than the framework.

Jim: In terms of adoption, Plumtree is first, Vignette is second, and uPortal is third largest enterprise portal in USA.

Steve: We should present several options to the board, and the first option is to get involved in the spec.

Mike Z: I suggested a year ago we get connected to the 168 group. But at the time the uPortal group was focused on remote channels/WSRP.

Jim: I recommended to the JA-Sig board some time ago that they not get involved in standards, because it takes a half- or full-time person and a lot of travel money. Costs about $150,000 a year. UPortal has an opportunity to be commodity implementation because of so many sites.

Jim's suggestion: (a) Ken and I will write up pros and cons of JSR-168, (b) go to developer list for comments, (c) go to our commercial partners and ask how important it is, (d) present the document to the JA-Sig board. He thinks that Gartner and their competitors are hesitant to make a call about 168.

Jim: SAP is now selling their product with MySQL db instead of Oracle. Oracle is losing market share.

Dan: In reference to Ken's motivation. I think uPortal got the extent of adoption that it did because it was trying to be a creditable implementation for higher education, not by trying to compete with anyone. I don't think we should see ourselves as competitors to IBM and Sun.

Mark Boyd: I hear such comparisons often because uPortal is being used so much. The competition is in the eye of the beholder.

Kevin: I think uPortal's main competitor is Jetspeed. I think uPortal won by being advanced re XML, and by being by and for academia.

Steve: Doing things the higher ed way, other vendors have to be torqued in.

Mike Z: Within a year, anybody's shopping list for portals will have a checkmark for 168 compliance.
Kevin: The market will become 'buy a portal container', and 'buy portlets'.

Jim: Apache is really good about getting their products out. Except for Jetspeed.

Jim: If we do my suggestion, I don't think the board will discuss the technical aspects of it.

"Do we use the word 'portlet'?"

Ken: If we incrementally implement JSR-168, gradually, we would have hybrid channels and people would start calling them portlets. Ken does not want to go down that road.

Jan: We need to find out whether Jetspeed will do 168 and how soon.

Mark: Join efforts with Jetspeed????

Jim: Indiana is the only university that strongly supported Jetspeed. Michigan followed them. Now Michigan wants to go to uPortal. Possibly Indiana as well. I will continue to say "channel".

Ken: Until we get feedback from the board, steady as we go on development, don't start this yet.

Peter: Our options will be limited by what resources are available. Could we get more programmers?

Jim: Two options (a) business partners may contribute time, (b) go to Mellon's competitors.


Update on WSRP (Ken)

Ken: talked to people on WSRP team at Java One. Ken used Axis instead of Java XML reference implementation. He was able to generate from the WSDL (analogous to IDL for RPC). Now he has to write the client and the server part. He got started with it, got pulled away by other things, but he will resume this month (August). At first he thought just write a consumer, but now he thinks will also write a producer. It might not be perfectly compliant for 2.2 but it will basically work, and we can clean it up for the dot release. The way you use it will be just like remote channels. WSRP completely ignores user authentication. What we can do is if the channel uses CacheCredentials we can send the credentials along; this wouldn't necessarily be secure, but it's an option.

Steve: We (Cornell) are using authentication in the http header, so that takes it out of the standard for now, until the standard addresses the issue.

Ken: I don't know how we will do this for sites in general.

Jim: When would a channel developer use WSRP?

Ken: A developer wouldn't use it, the choice is up to the site admin: "where am I going to get my content from?"

Ken: Apache has a project Charon, which is based on code written at IBM Boeblingen. an WSRP compliance project.

Ken: One thing where WSRP is useful is you can load balance, move the cycles to another server. Or, share the information through a variety of servers.



Thursday afternoon session

CARs -- Mark Boyd

A CAR is a way to distribute a uPortal channel in a single file, similar to a JAR. All the class files, media, stylesheets, and other resources are put into the file, and it is loaded from uPortal.

Mark will evaluate rewriting in order to take the Portlet (JSR-168) spec (the requirement about class loaders) into consideration.

JSR168 indicates that all portlets should be loaded with the web container's class loader. Therefore he will see if the classpath can be modified to find jars in the cars directory to help segregate channel archives from third party libraries. Their names would also have to be changed from ".car" to ".jar" if we use the container's class loader. This would not permit dropping in new CARs without restarting the server. You have to restart the container to see new jars. He will evaluate gonig back to using the container's class loader. With this in mind new CARs would not be recognized until the container was stopped and restarted eliminating new feature item 4 below. This approach would also eliminate use of third party libraries included within a CAR. On the positive side item 2 would be supported automatically.

New features

1)* Documentation

2)* Services and channel types deployable from CAR

3)* Support of more browser accessible file types

4) Automatic recognition of new* or updated CARs [see sentences above]

5) Replacement of CarResourceWorker [this would still be feasible with jars, referring to e.g. loading images]

6) Semi-automatic and automatic publication.

7) Third party library content.

* Available in 2.2


A separate class loader was used to provide class loading from a different directory beyond those defined by the servlet spec for webapps and to allow class containers to have the file extension of ".car".

Also related is the use of browser accessible content distributed as part of the channel in a CAR. Images can be served out of the CAR by use of the CarResourceWorker. This will be revisited to see how much of a performance gain can be had if such resources were extracted from the CAR and placed into a web server area. However, such resources would have to be identified in some way for the infrastructure to be able to pull them out. We have discussed various ways of doing this via either defining an internal structure on the CARs akin to that of the servlet's spec or by specifying files via a deployment descriptor. If the CarClassLoader goes away then an internal structure approach could not be used. Item 3 would then be solely dependent on the web server.

A problem: What if the name of categories and groups in a deployment descriptor does not match what's on the target portal instance? He will be looking at ways to allow the admins to resolve this issue including possibly allowing for partially published channels that could be viewed in the current channel manager and category and groups values could then be selected to finalize the publishing.

Kevin: You could have a repository of CAR files somewhere and just point at that, not have to put on the specific server.

Mark: SCT uses CARs as their standard way of packaging channels. Since action to implement JSR168 support is pending directions from the jasig board we will keep the status quo for now but investigate those items not affected directly like semi/autopublishing and deployment descriptor defined web-visible files extraction.



Ken: If we are going to make October we should wrap up checkins by mid-September.



Groups and Permissions -- Dan Ellentuck

Additions for 2.2

Groups:

New filesystem group service org.jasig.portal.groups.filesystem
Look at this file in the MAIN branch:
website/implementors/services/filesystemGroupService_tutorial.html
leaves are files which contain lists of principals or refer to other groups. The benefit to Dan is that it is so easy to use this model, a good introduction for novices to how groups work. After the file has been read in, the timestamp is checked to notice if it has changed. And it's good as a debugging tool.

Mark: How might a Group Manager be improved to be able to handle such a need?

Steve: I have a channel that lets authorized people to download lists of users, edit it, and upload it again.

Alex: We are thinking of using CuCMS (Columbia University Content Management System) to manage the files.

Authorization:

Some Columbia departments had their own sources of permission information and
wanted to be able to connect it directly to the portal. Dan decided that the
information requested to be imported was proprietary and all they would be doing
is rewriting various rule engines. Instead, you would ask the remote server, does
the user have this permission? And it would just say yes or no, possibly with an
expiration time.

Model a Permission Request and Permission Response

Request captures a question about an Owner, Principal, Activity and Target.
Response captures the answer at a specific point in time. May be cached,
e.g. for certain Sources or Principals.

Authorization Source

Implements simple request-response protocol
Lets portal use already-existing authorization service as a client
Each will have a factory and you define it in an XML file.

Portal Authorization Service has a Configuration with multiple Sources and a default combining Policy. This will have a factory and you define it in an XML file (this will be an enhancement of the existing authorization service).

[Somebody spell this correctly: NYSO? NISO? in reference to a role information format. There is a "NISO" having to do with libraries, but I couldn't find the 'role' standard there.]

Jim: Examples -- library systems have a mechanism to find out roles (it happens to use SOAP).

Steve: The concept of authorization 'policy' is just beginning to be understood, a 'yes/no' answer is not sufficient.

Jim: When you get a channel that can depend on permissions more than "yes/no" -- well, roles are actually Group memberships.


Current uPortal Permission model

A Principal performs an Activity on a Target within the context provided by an Owner. Only the principal is multi-valued (multiple parts of each value) and gives a link into the groups system.

Could Activities and Targets also be groups? So you could assign permissions en masse? The reason to do this is to reduce the work for the administrator.

Aaron: Instead of making the uPortal authorization more powerful, why not put an API over it so it can be ripped out later and replaced? In which case, you would pass in an Object and get back an Object.

Motivations: (a) Requests came in over the last year for a native way to represent complex roles. (b) Dan read the OKI materials and saw their use of "types".

Dan is suggesting this as a future idea. "It feels like there's very little support for it here."
Jim: Not necessarily.

Jim: As an aside www.osafoundation.org [common solutions group + Mellon giving Mitch Kapor money to make PIMs for higher ed]


OASIS

Extensible Access Control Markup Language ("XACML")
A subject performs an action on a resource. This is captured by a target.
The logical unit of authorization is the Rule. Rules are aggregated into policies and policysets.

java implementations:

http://sunxacml.sourceforge.net
http://www.jiffysoftware.com

Documentation:
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml

System roles:

Policy administration point -- auth engine
Policy decision point -- rules engine
Policy enforcement point -- auth client
Policy information point -- auth store


OKI

OKI Open Service Interface Definition ("OSID") for Authorization:

An Agent performs a Function within a Qualifier. This is captured by an Authorization.
Agent may be individual or group
Qualifier is context and may be nested
the Agent Function and Qualifier each contain a Type, a nested category meant to model an organization.
AuthorizationManager reads and writes Authorizations and answers authorization requests for a given Agent, Function and Qualifier.

One way to work with OKI is to write an external OKI adapter, and interface to the Authorization Service. Or, we could wrap the current AuthorizationService with OKI and therefore make it bidirectional.

Jim:
1) Some people are skeptical because there's not much 'there' there.
2) Mellon doesn't know what to do regarding OKI. However, many parties are saying that said parties plan to rush to do it.
3) Michigan plans to implement OKI by October.

Kevin: Why are they reinventing the wheel, when are they going to actually do something, and it doesn't seem to be very e-learning oriented.

Peter: it seems that MIT had some problems they wanted to solve on their own and wanted to do it in a general way.

Kevin: Why is CHEF [see session below] talking to OKI?

Jim: Mellon funded OKI, and Mellon is funding Michigan [their model is collaborative] Stanford's model is assessment. Mellon funded U Washington to do PubCookie but everybody else is using Yale's Central Authentication Service (CAS). He feels XACML seems to have the least momentum behind it of all the role representations. SAP has released all its interfaces, and PeopleSoft is coming along, so these don't seem to be such a big deal. [side note: Aggregated layouts relies heavily on groups and permissions and is not very fast]

Jim: It seems that the external authorization need is more of a channel concern rather than a framework concern. the local groups and permissions model was written more for the
framework.



Internationalization: 2 vs 3 letter codes, Ken

How does the locale get represented? the default 2 letter codes or 3 letter? 2 letters leave out many countries and languages. is there a way to use the existing object and squeeze 3 letters in it?

Ken: make a custom one that can return a java.util.Locale object on request.

Jan: maybe we can use the variant field of the default Locale object to hold the 3-letter part. This is better because we can use the object with standard resource bundles.
Ken: but we can still do it with our custom class by letting it return a default Locale object whenever we need it. if we use 3-letter as a variant, what would we pick as the 2-letter base code?

Jan: The variant is a vendor-specific field. so we can choose whatever we like for the 2-letter code?

Jim: Let's write a letter to the Java community to recommend that they use 3-letter standards because libraries started to use it. Also write to WSRP and JSR-168. Also to the U.S. government Office of Management and Budget (OMB) to recommend that federal procurement require this. Drop the 3-letter requirement for uPortal for now and wait for the responses. jim writes, vetted by developers, vetted by the board, go out.

The group agreed to move forward with 2 letter code support for uPortal 2.2. This allows us to use the standard java.util.Locale object throughout uPortal.


XLIFF: (by Justin)

[a sort of IDL for making files in N languages] you make a skeleton, then translate the text into other languages. Originally Justin and Peter were using the original English string as the translation unit identifier but that will not work in XLIFF 1.1 where it has to be a single token. Peter is writing a Swing tool that makes skeletons and allows you to fill them in.

Peter says the editor won't be ready for 2.2 but suggests that there is some preparatory work that might fit. Make a helper class that reads the list of locales then read [couldn't type fast enough]

There was some discussion of implementation details of this idea.



Friday, August 08, 2003


uPortal and CHEF by Chuck Severance

The Comprehensive collaborativE Framework (CHEF) initiative is a Jetspeed-based application development framework from the University of Michigan. The CHEF project would like their tools to work both with Jetspeed and with uPortal.
"We're kind of a bad portal." -- The personalization is very limited. We're very interested in building a lot of tools. it doesn't LOOK like Jetspeed.
Course Management System -- Course tools
"Work Tools" -- Research collaboration system
It's more like an aggregated layout rather than user personalizable.
U Mich created "My UMich" based on Apple WebObjects. But a new manager at U. Michigan decided not to continue that project due to financial considerations.

The portal engine is Jetspeed/Velocity/CHEF. "Teamlets" are what they call the 'channels'.
There are these things called "Services" -- various API's to do various common things like DB connections.
They have a concept like uPortal servants.

CHEF is more an application rather than a portal. They emphasize the tools behind it rather than the framework.
Jetspeed will be evolving based on WSRP and JSR-168.
UMich wants to take advantage of various uportal thrusts:
-- aggregated content
-- XML at the core
-- WSRP and JSR-168 implementations

Want to add these things to what JA-Sig is doing
-- Notion of services
-- Super-duper-channel
-- CAR and then Super-CAR

CHEF implemented their services before OKI appeared.
OKI has a concept of 'API's' and 'Factories'; it's just interfaces.
Chuck considers a service to be the actual implementation, rather than the API.

What is a Service?
-- Long-term lifecycle
-- One instance
-- Must be aware that multiple users can use service
-- Can use memory resident information
-- Pluggable interfaces

Each service has a 'cover' (a design pattern) for how to instantify it.
UMich uses Jakarta Turbine to find and load services.

Super-CAR file (he wants something like this)
Standardization for interchange of two types of packaged components
-- User Interface package is one kind
-- Service package which describes the broker for getting at the service.

[Essentially he envisions the portal as being assembled from pluggable pieces.]
He wants there to be an "UI" layer so that a channel could go either to a portal or run standalone.

CHEF 1.1 just released [July? 2003], there is still another year on the project.

Secret Plan for Total World Domination:
-- uPortal and CHEF steal best practice from each other

Ken: I don't think uPortal and CHEF are as similar as you mentioned
Ken: Is Jetspeed really moving toward 168?
Chuck: Those Jetspeed people have been doing something in secret. it seems to be 168 related but they are not talking about it.

Jim: Regarding services, when and how with respect to OKI?
Chuck: Someone was supposed to be working on OKI but they were pulled off to work on 1.1 but from now on we will have 1.0 FTE. it will probably take a year for their one person to get an OKI reference implementation done.

Jim: What is the priority of the 13 CHEF services you have? Would they be available to JA-Sig developers? How would you expect us to use them?
Chuck: They are done, and yes. For example the user directory service, he explained how to do it -- it would require use of Turbine.
Aaron: This seems to look like Web Services?
Chuck: No it looks like Turbine. Turbine is pretty much a service broker. [Ken thought it had a lot more in it.]
Aaron: Could you layer Turbine on a Web Service?
Chuck: Absolutely.

Jan: You seem to want a broker for {brokers such as CORBA or EJB's}. I (Jan) wouldn't find EJB's attractive in uPortal context.
Chuck: a) "My first desire is to create a market of people writing services."
b) My second desire is to get uPortal to use our services.

Jan sees the lifecycle aspect of CHEF as key to the design and most useful to others.
"Chuck's OKI periodical table thing." A way to find and connect to all the modules of a web thing.

Dan: a) What do you expect to get out of other places using your stuff?
b) What do you get out of being an OKI implementer?

Chuck: (a) Our provost is willing to invest large-scale in development at UMich only if we collaborate with others.
(b) Michigan has received more than a million dollars in grants related to its CHEF effort.

If something doesn't have OKI it's going to be harder to sell.
OKI is becoming a checkoff. (A question that people ask before adopting something)

Jim: When will the point come that this can be used by for example UPortfolio?
Chuck: Right away.

Jim: Jeff Merriman at OKI said in Italy "Web Services are dead".
Chuck: What he really means is Web Services are not the only thing on this planet. But he has to say it dramatically to get other people to think out of the box.

Chuck: The concept of a channel or a teamlet needs to be broadened.

Ken: If Jetspeed is doing 168, do you think we should do the same thing, or combine efforts?
Chuck: Been thinking about that. Look at what the true value of uPortal and CHEF is. The aggregated layout aspect, which I don't think 168 handles well. Should uPortal be a competitor to Jetspeed? I (Chuck) will not write another 168. I won't invest the year of my 8 or 9 programmers to do 168.

Ken: If we didn't do 168, would you still adopt uPortal anyway based on functionality?
Chuck: If Jetspeed had 168 but no aggregated content, and uportal had no 168 but it did have really cool aggregated layout, I would pick uPortal. What I really want is 168, aggregated layout, and CHEF tools working in it, with OKI. Should you merge? Well there are certain predispositions in Jetspeed that may make that painful. But if you jump into Jetspeed, don't lose the unique things that make uPortal what it is.

[Later in the morning, Chuck Severance arranged a conference call with one of his staff so we could ask questions.]

Glenn Golden, chief architect of CHEF, one of the Jetspeed committers, on a speakerphone

"Jetspeed 2" project is probably JSR-168 related.
Project Pluto is a Jakarta project that will be the reference implementation of JSR-168. Thomas Sheck(?)'s group [was chair of WSRP committee] at IBM Germany Stuttgart(?) is writing it and contributing it to Jakarta as soon as the voting process on JSR-168 is finished. It is a portlet container, not the other aspects of Jakarta. [there seems to be an email that leaked out]. Pluto would implement the API's and the lifecycles.

Chuck: uPortal group was thinking it would take 2 person years to do JSR-168. Will Jetspeed be able to put that much into it?

Glenn: IBM has probably known for a year or more what 168 would look like. I think that the Pluto code will actually come out. I think Jetspeed will go in this direction.

Chuck: Will Jetspeed's Velocity survive?

Glenn: I think so, it doesn't overlap what JSR-168 specifies.
[end of call]

Ken: Let's wait for Pluto and see if we can integrate it.

[search for 'plutoproposal' on google] http://nagoya.apache.org/wiki/apachewiki.cgi?PlutoProposal


Internationalization, Shoji Kajita

Here is an information page.

To-do list:
1. User interface changes
2. Database changes
3. Resource translations
4. Code changes
5. Documentation
6. what next

1. UI Changes
to let users select the language to be rendered in subscribing channels. Some of this will be in 2.2.

2. Database changes
One additional column in UP_LAYOUT_STRUCT table (LAYOUT)
Eight new tables
UP_CHANNEL_MDATA
UP_CHAN_TYPE_MDATA
UP_LAYOUT_STRUCT_MDATA
UP_GROUP_MDATA *
UP_PERSON_DIR_MDATA *
UP_USER_LAYOUT_MDATA *
UP_USER_PROFILE_MDATA *
UP_USER_MDATA *
*: added after meeting

3. Resource Translations
It was pointed out that there need to be more changes to the database.
Metadata is also needed for UP_USER_LAYOUT(?) and for the UP_USER_PROFILE

4. LocaleManager class
One instance of this class for each user
There is a locale choice associated with:
(SEE ALSO DISCUSSION BELOW)

user profile
user layout
channel definition [provided by developer, may be modified when published at a particular site]
layout struct level [subscribe time]
HTTP session parameter
browser (i.e. ACCEPT_LANGUAGE)
uPortal default locale from properties
JVM default locale setting

(if a given listed setting is null, fall down the table to the next setting, etc.)


should there be a separate class for GUEST user? Peter pointed out that the logic would be different.

Ken: In properties, we specify all the languages that could possibly be chosen for the framework. But channels can specify they have other languages, so you can add another language. The user profile level will for the time being be the same as the properties.

At the user layout level there will be a Language Preference channel, to specify preferred languages in order, from the list provided in the properties.
A suggestion to be able to specify language at fragment level (tab, column), was rejected because there is not enough time to implement it.

Peter said that the languages that a particular channel can support is known by the channel developer and should be in the deployment descriptor (see the CAR concept). Provided at prepublication. when loaded into a particular site, the site admin should be able to modify it.

At the publication time, show the site admin what the site default is, and let them copy in to the specific channel's list if they want. Or they can leave it blank.

At subscribe, if there's zero or one language the channel can display, then the user should not be given the ability to choose a language for that channel.

There will be a language preference connected per user also (there will be a UP_USER_MDATA table)

What is the priority of the locale, as looked at by channel when deciding how to render itself: This is the order in which the various locale settings will be put into the array that is sent to the locale resolver.

subscribe time setting for a channel [could be null]
publish time setting for a channel [could be null]
user layout preference
browser specification
portal wide (.properties) setting
Java locale default

for a guest user, they would have an empty locale preference, and use the same logic.

The resolver will be an interface with a default implementation, chosen in portal.properties.

Alex volunteered to write the resolver part. or at least start it.

Ken: Who will make the database changes, they have to be done first? Nobody will volunteer to do it. It has to be done before October. There was a lengthy silence.

Peter: "I can be in charge of finding somebody to do it." (laughter) The problem isn't merely to do it, but to test it against many varieties of database. Peter will find someone.

Steve: We should abstract the database accesses.

Dan: Irrespective of how we do database access, we need some unit tests, which would make it easier to make changes.

Aaron: Could we use Hibernate? A generic persistence layer, database adapters etc. behind it.

Ken: Shoji will make the data.xml and tables.xml file changes and send them to Ken. And the developers will introduce one table at a time into the 2.2 codebase.

Shoji: A channel may want to know who specified a particular Locale in the input array.

Other people disagreed at first.

Dan: A particular channel may find it wants to override its locale setting.

Alex: A particular channel may want to override its resolver.

Ken: The need for such a thing will be rare, so there should be some way to do this but not in the regular channel interface.

Peter: in RuntimeData there is no reference back to the portal.

Ken: What if we can choose a custom resolver at publish time?

A discussion ensued about how to address this concern. Some developers thought the array of Locales should not be in the RuntimeData or StaticData, as it's kind of a violation of the insulation of a channel from the framework.

Ken: The channel should talk to the framework to find out this information. Why not use IPrivileged?

Peter: No, the purpose of IPrivileged is for changing things about the framework, like the Preferences channel. People have been misusing it to access container information e.g. HTTPRequest which was not its original intent.

Ken made a command decision to end the discussion, and proposed that there will be a utility method somewhere to be called to do the resolving. Others said that it would not work that way, it can't get at enough data to make the decision.

[the break for lunch occurred at this time]

Ken: The official word for 2.2 is that channels do not know the source of the locale array entries. As a workaround use IPrivileged.

Ken: Shoji checked in a class called LocaleAwareXSLT but Ken is worried that it will give an impression that this is the enduring official way to do it. The XLIFF group may change it all around in the future. So should it be checked in? Perhaps we will build this functionality into the generic XSLT class. Result: we are going to keep this class but change the naming convention from what Shoji originally had. There would be a default file with no special extension.

Shoji: Documentation -- who will write it?


"business logic" of Aggregated Layout -- Peter

He showed a diagram of how Aggregated Layout (A.L.) code processes the rendering, and explained it.

He explained how you describe pushed fragments in XML, then you run an Ant target to load it into the database. Michael (Ivanov) is working on ability to load pulled fragments this way also. There were some comments to improve the syntax of these files (most notably the groups should be referred to by their unique id, and not by their names).

restrictions on where a fragment can be in the user's layout, and whether and how it could be moved.
e.g. priority -- how close to front of tabs or folders it appears.
depth -- how far from root of tree it is.
parent -- restrictions on what the priority of the parent folder can be.

Then you give a structure of folders and channels, and tell whether they are immutable, unremovable, and/or hidden.

Then Peter gave functional descriptions of what the most important methods do, such as AddNode

Dan: By 2.2, make a couple of examples.

Ken: In 2.2 Aggregated Layouts will be enabled by default.

Peter: IUserLayoutManager [and its default implementation] have been enhanced with several more methods to do A.L.


"Integrated Modes" -- the user interface part of Aggregated Layouts -- Justin

New "Integrated Modes" Structure and Theme

Modes:

Normal
Preferences
Fragment Construction

This removes dependency on the "Preferences" channel;
should make new structure development easier

The User Preferences as a separate channel is gone.

There are some request parameters that the UI uses to do the integrated-modes editing:
delete node, show move targets, move node, show add targets, etc.
Justin showed what they look like in a URL line

There's no longer a header or footer channel; the lack of a header channel gives the site more control over what appears at the top.

The login channel appears as a wide narrow strip just under the tabs. Again this leaves more clear room for graphics etc. at the top.

If you resize fonts in the browser or change sizes of icons, the layout will adjust accordingly without the site having to twiddle with it.

Justin and Jon Allen put a lot of effort into making it work the same or at least work, on a wide variety of browsers, even Netscape 4.x; making this structure and theme work on NS 4 took about 80 percent of their entire time on the project.

Should we use tables any more, or just use nested divs? Some people were still using NS 4 which does not support DIVs. But they degrade fairly quickly, don't work well.

The framework UI uses very little Javascript. Only the clock, the alert/confirms, and the pop for the window detach are Javascript.

The new User Preferences Mode puts icons, text boxes, etc. all over the place right in the actual layout, to allow the user to modify things.

Demonstration of how a channel will be added; the user chooses which tab they want to add a channel to, then choose which channel, then as a final step where on the tab they want to add it. Up to 2.1 we have had to choose the exact position first and then which channel to put there.

John Allen tried to demonstrate the new stuff but it crashed several times; someone back at the office had tinkered the demo portal the previous evening.

"If the demo crashes, that means it's good code -- it's fresh code." -- Chuck Severance

There is a demo site at http://www.immagic.com/uportal/
From the "im+m Portal Accounts" channel, choose "Aggregated Layouts/Integrated Modes"; that takes you to the 2.2 portal.

Steve: why does the login channel look different? it seems to be in the toolbar of the channel.

Justin: We didn't want people to think of the login channel as a channel. We hacked the stylesheet. We moved the login channel down into the tab area so that the institution could have a cleaner header.

Chuck: I think it is great that every part of even the framework is itself a channel.

Peter: [reactions to implementation details mentioned in passing]
a) I think sending content to the theme stylesheet to get it displayed, is the wrong approach.
b) And the theme stylesheet should not explicitly refer to the name of the login channel. The reason we put it in the header, is so they could be in the same place all the time, and would render the same way as any other channel. if you want to move the login channel somewhere else, you need a different example of something being in the header.
c) It seems intuitive to me for the orange command line [during preferences editing] to be above the tabs.


Proposals for new features -- moderated by Ken

a) Yale's Howard Gilbert's proposal for a new way to do error handling. The uPortal framework code as it is, needs work in this area.
He wanted to be here via speakerphone but there was no speakerphone.

recommendations:
Use try/finally to close constructs
PortalException should not be thrown all the way to Tomcat. Should be captured first and have a more meaningful error message.

We called Susan Bramhall to ask some questions.

The ExceptionHelper is careful to log the error exactly once, and not multiple times as it goes up. The Helper is put into the PortalException class. She thinks it gets called as a result of creating the PortalException.

There are many places in the code where a NullPointerException happens because the database can't be reached; it is far better to throw some other exception, not return null.

Ken: Howard [who was out of the office when we called] needs to show the actual new classes he wrote, and give a couple of examples, before we could make any decision. On August 13, 2003, a few days after the meeting, Howard posted a long message to the developer mailing list about his proposal. Subject "Re: Questions raised about exception handling"

Dan: Howard should also explain the difference between throwing different classes of exceptions, and using the I.D.'s and what is the advantage of the latter.

Susan: Maybe the Columbia people could come up to New Haven and we could have ...

Ken: An "error conference"

John Fereira: Someone at UBC had been talking about automatically contacting a specified person when an error occurs. But what about framework channels? It would be the portal administrator.

UBC was not present, but Ken read two proposals on their behalf. They want to be able to do an HTTPS post and then go to an HTTP page. So, they want to have a configuration parameter so that after a secure login (authentication) they could go to an HTTP page.

Keith at SCT has the SSL channels thing mentioned at the previous developers meeting partly done, should he check in what he has done, or not? He asked some questions and got no answers. HTTPS is a separate cookie space.

Jan: "You will get popups in nested frames if you don't handle SSL and non-SSL content consistently."

Resolution: Ken will suggest on the email that Keith comment out the "Focus" ability and check in the rest of it. He sent this email on August 8.

Ken: UBC wants to add the cababillity for image URLs to be re-written on the fly so they end up being loaded via a proxy. This way the image URLs and the portal page will both be served via https and the annoying browser pop up messages won't appear. We decided that we want to implement UBC's changes.

Jan: Wanted to use log4j directly so we can use categories. That is each message is in a particular category.

Consensus was that we would not do that, but extend LogService with categories, so that we could drop in another implementation behind it when we drop support for 1.3 [see below]

Ken: When should we stop supporting 1.3?

Conclusion was, containers take a long time to switch to a newer major dot release. For example, WebSphere tends to be about a year behind. So Jan said we should wait until 1.5 becomes widely available.

Steve: The PreparedStatements implementation in RDBMServices is not complete enough; we need to make the PreparedStatements field public. [or, make a get for it] [Alex: or make it more complete]

Steve: He wants more published channel metadata. We put two more columns in UP_CHANNEL to note a primary and secondary contact person for each channel.

Kevin: Nick -- swapping out different versions of Xerces. He posted a message to the developer list on July 29 (Subject "Xerces dependency removal status") stating some of the issues he has with particular parsers etc. but he did get it working for Xerces anyhow. check it in?

Kevin: We would like to see an abstraction of the CharacterCache.

Kevin: Enhancements for a character (text only) content channel that does an end run around the transformations for efficiency.

Peter: Be sure to tell developers NOT to use it except as a last resort. It's mostly for legacy applications.

Jan: He wants a factory method for the ChannelManager so he can plug in a different implementation.

Steve: He wants an implementationspecific method for the Stats classes.

Jim: Chuck has been trying to resolve the differences between OKI, JA-Sig, and Michigan.

Ken: Try out aggregated layouts and internationalization. Wrap up implementation by end of September.