aboutsummaryrefslogtreecommitdiffstats
path: root/ORGANIZATION.md
blob: 7ff2edfaab1245c99bf6a75e1ae0601b590df071 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Servo's directory structure:
* components
	* canvas
		* Implementation of painting threads for 2d and WebGL canvases.
	* canvas_traits
		* APIs to the canvas crate for crates that don't want to depend on the canvas crate for build speed reasons.
	* compositing
		* Integration with OS windowing/rendering and event loop, as well as management of resources for a top-level browsing context (ie. tab).
	* devtools
		* in-process server to allow manipulating browser instances via a remote Firefox developer tools client.
	* devtools_traits
		* APIs to the devtools crate for crates that don't want to depend on the devtools crate for build speed reasons.
	* etc
		* Useful tools and scripts for developers.
	* gfx
		* Draws the result of laying out a page, and sends the result to the compositor.
	* gfx_traits
		* APIs to the gfx crate for crates that don't want to depend on the gfx crate for build speed reasons.
	* layout
		* Converts page content into positioned, styled boxes and passes the result to the renderer.
	* layout_traits
		* APIs to the layout crate for crates that don't want to depend on the layout crate for build speed reasons.
	* msg
		* Shared APIs for communicating between specific threads and crates.
	* net
		* Network protocol implementations, and state and resource management (caching, cookies, etc.).
	* net_traits
		* APIs to the net crate for crates that don't want to depend on the net crate for build speed reasons.
	* plugins
		* Syntax extensions, custom attributes, and lints.
	* profile
		* Memory and time profilers.
	* profile_traits
  	* APIs to the profile crate for crates that don't want to depend on the profile crate for build speed reasons.
	* script
		* Implementation of the DOM (native Rust code and bindings to SpiderMonkey).
	* script_traits
		* APIs to the script crate for crates that don't want to depend on the script crate for build speed reasons.
	* servo
		* Entry points for the servo application and libservo embedding library.
	* style
		* APIs for parsing CSS and interacting with stylesheets and styled elements.
	* style_traits
		* APIs to the style crate for crates that don't want to depend on the style crate for build speed reasons.
	* util
		* assorted utility methods and types that are commonly used throughout the project.
	* webdriver_server
		* In-process server to allow manipulating browser instances via a WebDriver client.
	* webdriver_traits
		* APIs to the webdriver crate for crates that don't want to depend on the webdriver crate for build speed reasons.
* mach
	* A command-line tool to help with developer tasks.
* ports
	* cef
		* Embedding implementation for the Chrome Embedding Framework (CEF) API.
	* glutin
		* Embedding implementation for the `glutin` windowing library.
	* gonk
		* Embedding implementation for the Firefox OS devices.
* python
	* servo
		* Implementations of servo-specific mach commands.
	* mach
		* Implementation of `mach` command-line tool.
	* tidy.py
		* Code lints that are automatically run before merging changes.
* resources
	* Files used at run time. Need to be included somehow when distributing binary builds.
* support
	* android
		* Libraries that require special handling for building for Android platforms
	* android-rs-glue
		* Library to integrate better with Android platforms
	* rust-task_info
		* Library for obtaining information about memory usage for a process
* target
	* debug
		* Build artifacts generated by `./mach build --debug`.
	* doc
		* Documentation is generated here by the `rustdoc` tool when running `./mach doc`
	* release
		* Build artifcats generated by `./mach build --release`.
* tests
	* dromaeo
		* Harness for automatically running the Dromaeo testsuite.
	* heartbeats
		* Tools for periodic measurement of energy consumption.
	* html
		* Manual tests and experiments.
	* jquery
		* Harness for automatically running the jQuery testsuite.
	* power
		* Tools for measurement of power consumption.
	* ref, reftest.rs
		* Legacy reftest harness and reference tests. In the process of being removed (<https://github.com/servo/servo/issues/5618>).
	* unit
		* Unit tests using rustc’s built-in test harness.
	* wpt
		* W3C web-platform-tests and csswg-tests along with tools to run them and expected failures.

# Major dependencies
* <https://github.com/servo/rust-mozjs/>, <https://github.com/servo/mozjs/>: bindings to SpiderMonkey
* <https://github.com/hyperium/hyper/>: an HTTP implementation
* <https://github.com/servo/html5ever/>: an HTML5 parser
* <https://github.com/pcwalton/ipc-channel/>: an IPC implementation
* <https://github.com/PistonDevelopers/image/>: image decoders
* <https://github.com/tomaka/glutin/>: cross-platform windowing and input
* <https://github.com/servo/rust-azure/>: bindings to Moz2D/Azure (cross-platform 2D rendering library)
* <https://github.com/servo/rust-cssparser/>: a CSS parser
* <https://github.com/servo/rust-selectors/>: a CSS selector matching library
* <https://github.com/cyderize/rust-websocket/>: a WebSocket protocol implementation
* <https://github.com/servo/rust-url/>: an implementation of the URL specification