This is a prototype site, and still a work in progress. For now please continue to refer to open-services.net as the source of information for the community

Developing OSLC Applications | OSLC

Developing OSLC Applications

Get started with developing OSLC applications

“OSL-whaaaat now?”

Open Services for Lifecycle Collaboration (OSLC) is a community that writes specifications to integrate software. Learn more at Why develop OSLC applications and at our main site.

For a high-level overview of how to add OSLC support to software, we recommend our video “Getting started on implementing OSLC“:

The description on YouTube includes a table of contents and links to references.

Explore our tutorial

For a more detailed look at what goes into OSLC support, read through our tutorial “Integrating Products with OSLC”, which walks you through building an adapter that adds OSLC support to the popular Bugzilla defect-tracking software.

The concepts in the tutorial are broadly applicable to other software.

If you’re building an OSLC provider (in other words, software that outputs OSLC resources), you’ll learn how to

If you’re building an OSLC consumer application, you’ll learn how to:

The tutorial has working sample applications and detailed instructions for running them.

Why develop OSLC applications

Integrating software is hard; we want it to be easier. And we need your help.

We define standardized ways to represent common resources in software development (for example, a defect or a performance test). We also define standardized methods to allow other applications to access, display, preview, find, create, and update those resources.

With standardized resources and methods, any tool can access and manipulate the data and artifacts from any other compliant tool. So instead of a variety of fragile point-to-point integrations you have one common way to connect and integrate many products. It’s not quite plug-and-play, but it’s close.

We want OSLC to succeed because better and easier integrations will save everyone time and money. And we think that software with OSLC integration has a competitive advantage.

Don’t just take our word for it. Icaro Technologies estimated that they could have saved two million dollars over two years if they used OSLC standards for a project with more than 10 integrations. And major industry groups like SPRINT and EADS have decided that OSLC-compliant software can help them collaborate and verify requirements on highly complex products like commercial airplanes.

OSLC specifications are free to adopt, and we want them to spread. So help us out!

Technical foundations

To build software that supports OSLC, you should be familiar with the following concepts:

Linked Data

Linked data is the main technical foundation of all of our specifications. The video below provides a brief overview of the value of linked data and how we implement it with OSLC:

If you’re new to linked data and RDF, we’ve put together a playlist of videos that can help you catch up.

RESTful web architecture and HTTP

You should be familiar with designing RESTful applications.

For a quick primer, we recommend “Learn REST” by Dr. M. Elkstein, particularly these sections:

For OSLC implementations, you must use HTTP protocol.

RDF, Turtle, JSON, and HTML

We require services and resources to be represented in RDF, but you might prefer to supplement that with a variety of machine-readable and human-readable formats like Turtle, JSON, or HTML.

Instead of string parsing and regular expressions, you will definitely want to explore using an RDF parser such as Apache Jena.

OAuth

OSLC does not require OAuth, but it is the most common approach for managing authentication between clients.

Services, resources and design patterns

The OSLC Core specification defines the basic patterns and protocols that any OSLC software must implement. The other workgroups define additional resources or extend existing ones, but they do not add new protocols.

Here are the major resources defined in the OSLC Core specification:

Resource or Pattern Description More information
Service Provider A resource that describes a collection of resources and tells you how to create new resources, find existing resources, or expose a user interface to do either OSLC Primer: Service Provider
Resource Paging A pattern to break long lists of resources into smaller pages, and provide a URL for the next page OSLC Primer: Resource Paging
Queries Standard query string patterns to retrieve a subset of resources or properties OSLC Primer: Query mechanisms
Resource Shapes Documents that define and describe the properties a resources should have, including acceptable values, cardinality, and whether or not those properties are required OSLC Primer: Resource Shapes
Creation Factory A service that creates new resources and (via HTTP POST) and may also provide the Resource Shape for new resources Core 2.0: Creation Factories
Service Provider Catalog A resources that lists a set of ServiceProviders OSLC Primer: ServiceProvider
Delegated User Interface (UI) dialogs A method for embedding an interface to create or find resources inside another tool OSLC Primer: Delegated UI dialogs
UI Previews A method for discovering and displaying a preview of a resource in another tool OSLC Primer: UI Preview

To explore some of our other specifications, the OSLC Core Workgroup maintains a list of OSLC vocabularies and specifications that includes relationship diagrams.

Tools & SDKs

