Create parallel-libs subproject in LLVM
authorJason Henline <jhen@google.com>
Wed, 22 Jun 2016 18:24:46 +0000 (18:24 +0000)
committerJason Henline <jhen@google.com>
Wed, 22 Jun 2016 18:24:46 +0000 (18:24 +0000)
This initial commit just sets up the basic directory structure and includes the
charter document as README.rst to describe the purpose of the project.

llvm-svn: 273452

parallel-libs/README.rst [new file with mode: 0644]

diff --git a/parallel-libs/README.rst b/parallel-libs/README.rst
new file mode 100644 (file)
index 0000000..5fe9517
--- /dev/null
@@ -0,0 +1,90 @@
+=====================================================
+LLVM parallel-libs Subproject Charter
+=====================================================
+
+----------------------------------------------
+Description
+----------------------------------------------
+The LLVM open source project will contain a subproject named `parallel-libs`
+which will host the development of libraries which are aimed at enabling
+parallelism in code and which are also closely tied to compiler technology.
+Examples of libraries suitable for hosting within the `parallel-libs`
+subproject are runtime libraries and parallel math libraries. The initial
+candidates for inclusion in this subproject are **StreamExecutor** and
+**libomptarget** which would live in the `streamexecutor` and `libomptarget`
+subdirectories of `parallel-libs`, respectively.
+
+The `parallel-libs` project will host a collection of libraries where each
+library may be dependent on other libraries from the project or may be
+completely independent of any other libraries in the project. The rationale for
+hosting independent libraries within the same subproject is that all libraries
+in the project are providing related functionality that lives at the
+intersection of parallelism and compiler technology. It is expected that some
+libraries which initially began as independent will develop dependencies over
+time either between existing libraries or by extracting common code that can be
+used by each. One of the purposes of this subproject is to provide a working
+space where such refactoring and code sharing can take place.
+
+Libraries in the `parallel-libs` subproject may also depend on the LLVM core
+libraries. This will be useful for avoiding duplication of code within the LLVM
+project for common utilities such as those found in the LLVM support library.
+
+
+----------------------------------------------
+Requirements
+----------------------------------------------
+Libraries included in the `parallel-libs` subproject must strive to achieve the
+following requirements:
+
+1. Adhere to the LLVM coding standards.
+2. Use the LLVM build and test infrastructure.
+3. Be released under LLVM's license.
+
+
+Coding standards
+----------------
+Libraries in `parallel-libs` will match the LLVM coding standards. For existing
+projects being checked into the subproject as-is, an exception will be made
+during the initial check-in, with the understanding that the code will be
+promptly updated to follow the standards. Therefore, a three month grace period
+will be allowed for new libraries to meet the LLVM coding standards.
+
+Additional exceptions to strict adherence to the LLVM coding standards may be
+allowed in certain other cases, but the reasons for such exceptions must be
+discussed and documented on a case-by-case basis.
+
+
+LLVM build and test infrastructure
+----------------------------------
+Using the LLVM build and test infrastructure currently means using `cmake` for
+building, `lit` for testing, and `buildbot` for automating build and testing.
+This project will follow the main LLVM project conventions here and track them
+as they evolve.
+
+Each subproject library will be able to build separately without a single,
+unified cmake file, but each subproject libraries will also be integrated into
+the LLVM build so they can be built directly from the top level of the LLVM
+cmake infrastructure.
+
+
+LLVM license
+------------
+For simplicity, the `parallel-libs` project will use the normal LLVM license.
+While some runtime libraries use a dual license scheme in LLVM, we anticipate
+the project removing the need for this eventually and in the interim follow the
+simpler but still permissive license. Among other things, this makes it
+straightforward for these libraries to re-use core LLVM libraries where
+appropriate.
+
+
+----------------------------------------------
+Mailing List and Bugs
+----------------------------------------------
+Two mailing lists will be set up for the project:
+
+1. parallel-libs-dev@lists.llvm.org for discussions among project developers, and
+2. parallel-libs-commits@lists.llvm.org for patches and commits to the project.
+
+Each subproject library will manage its own components in Bugzilla. So, for
+example, there can be several Bugzilla components for different parts of
+StreamExecutor, etc.