Skip to content

Commit fd46758

Browse files
author
Nisha K
committed
Docs: Added faq.md and modified roadmap.md
Signed-off-by: Nisha K <[email protected]>
1 parent b7a90f0 commit fd46758

File tree

3 files changed

+32
-43
lines changed

3 files changed

+32
-43
lines changed

README.md

+3-14
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@
44

55
Tern is an inspection tool to find the metadata of the packages installed in a container image. It runs scripts from the "command library" against the container and collates the information into a Bill of Materials (BOM) report. Tern gives you a deeper understanding of your container's bill of materials so you can make better decisions about your container based infrastructure, integration and deployment strategies.
66

7-
## Why Tern?
8-
Tern was created to help developers meet open source compliance requirements for containers. Tools like Docker make it easy to build and distribute containers but keeping track of what is installed in the container is left to dev or devops teams. Knowing your container's Bill of Materials not only helps you meet your open source compliance obligations, but helps you debug integration and build errors and identify vulnerable packages in your running containers easily.
9-
107
## Table of Contents
8+
- [FAQ](/docs/faq.md)
119
- [Getting Started](#getting-started)
1210
- [Project Status](#project-status)
13-
- [Documentation](#documetation)
11+
- [Documentation](#documentation)
1412
- [Contributing](#contributing)
1513
- [Glossary of Terms](/docs/glossary.md)
1614
- [Architecture](/docs/architecture.md)
@@ -59,16 +57,7 @@ $ python tests/<test file>.py
5957
```
6058
## Project Status<a name="project-status"/>
6159

62-
Tern currently has these features:
63-
* A Cache to store layers with the packages that are installed in those layers
64-
* A report containing a line-by-line 'walkthrough' of the Dockerfile to say what packages were installed in each line
65-
* A summary report
66-
* The complete list of dependencies are retrieved
67-
68-
Current work:
69-
* Code refactoring
70-
* Layering of container filesystems one by one
71-
* Source retrieval
60+
We try to keep the [project roadmap](./docs/project-roadmap.md) as up to date as possible. We are currently working on Release 0.1.0.
7261

7362
## Documentation<a name="documentation"/>
7463
Architecture, function blocks, code descriptions and the project roadmap are located in the docs folder. We also welcome contributions to the documentation. See the [contributing guide](/CONTRIBUTING.md) to find out how to submit changes.

docs/faq.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# FAQ (Work in Progress)
2+
3+
## Why Tern?
4+
Tern was created to help developers meet open source compliance requirements for containers. Open source software compliance is a hard problem in general but it gets harder with containers due to the ability to reuse diff filesystems. How those filesystems were created is still an ad hoc process. If you happen to have an lwn subscription you can read an article about it [here](https://lwn.net/Articles/752982/).
5+
6+
The first step in meeting open source compliance obligations is knowing your container's Bill of Materials or BoM. This knowledge gives you some added benefits like debugging integration and build errors and identifying vulnerable packages in your running containers.
7+
8+
## Why not filesystem scanning?
9+
Static analysis is a reasonable approach to find software components and there are tools like [clair](https://github.com/coreos/clair) that create a BoM as part of vulnerability scanning. Some things to consider when using static analysis is the number of false positives that are detected, the time it takes to scan numerous files (some of which may not even be needed for an application to work) and the reliance on data that may not be open sourced. Tern is not meant to be a replacement for static analysis but simply a tool that automates some of the methods that developers and sysadmins use anyway.
10+
11+
## Why Python?
12+
Python is well suited for easy string formatting which is most of the work that Tern does.

docs/project-roadmap.md

+17-29
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,19 @@
11
# Project Road Map
22

3-
## Guiding Principles
4-
5-
* Tern is mean to provide guidance for building more compliant containers by
6-
* Analyzing an existing container for packages that are installed
7-
* Extracting the sources for packages governed by licenses that require sources to be provided
8-
* Rebuilding the container using equivalent packages for which the provenance (exact source code) is known
9-
10-
* The output that Tern creates should not be the source of truth for what is installed in the container nor be used without review. This is because the universe of software installation, package creation and management solutions including dependency management solutions is quite large. There are many different methods of discerning the contents of the container and their provenances but none of them are 100% accurate. In the end, only the person building the container knows for sure what it is meant to contain.
11-
12-
* Tern is not meant to be the 'silver bullet' for container compliance. Tern cannot tell you whether the packages installed on your container are 'compliant'.It is not a lawyer and is not meant to replace your compliance and/or legal team. It is only meant to automate some of the tasks that you may have to do yourself in order to meet the legal obligations for the software installed.
13-
14-
## Package information extraction
15-
16-
* Integration with a static analysis tool - Research
17-
* SPDX document output
18-
* YAML document output - Phase 3
19-
* Check container against a ruleset - Backlog
20-
21-
## Source Retrieval
22-
23-
* Implementation of sources tarball retrieval - Phase 4
24-
* Configuration to point to an external repository for scripts - Backlog
25-
* Configuration to point to an external database - Research
26-
27-
## Reconstruct a compliant image
28-
29-
* Use configured database of known good binaries - Phase 5
30-
* Use container labeling for metadata like build number and content digest
31-
* Use container signing
3+
## 2018
4+
The end goal for 2018 is to make the project relevant to real world containers and to make it easy to contribute to it. Milestones for the project can be discussed on the community slack channel or the public forum. See the [contributing guide](../CONTRIBUTING.md) for information on how to join the conversation.
5+
6+
## Release 0.1.0
7+
- Create isolated environments to operate on without using other dependencies
8+
- Analyze a container image layer by layer
9+
- Optimize shell script workload for package managers
10+
11+
## Release 0.2.0
12+
- Work on raw container images along with Dockerfiles
13+
- Ability to track true base images (FROM scratch in Dockerfiles)
14+
- Support for images created from multiple imports
15+
- Support for ADD, COPY and WORKDIR
16+
17+
## Release 0.3.0
18+
- Hardening with a variety of Dockerfiles
19+
- Support for multistage build Dockerfiles

0 commit comments

Comments
 (0)