Skip to content

Commit 872a59e

Browse files
committed
Add more explanation to README.md
[ci skip]
1 parent a62297c commit 872a59e

File tree

1 file changed

+47
-5
lines changed

1 file changed

+47
-5
lines changed

README.md

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,51 @@
11
# python-cybox [![Build Status](https://travis-ci.org/CybOXProject/python-cybox.png)](https://travis-ci.org/CybOXProject/python-cybox)
22

3-
A python library for parsing, manipulating, and generating CybOX content.
4-
5-
This currently consists of only the XML-to-Python bindings files, but in the
6-
future will contain many helper utilities and a more intuitive API.
3+
A Python library for parsing, manipulating, and generating CybOX content.
74

85
For more information about CybOX, see http://cybox.mitre.org.
96

107

8+
## Overview
9+
10+
A primary goal of the python-cybox library is to remain faithful to both the
11+
CybOX standard and to customary Python practices. There are places where these
12+
will conflict, and the goal is to make the library intuitive both to those
13+
familiar with the XML schemas (but less familiar with Python) and also to
14+
experienced Python developers who want to add CybOX support to their programs.
15+
16+
There are currently two levels of APIs for dealing with CybOX content:
17+
18+
- A low-level API is provided by auto-generated XML Schema - Python class
19+
bindings. These bindings were generated using
20+
[generateDS](http://www.rexx.com/~dkuhlman/generateDS.html). With these,
21+
any CybOX content can be parsed from or written to XML, but requires a bit
22+
more knowledge of the actual CybOX schemas. These "binding classes" are all
23+
located in the `cybox.bindings` package.
24+
- A higher-level API consisting of manually designed Python classes. These
25+
"native classes" are intended to behave more like Python programmers would
26+
expect. As they are designed manually, they currently do not support the
27+
entire CybOX standard, but rather those object types we expect are used most
28+
frequently. These "native classes" also support exporting their content as
29+
Python dictionaries and lists, which can easily be converted to JSON.
30+
Importing from JSON is also supported.
31+
32+
Note: Due to the release of Version 2.0 of the CybOX Language, the full set of
33+
"native classes" will most likely never be complete for Version 1.0. If you are
34+
developing an application which MUST use Version 1.0 of the CybOX Language,
35+
please contact us (see below) so we can try to meet your needs.
36+
37+
38+
## Versioning
39+
40+
Releases of the python-cybox library will be given `major.minor.revision`
41+
version numbers, where `major` and `minor` correspond to the CybOX version
42+
being supported. The `revision` number is used to indicate new versions of
43+
the Python library itself.
44+
45+
1146
## Installation
1247

13-
The 'cybox' package depends on the 'lxml' XML parsing library.
48+
The `cybox` package depends on the `lxml` XML parsing library.
1449

1550
To build `lxml` on Ubuntu, you will need the following packages from the
1651
Ubuntu package repository:
@@ -21,3 +56,10 @@ Ubuntu package repository:
2156

2257
For more information about installing lxml, see
2358
http://lxml.de/installation.html
59+
60+
61+
## Feedback
62+
63+
Bug reports and feature requests are welcome and encouraged. Pull requests are
64+
especially appreciated. Feel free to use the issue tracker on GitHub or send
65+
an email directly to [email protected].

0 commit comments

Comments
 (0)