Blue Oak Council

License Test Suite

This document sets out a list of well known projects, placed in a loose taxonomy, that serve as a checklist when drafting public software license terms. When thinking about how a new license will work when applied to different kinds of software, running through this list can help.

This list can also serve as a research list for lawyers without technical backgrounds, who need to develop a sense of the kinds of software available.

Last Updated: February 2, 2022

We can think of software projects as falling into a few general categories and subcategories.

Skip To: Applications Components Development Tools Platforms

Applications

meet a particular, non-technical need for end-users

Standalone Applications

provide all the functionality needed to meet the end-user need

Examples:

Plugins

add more functionality to larger applications

Examples:

Server Applications

provide a server for client applications to contact

Examples:

Client Applications

contact server applications

Examples:

Peer-to-Peer Applications

act as both clients and servers

Examples:

Components

are used to build applications

Libraries

provide code for developers to invoke

Examples:

Frameworks

invoke code that developers write

Examples:

Services

communicate with other programs

Examples:

Development Tools

help developers make software

Editors

are the applications programmers use to write code

Examples:

Generators

output source code

Examples:

Analyzers

take source code as input, and output useful information

Examples:

Compilers

take source code as input, and output binary code

Examples:

Debuggers

help programmers run programs step-by-step

Examples:

Package Managers

download and install software components

Examples:

Revision Control Systems

manage changes to source code over time

Examples:

Platforms

help users run applications

Kernels

makes computer hardware available for computer software to use

Examples:

Base Systems

perform small tasks from the command line

Examples:

Interpreters

run programs written in interpreted languages

Examples:

Orchestrators

set each each part of an application up to be run, and connect them together

Examples: