Professional Documents
Culture Documents
KRICE Kuali Rice: Kuali Rice Roadmap
KRICE Kuali Rice: Kuali Rice Roadmap
Introduction
Contents
The Kuali Rice Charter specifies that the
Application Roadmap Committeeis responsible
for defining the overall Kuali Rice Project 1. Introduction
Roadmap. That includes defining both 2. Vision
functional and technical requirements along 3. Background
with expected timelines for development. 4. Release Cycles
Technical enhancements and requirements will 5. The Roadmap Process
be submitted to the ARC from the Technology 6. Themes and Enhancements
Roadmap Committee (TRC)to be prioritized 7. Release Plans
among the functional requirements.
• First and foremost Kuali Rice is highly valued and supports the needs of the Kuali Applications by
providing:
° Foundational middleware that the Kuali Applications are built on
° A software development framework that simplifies, standardizes, and accelerates development
Background
The Kuali Rice project originally grew out of the Kuali Financial System (KFS) project when the architects
realized that many of the services and middleware components developed for KFS could be leveraged as
Kuali grew to develop additional applications. The project was officially chartered in April of 2009 with a
board of directors, and new supporting member institutions.
The following diagram is a conceptual representation of Rice. It represents both the application
development framework of Rice, as well as the middleware services and components. It is divided
into application development "tiers" and middleware "service domains". The blue boxes represent
components and features available in the 1.0 version of Rice. The gray boxes represent potential future
high level components and features that have been imagined and discussed.
The Kuali Rice Nervous System (KNS) is primarily represented in the application development tiers
of Presentation, Controller, and Persistencen as green boxes. KNS has objects and services that help
render user interfaces in the Presentation tier, like tag libraries and java server page templates. KNS
also includes controller objects for typical user interaction on screens like create, update, delete and
read operations on screens. The Persistence layer includes KNS features that make it easy and reliable
to store business objects and data that your applications produce. It also includes a key metadata
management system in the form of a Data Dictionary component that is used for coordinating services
and controllers in the other service tiers.
The KNS also has ease of use features to quickly integrate with the various middleware across all service
domains in the Services tier. Services in the Services Tier are divided into five service domain areas:
• Workflow and Messaging Domain - Includes Kuali Enterprise Workflow (KEW) and Kuali
Enterprise Notification (KEN) message notification engines. Future work is anticipated in developing
additional application integration and system connectors.
• Business Rules Domain - Includes frameworks for business rule development and execution
as well as information delivery and analysis. Current strategy is to leverage work done on Kuali
Student project that is building a rule engine on top of the open source Drools product.
• Identity and Access Management - Kuali Identity Management (KIM) provides services for
authentication and authorization management. It provides plug ins for common authentication
systems and robust authorization services for defining and implementing data access control policies
and procedures.
• Data Management Services - Includes "Master Data" services for holistic management
of common data (persons, organizations, facilities, budgets, etc.) shared across all the
applications. Proposed services in this domain include Kuali Organization Management (KOM) and
Kuali Entity Management (KEM).
• General / Core Services domain - Includes general purpose utility services for overall system
configurations and supporting functionalities like extensible notes and attachments.
In addition to the service domains, Kuali Rice includes a Service Bus (KSB). The service bus provides
service management and routing functionalities. It is anticipated that institutions may deploy Kuali
applications using other external service buses in addition to, or in replacement of, KSB. A major
principle set forth in the Kuali Rice charter is the "not invented here" principle. As Kuali Rice evolves
careful consideration will be given on adopting or using already available open source solutions.
Replacing the KSB with an acceptable open source alternative is being planned.
KRICE Kuali Rice : Rice Roadmap - Release Cycles
This roadmap shall outline the intended major and minor releases, along with assumed timeframes and
expectations for delivering tier 1 and 2 enhancements. It will suggest tier 3 out of scope enhancements
that other interested parties are encouraged to deliver within similar timeframes.
The roadmap and the release cycle are inter-dependent. In order to plan how functionality and
technology are evolved in Rice, we need to understand what the release cycle will look like, and how it
will relate to the releases of Kuali Applications (KFS, KS, KC, etc.).
• Major Versions are intended to be long-lived versions of the software that consist of numerous
minor versions. The decision to create a new major version will be the result of the need for major
changes that cannot be successfully implemented without breaking version compatibility. It is
permitted that different major versions of the software will not be compatible with each other.
Applications that are created in later versions of Rice may not be compatible with earlier major
versions of Rice. However, a reasonable and well-documented upgrade path should still be made
available from a previous major version of the software to it's next major version.
• Minor Versions are where most of the new work on the software will be done. It is intended that
different minor versions within the same major version should be compatible.
• Patch Versions should be created to address security issues or bugs with an existing minor version
release. Different patch versions within the same minor version should be fully compatible with each
other.
The following graphic illustrates the relationship between the different version types.
Release Lifespan
Each of the different types of Kuali Rice versions will have an expected lifespan which will help to
determine how best to schedule roadmap items into a release.
Major Version Lifespan
As mentioned previously, a major version of Kuali Rice should represent large architectural changes or
paradigm shifts which could result in changes that cause incompatibility with previous versions of the
software. Efforts should be made to reduce this impact as much as possible. However, in order to allow
for continued evolution of the Kuali Rice software, these types of changes will be necessary.
Additionally, a major version will likely be started in parallel with work happening on a previous major
version. Subsequently, once a new major version is released, maintenance work will continue on the
previous major version until it's end-of-life (see End-Of-Life below).
Because of the impact that major versions will have on existing applications, new major versions should
be created only when necessary and should have a long lifespan.
Ideally, a new major version of Kuali Rice should not occur any more frequently then every 2-3 years.
Minor versions will be where the majority of the new Kuali Rice work will happen. Generally, other Kuali
applications will work to align their releases with a specific minor version of Rice. The goal for minor
versions of Rice should be to maintain a relatively short release cycle in order to facilitate pushing out
new functionality for Kuali applications or other implementers in a reasonable time line.
However, minor versions of the software will still need to go through a rigorous quality assurance cycle in
order to ensure that the version is as stable as possible. This will require that sufficient time be allocated
for this during the release cycle of the minor version.
Taking all of this into consideration, the Kuali Rice team should strive for minor version releases every
6-9 months.
Patch versions are to be primarily used for bug fixes and security issues. A minor version of Kuali Rice
will continue to be maintained with patches until the next minor version is released. Once the next minor
version of the software is released, previous minor versions will not continue to receive patches.
Because of the bug fixing and security focus of patch releases, these should be released as often as
needed.
Lifespan Summary
Ideally, the Kuali Rice work will be done in advance of the application work and be completed prior to the
Kuali application's quality assurance period to allow time for the Kuali application to properly integrate
and test the changes. In practice, this can be difficult to accomplish. However, this should be a goal of
increasing importance as we continue to move Kuali Rice and the other Kuali applications forward.
The targeted version of Kuali Rice should be released to the public prior or in conjunction with the public
release of the Kuali application software on which it is dependent.
This could probably use some more detail and a stronger statement on the actual process.
A major version will reach it's end-of-life once two subsequent major versions have been
released.
For example, Kuali Rice 1.x will reach it's end-of-life once Kuali Rice 3.0 is released.
During the intervening period, patches will continue to be made available when needed for the previous
major version of the software.
Release Cycle
The Kuali Rice release cycle consists of a few distinct phases as outlined in the charter.
Note that these phases are applicable to major and minor version work. Patch versions will be driven
based on bug reports from the community and other Kuali applications and will happen during the "Post-
Release Support" phase.
Pre-Release Versions
In order to allow for pre-release testing and upgrade planning by the community, Kuali Rice will provide
early availability releases of the software to the public. Each of these "releases" will fall into one of three
categories:
1. Development Builds
2. Milestone Releases
3. Release Candidates
1. Licensing vigilance needs to be maintained in an ongoing fashion on the project. All licensing
policies and procedures must be followed rigorously in order to prevent accidental release of code or
binaries which are using improperly licensed code or libraries.
2. Release notes and changelog documentation needs to be maintained and updated in parallel and in
real-time to the development work. This will facilitate others being able to successfully work with the
early releases and test them prior to the generally available packaged release and documentation.
Development Builds
The development process of Kuali Rice is backed by a continuous integration environment in which
the software is continually built and automatically tested. This environment can be used to create
development builds of the software for those that are interested in working with very early and possibly
unstable versions of the software. The primary customers for these builds would be those in the
community that might want to apply patches to their local implementation or the other Kuali applications
which might be working with these development builds in parallel with development of their application.
Alternatively, the source code for the latest version will be publicly available at all times in source control
for those that want to obtain a copy of it.
Milestone Releases
A milestone release will represent a point in time in the release and development cycle when a major set
of enhancements or changes are completed. A minor version may only have one or two milestones while
a new major version may have many more.
What constitutes the milestones for a particular version of Kuali Rice will be decided during the planning
phase and will be based on the major roadmap items of which that release is composed. A milestone
release should be partially stable such that those who want to begin working with it can. It should be
accompanied by some documentation which gives interested parties the information they need to get
started with it. However, it is not required that this documentation will be complete.
Generally speaking, each version should have at least one milestone release prior to the beginning of the
Quality Assurance phase.
Release Candidates
A release candidate represents a version of the software with potential to be the final public release.
The intention of making a release candidate available is to allow for those in the community to work
with the software and report any bugs they may find. If there are no fatal bugs found with the release
candidate within a specified period of time, then the version is ready for release. If fatal bugs are found,
they will be fixed and a subsequent release candidate will be made available. A release candidate should
be accompanied with a mostly complete set of documentation.
Ideally, each version of the software should only go through 1 or 2 release candidate versions prior to the
generally available public release.
Should we define a maximum period of time during which a release can be in RC mode? a
month? longer?
KRICE Kuali Rice : Rice Roadmap Process
The Kuali Rice community has adopted a process and terminology similar to that used by Eclipse as
described in the Eclipse Roadmap.
There are three main parts to our roadmap:
1. Vision and background - Information about the Rice community, the vision articulated in the
community charter, and our strategic goals.
2. Themes and Enhancements - Describes the application areas, strategic drivers and use cases,
and requirements characterizing the purposes and needs which the Rice community is working
toward. This section also helps to describe the scope and priority for our work.
3. Release Plans - Describes the development efforts in terms of planned releases and a timeline for
their availability
Process Overview
A picture is worth 1,000 words...
The graphic below describes the people, the tools, and the processes involved in the evolution of the
Kuali Rice Roadmap. Our community endeavors to make the process of evolving the roadmap open,
transparent, inclusive, and predictable. The process itself is likely to evolve as our community evolves so
please feel free to contribute that evolution. One way to do that is to offer comments directly on these
pages.
For more information about the Roadmap Committees and how they fit into the overall Rice governance
visit the Rice project governance area in Confluence.
Technology
The Kuali Rice Community uses Jira to manage our software roadmap. Discreet items are entered into the
Jira project as either one of:
• Planned Enhancement
• Research Item
• Suggestion
Once items are entered into Jira, a community conversation can take place about the item. This
conversation, and the rich information about the item ensures that the ARC and TRC are making informed
prioritization decisions. It also ensures a high level of transparency in the process as well as the direction
of the Rice software.
Process
During the Annual Roadmap development the ARC and TRC will form a joint task force to:
During the Semi-Annual Roadmap updates the ARC and TRC will re-validate priorities, adjust versions if
necessary, re-plan based on completed research, etc. An updated roadmap document may be produced.
The ARC and TRC will periodically review suggestions made for Rice enhancements and work suggestions
into the regular roadmap process. Suggestions that come from anyone in our community will be
considered input for the annual and semi-annual roadmap development activities.
Ad-Hoc Suggestions
Anyone can make a suggestion to influence the Rice roadmap. This is done using the Rice Roadmap Jira
project. The ARC and TRC will review suggestions periodically and consider suggestions as part of the
input into prioritization exercises.
Voting
The Kuali Rice Application Roadmap Committee is the group ultimately responsible for prioritizing the
roadmap. This group is made up of representatives from each of the Kuali Application Projects, and a
representative of Rice from the perspective independent of the Kuali Application Projects. Each item in
the roadmap is prioritized separately by each of the voting representatives, and from these priorities an
overall priority score is assigned to each item.
KRICE Kuali Rice : Rice Roadmap - Enhancement Requests and Themes
Introduction
In this section we capture the needs of our community that the Rice team will address. These needs are
expressed as a set of high level "Enhancement Requests" and organized into different "Themes". These
requests are captured from the needs expressed by the Kuali application projects, and those expressed
by organizations implementing and using Rice beyond the scope of the Kuali application projects. Each of
these constituents are represented in Rice governance provided through the Board, the ARC and the TRC.
The enhancement requests represented in this roadmap are a combination of change requests that come
from both experience using Rice as well as imagination of innovations which we can enable.
Themes
We have collected these requests into "Themes" as an aid in understanding related sets of requirements.
Themes provide a way to classify our community's needs, and may include both specific functionality and
general characteristics like performance, swapability, and robustness. The themes are:
Themes Description
Versioning Compatibility
Support for backward
compatibility between Rice
versions
Effort Estimates
Each of the roadmap items has an effort estimate associated with it. Here is a description of each of
those, including example roadmap items that fall under that effort estimate.
Theme - Usability
The following Requests have been classified into the "Usability" theme. This theme represents those
things that make using Kuali software easier for end users. Examples of usability items are:
• Ease of navigation
• Consistent error handling
• Consistent and unambiguous help system
The following Requests have been classified into the "Development Ease of Use" theme. This theme
represents changes that facilitate a Kuali software developer in the construction of Kuali applications.
Examples include"
The following Requests have been classified into the "Ease of Implementation" theme. This theme
represents change requests that make it easier to deploy Kuali software into various environments that
use a variety of different hardware and software configurations. It includes things like:
Theme - Modularity
Rice strives to create code that is modular. This results in many benefits including:
The following Requests have been classified into the "Service Orientation" theme. This theme
represents change requests related to making Kuali software more service oriented by building abstract
interfaces.
The following Requests have been classified into the "Kuali Application Business Drivers" theme. This
theme represents the functional needs of the Kuali Applications that are common amongst all the
applications. Everyone developing Kuali software should look for opportunities of making the business
functions shareable and common for all other applications. Common types of business drivers include:
The following Requests have been classified into the "Adopting Existing Code" theme. This theme
represents the desire to engage with other horizontal open source software projects and use "best of
breed" solutions, integrate them into Kuali Rice, and participate in those community's. This direction
provides the following benefits:
• Minimizes the Rice code footprint that needs to be supported and maintained.
• Maximizes the amount of our community effort that goes into meeting the unique needs of our
community.
• Increases Rice's resilience to technology trends as diverse communities evolve their components
• Reduces risks
• Increases the potential pool of talent who will be able to contribute to Rice
The following Requests have been classified into the "Industry Standards" theme. This theme represents
opportunities to leverage new or emerging standards that make Kuali software interoperable with other
systems and software. Examples of Industry Standards include:
The following Requests have been classified into the "Project Standardization" theme. This theme
represents changes that make Kuali Rice software more consistent and efficient. It includes things like:
• Naming conventions
• Documentation standards
• Standards for messaging and error handling
The following Requests have been classified into the "Versioning Compatibility" theme. This theme
includes changes that facilitate interoperability between various Kuali software products. It includes both
framework compatibility and product compatibility like:
Theme - Accessibility
The following Requests have been classified into the "Accessibility" theme. Accessibilty includes changes
that help ensure Kuali Rice software complies with regulations regarding support for individuals with
disabilities. It includes:
The following Requests have been classified into the "Internationalization and Localization" theme. This
theme represents changes necessary to help deploy and use Kuali Rice software in locations outside of
the United States with support for different languages and country conventions. It includes things like:
Key Themes for Release 1.1: Version Compatibility, Modularity, Ease of Implementation, Kuali
Application Business Drivers, Industry Standards, Usability.
Assumptions:
Key Themes for Release 1.2: Modularity, Development Ease of Use, Usability, Kuali Application
Business Drivers, Ease of Implementation, Service Orientation, Version Compatibility.
Assumptions:
Key Themes for Release 2.0: Development Ease of Use, Platform Support, Kuali Application Business
Drivers, Service Orientation, Ease of Implementation, Modularity, Internationalization, Industry
Standards, Usability, Project Standardization, Adopting Existing Code.
Assumptions:
KR - Roadmap - Not currently planned for release (Kuali: Jira) (41 issues)
T Key Summary
KRRM-77 Implement "Remove/Replace
Principal" functionality
KRRM-75 Consolidate Notes and
Attachments between KNS and
KEW and KS
KRRM-83 Add the KFS Database Description
Screens and functionality to Rice
KRRM-41 Federated Identity Management
Services
KRRM-35 Award Budget - Data Management
Services
KRRM-23 Implement a user interface for
making changes to various aspects
of the Data Dictionary
KRRM-17 Extract Batch Framework from KFS
into Rice
KRRM-16 Improved Error Handling and User
Messages
KRRM-74 Implement Referential Integrity on
KEW database tables
KRRM-62 Transitioning of Service Contracts
to Independent Product
Deliverables
KRRM-58 Convert KEN user interfaces to use
the KNS
KRRM-48 Modularization and delivery of
Kuali Rice web content and web
modules
KRRM-36 BPEL / BPM Integration and
Support
KRRM-31 RIA (Rich Internet Application) UI
Frameworks
KRRM-28 Integration support for external
Document Management Systems
KRRM-18 Extract and consolidate "Portal"
frameworks from KFS, Rice, etc.
into a shared framework for
creating our portals
KRRM-15 Remaining improvements to
handling and consistency of dates
and timestamps
KRRM-14 Improve Capabilities of Exception
Routing
KRRM-3 Accessibility Standards
KRRM-63 Work towards a common User
Interaction Model (UIM)
KRRM-61 Convert the KSB User Interfaces to
use the KNS
KRRM-47 Upgrade underlying web
framework used by the KNS
(Struts)
KRRM-45 RESTful service architecture
KRRM-44 Security Metadata - Data
Dictionary enhancements
KRRM-39 Application Connectors
KRRM-38 JMX - Java Management
Extensions Support
KRRM-37 RSS Support
KRRM-34 KIM Integration with Internet 2
Grouper product
KRRM-32 Mobile Application Support
KRRM-27 Support for different DBMS
platforms
KRRM-24 Add support for "versionable"
documents
KRRM-4 Replace KSB with alternative ESB
KRRM-72 Continued enhancement of Kuali
Rice sample applications
KRRM-53 Support for building JSR 168/JSR
286 Portlet applications
KRRM-42 Common Data Warehouse / Marts
KRRM-40 Directory / Registry Integration
KRRM-64 Work on a strategy for User
Interface that can leverage a
common dictionary service model
KRRM-33 Adobe PDF Form Plug-In Support
KRRM-19 Navigational Improvements in the
KNS
KRRM-6 Batch File Scheduler and Monitor
KRRM-43 Common BI and Reporting Support