Glossary
========

.. glossary::

    hardware certification

        A process of ensuring that a specific device works well with Ubuntu.
        For more details see our certification program:
        
        http://www.canonical.com/engineering-services/certification/hardware-certification 
    
    hardware certification team

        A team inside Canonical working on :term:`Hardware Certification`.

    Checkbox
        
        Checkbox is a hardware testing tool developed by Canonical for
        certifying hardware with Ubuntu. Checkbox is free software and is
        available at http://launchpad.net/checkbox. The ``checkbox`` package is
        pre-installed on all Ubuntu systems

    Checkbox-ng
  
	This is the actual direct replacement for Checkbox. It provides a
	few binaries that can do end-user testing, and which leverage
	Plainbox as a library to do the heavy lifting. This lives in the
	``checkbox-ng`` package for the binaries, and
	``python3-checkbox-ng`` for the core functionality.

    Plainbox

        Plainbox is a rewrite of Checkbox with the aim of improving internal
        architecture, testability, robustness, quality and speed. It is
        currently under active development. It is not pre-installed on Ubuntu.
        It is developed inside the Checkbox code repository. In common
	use, the term *Plainbox* can refer to either of two things:

         * The core library (``python3-plainbox``). ``python3-plainbox`` is
           usually installed implicitly, as most of our tools depend on it.

         * The ``plainbox`` utility/binary, which is essentially a
           command-line swiss-army frontend to all of the library's
           functionality. It's useful for develoment and diagnostics but not
           necessary for end-user work. ``plainbox`` is usually installed
           explicitly if needed.

    whitelist

        Whitelists are text files used by Checkbox to select jobs for
        execution.  They can include simple regular expressions to match and
        pick many similar jobs at once. For more information see
        :doc:`Checkbox Whitelist Files <author/whitelists>`

    job

        Jobs are smallest units of testing that can be performed by either
        Checkbox or Plainbox. All jobs have an unique name. There are many
        types of jobs, some are fully automated others are fully manual. Some
        jobs are only an implementation detail and a part of the internal
        architecture of Checkbox

    provider

        A container for jobs, whitelists, private executables and data.
        Providers are the foundation of Plainbox as they *provide* all of the
        content. Providers can be created and managed by any entity, separately
        from the Checkbox project.

    namespace

        A private space for naming job definitions. Each job definition has a
        partial identifier and a full identifier (typically just called job
        id).  The partial identifier is encoded in job definition file. The
        full identifier is composed of the namespace of a job provider and the
        partial identifier, joined with the double-colon string ``::``.

    resources

        Resources are collections of key-value data sets that are generated by
        special resource jobs. They are extensively used to indicate hardware
        or software dependencies. For example a bluetooth test may indicate it
        requires bluetooth hardware and appropriate software packages
        installed.

    requirement program

        Requirement programs are small (one to few lines) programs that use a
        subset of python to execute some code against resources. They are what
        actually describes the relationship of a Job to some Resources. For
        example a resource program ``package.name == "bluez"`` indicates that
        at least one resource generated by the ``package`` job has a key
        ``name`` equal to the string ``bluez``. 

    attachment
        
        Attachments are a special type of a Job that can creates an attachment
        record in the submission.xml file. They are commonly used to include
        basic system information files and output of certain commands which can
        aid in system certification.

    certification website

        The website https://certification.canonical.com/

    Canonical ID

        A number assigned to the specific device (laptop, desktop or server) by
        Canonical. This number is used on the Certification Website and by the
        Hardware Certification Team. It is an internal bookkeeping identifier
        used in our labs.

    Secure ID

        An identifier, similar to Canonical ID, used for hardware
        certification. This identifier is used when interacting with the
        Certification Website, it does not reveal anything about the actual
        hardware (like the manufacturer name or device name)

    pypi

        The Python Package Index where any developer can share their python
        programs and libraries. Pypi is available at:
        https://pypi.python.org/pypi. 

    Vagrant

        Vagrant is command line program intended for software developers to
        quickly create portable virtual environments for testing their software
        in a production operating system. Vagrant is free software and is
        available at http://www.vagrantup.com/

    VirtualBox

        VirtualBox is a free, powerful desktop vitalization software.
        VirtualBox is available in the Ubuntu Software Center and at
        https://www.virtualbox.org/