Eclipse Lyo

The Eclipse Lyo project has a variety of tools to help you adopt OSLC specifications:

You do not have to use the Eclipse application to use Eclipse Lyo: Although much of the documentation assumes you will be using Eclipse, the source code is available in a Git repository and much of it does not require the Eclipse application to work.

Sample applications and code

If you’d like to explore some existing code, there are a variety of samples and existing applications available.

The Communications Workgroup has a list of Open Source OSLC projects (along with their licenses).

If you’d like to explore a basic application that provides OSLC Service Provider resources and UI previews, Vijay Kalangumvathakkal of developerWorks has some simple applications available to download and try out.

Our tutorial walks you through a working adapter that adds OSLC Change Management support to Bugzilla and a simple consumer application.

Finally, many of the software development kits include sample applications. The OSLC4J component of Eclipse Lyo has a variety of applications:

  • a stock quote sample applications
  • a Change Management provider
  • a Quality Management provider
  • an Automation provider
  • the aforementioned Bugzilla Change Management adapter

The Lyo Client component in Eclipse Lyo includes additional APIs and sample code that addresses a variety of common OSLC use cases including login, OAuth, service discovery, and queries.

The OSLC4Net project includes sample applications if you favor .NET/C#.

OSLC Open Source Node.js Projects

Eclipse/Lyo provides a set of Java based APIs and generative tools to support the creation of OSLC domain servers and integrated client applications. While Eclipse/Lyo provides a very rich and robust platfrom for OSLC development, it has a relatively high learning curve and that can increase development time, costs and risks.

OSLC4JS represents a set of related Open Source projects supporting the creation and integration of OSLC based client and server applications that leverage the dynamic and asynchronous capabilities of JavaScript and Node.js. The LDP Service and OSLC Service projects provide Express.js middleware components that can be used to add LDP and/or OSLC services to any Express Web application. The OSLC Browser and OSLC Server projects use these services to create sample OSLC client and server apps that can easily and dynamically adapted to any OSLC domain, extensions to domains, and/or integrations between domains.

OSLC4JS’s goal is to minimize the cost of developing the OSLC specifications, reference implementation and test suites. The OASIS OSLC specifications would also benefit from a reference implementation in dynamic language such as JavaScript.

The OSLC4JS Projects

The following sections provide a brief description of each OSLC4J sub-project and provide links to the development sites and related work products. The figure below shows the relationship between the modules created in the projects, and how they are assembled into a Web application.

Image OSLC4JS Schematic

Adapter middleware in the figure represents some Express.js middleware component that provides CRUD access to some existing data source. This provides a simple way for vendors to provide OSLC access to their data sources without having to implement the details of OSLC and/or LDP.

A oslc4js Slack Channel has been created to facilitate collaborative development of these Open Source Projects.

Project Description More information
OSLC Browser A sample OSLC Web application that uses the OSLC Service to provide a means of browsing OSLC resources. OSLC Browser allows you to configure a connection pool of contributing OSLC servers, and provides a convenient means of browsing the content contributed by those servers. The federation of thigs information is supported by the OSLC service with can also support OSLC domains, extension to domains, integration between domains. This allows the OSLC Browser to act as a federation hub for OSLC resources where stakeholder viewpoints, views (i.e., active dashboards) can be created to support integration needs. Mural Design Wiki Track & Plan Bluemix App app route
OSLC Client API A simple Node.js asynchronous OSLC client API to facilitate rich application development in JavaScript. This API may be attractive to client developers who wish to access OSLC capabilities and resources through a more logical API abstraction rather than more raw REST services. Wiki Track & Plan npm package
OSLC Service A generic Node.js Express middleware OSLC 3.0 service that can support any domain and can be easily adapted to any applicable data source. This services also utilizes the LDP Service. Wiki Track & Plan npm package
OSLC Server A minimal OSLC server that uses the oslc-service and ldp-service and can be accessed using a browser REST client. An instance of this server is deployed to IBM Bluemix in order to provide a platform for OSLC experimentation and testing. Wiki Track & Plan Bluemix App app route
LDP App A sample Linked Data Platform (LDP) Web application that uses the LDP Service and supports CRUD operations and a graph of linked data. Wiki Track & Plan Bluemix App app route
LDP Service Express middleware providing LDP capabilities to Web apps, with storage of JSON-DL in MongoDB. Wiki Track & Plan npm package