@@ -20,48 +20,61 @@ source project.
2020
2121A few landmarks:
2222
23- - ** quirrel** - The Quirrel compiler, including parser, static
24- analysis and emitter
23+ - ** common** - Data structures and service interfaces that are shared
24+ between multiple submodules.
25+
26+ - ** quirrel** - The Quirrel compiler, including the parser, static
27+ analysis code and bytecode emitter
2528
2629 - ` Parser `
2730 - ` Binder `
2831 - ` ProvenanceChecker `
2932
30- - ** daze** - The Quirrel evaluator and standard library, including
31- optimization passes
33+ - ** mimir** - The Quirrel optimizer, evaluator and standard library
3234
3335 - ` EvaluatorModule `
3436 - ` StdLibModule `
3537 - ` StaticInlinerModule `
3638
3739- ** yggdrasil** - Core data access and manipulation layer
3840
41+ - ` TableModule `
3942 - ` ColumnarTableModule `
4043 - ` Slice `
4144 - ` Column `
4245
43- - ** niflheim** - Low-level block store and filesystem (NIHDB)
44- - ** ingest** - Unimaginatively, exactly what it seems to be
46+ - ** niflheim** - Low-level columnar block store. (NIHDB)
47+ - ` NIHDB `
48+
49+ - ** ingest** - BlueEyes service front-end for data ingest.
50+
4551- ** muspelheim** - Convergence point for the compiler and evaluator
46- stacks; integration test * source * and data
52+ stacks; integration test sources and data
4753
4854 - ` ParseEvalStack `
4955 - ` MiscStackSpecs `
5056
51- - ** pandora** - Vestigial convergence point; integration test
52- * binaries*
57+ - ** surtr** - Integration tests that run on the NIHDB backend.
58+ Surtr also provides a (somewhat defunct) REPL that gives access
59+ to the evaluator and other parts of the precog environment.
5360
5461 - ` NIHDBPlatformSpecs `
5562 - ` REPL `
5663
57- - ** shard** - BlueEyes services and final instantiation of ALL THE
58- THINGS
59- - ** desktop** - Build scripts for standalone desktop version -- see
60- local README.rst
64+ - ** bifrost** - BlueEyes service front-end for the
6165
62- Thus, to work on the evaluator, one would be in the ** daze** project,
63- writing tests in the ** daze** and ** muspelheim** projects. The tests in
64- the ** muspelheim** project would be run from the ** pandora** project
66+ - ** miklagard** - Standalone versions for the desktop and alternate
67+ backend data stores -- see local README.rst. These need a bit of
68+ work to bring them up to date; they were disabled some time ago
69+ and may have bitrotted.
70+
71+ - ** util** - Generic utility functions and data structures that
72+ are not specific to any particular function of the Precog codebase;
73+ convenience APIs for external libraries.
74+
75+ Thus, to work on the evaluator, one would be in the ** mimir** project,
76+ writing tests in the ** mimir** and ** muspelheim** projects. The tests in
77+ the ** muspelheim** project would be run from the ** surtr** project
6578(* not* from ** muspelheim** ), but using the test data stored in
6679** muspelheim** . All of the other projects are significantly saner.
6780
@@ -79,12 +92,44 @@ In order to more easily navigate the codebase, it is highly recommended
7992that you install [ CTAGS] ( http://ctags.sourceforge.net/ ) , if your editor
8093supports it. Our filename conventions are…inconsistent.
8194
95+ ## Building and Running
96+
97+ These instructions are at best rudimentary, but should be sufficient to
98+ get started in a minimal way. More will be coming soon!
99+
100+ The Precog environment is organized in a modular, service-oriented
101+ fashion with loosely coupled components that are relatively tolerant
102+ to the failure of any single component (with likely degraded function).
103+ Most of the components allow for redundant instances of the relevant
104+ service, although in some cases (bifrost in particular) some tricky
105+ configuration is required, which will not be detailed here.
106+
107+ Services:
108+
109+ - ** bifrost** - The primary service for evaluating NIHDB
110+ - ** auth** - Authentication provider (checks tokens and grants; to be
111+ merged with accounts in the near term)
112+ - ** accounts** - Account provider (records association between user
113+ information and an account root token; to be merged with auth in
114+ the near term)
115+ - ** dvergr** - A simple job tracking service that is used to track
116+ batch query completion.
117+ - ** ingest** - The primary service for adding data to the Precog database.
118+
119+ Runnable jar files for all of these services can be built using the
120+ ` sbt assembly ` target from the root (platform) project. Sample configuration
121+ files for each can be found in the ` <projectname>/configs/dev ` directory
122+ for each relevant project; to run a simple test instance you can use the
123+ start-shard.sh script. Note that this will download, configure, and run
124+ local instances of mongodb, apache kafka, and zookeeper. Additional instructions
125+ for running the precog database in a server environment will be coming soon.
126+
82127## Contributing
83128
84129All Contributions are bound by the terms and conditions of the [ Precog
85130Contributor License Agreement] ( CLA.md ) .
86131
87- ### Process
132+ ### Pull Request Process
88133
89134We use a pull request model for development. When you want to work on a
90135new feature or bug, create a new branch based off of ` master ` (do not
@@ -109,69 +154,23 @@ entirely, and thus the history is not stable.
109154
110155Do your work on your local branch, committing as frequently as you like,
111156squashing and rebasing off of updated ` master ` (or any other ` topic/ ` or
112- ` bug/ ` branch) at your discretion. Any commits which are related to
113- [ JIRA] ( https://precog.atlassian.net/secure/Dashboard.jspa ) issues should
114- have a commit message of the following form:
115-
116- <message>
117-
118- PLATFORM-<issue#>
119-
120- Substitute ` <message> ` and ` <issue#> ` with the desired commit message
121- and the JIRA issue number (e.g. ` PLATFORM-819 ` ). If a commit affects
122- more than one issue, simply include text for both separated by a single
123- newline. Please always ensure that the issue number in your commit
124- messages is accurate. This information is used by the CI server and JIRA
125- to automatically update the workflow status of the relevant issue(s).
126- There are numerous examples of JIRA-tagged commits in the Git history of
127- ` master ` .
157+ ` bug/ ` branch) at your discretion.
128158
129159When you are confident in your changes and ready for them to land, push
130160your ` topic/ ` or ` bug/ ` branch to your * own* fork of ** platform** (you
131- can [ create a fork
132- here] ( https://github.com/precog/platform/fork_select ) ). Do not push to
133- the main repository.
161+ can [ create a fork here] ( https://github.com/precog/platform/fork_select ) ).
134162
135163Once you have pushed to your fork, submit a Pull Request using GitHub's
136164interface. Take a moment to describe your changes as a whole,
137165particularly highlighting any API or Quirrel language changes which land
138- as part of the changeset. Your Pull Request will be automatically merged
139- with current master (but not yet pushed!) and built by our [ CI
140- server] ( https://jenkins.reportgrid.com ) . The build status will appear in
141- GitHub's interface, telling you whether or not your changes built
142- cleanly. If your changes did * not* build cleanly, or your branch no
143- longer merges cleanly with ` master ` , you will need to either fix the
144- issues or close the pull request until such time as the issues are
145- resolved. If you do close the pull request and subsequently resolve the
146- problems, simply push the updated changes to your branch (do * not*
147- rebase!) and reopen the old pull request (there is a button for this).
148-
149- While the CI server is busy blessing your pull request, other developers
150- will review your changes. This is a standard code review process. At the
151- very least, Kris will need to sign off on any change before it lands.
152- Generally, other developers will review changes that touch their
153- specific areas of expertise (e.g. Daniel reviewing changes to
154- ** quirrel** ), or if they are interested in the commit, or if they're
155- bored. The more code review, the better! Don't be shy about taking
156- action on their suggestions and pushing to your branch. The pull request
157- will automatically update and rebuild.
158-
159- If you would like to request a code review from a specific person, you
160- should mention them by GitHub handle within the pull request description
161- (e.g. "Review by <** @dchenbecker ** ">). This sort of thing lets Kris know
162- that your pull request should not be merged until Derek has a chance to
163- comment and sign off on the changes.
164-
165- Once your pull request is ready to be merged, Kris will merge your
166- branch into ` staging ` , which is a branch on the mainline repository that
167- exists * purely* for the purposes of aggregating pull requests. It should
168- not be considered a developer branch, and only Kris should ever push to
169- it or use its commits directly. Whenever ` staging ` is pushed, the CI
170- server automatically runs the full build as a final sanity check and
171- then pushes the changes as a * fast forward* to ` master ` once the build
172- has completed successfully. An automatic trigger builds ` master ` and
173- triggers the deploy chain once everything is double-blessed.
166+ as part of the changeset.
174167
168+ Once your pull request is ready to be merged, it will be brought into the
169+ ` staging ` branch, which is a branch on the mainline repository that
170+ exists * purely* for the purposes of aggregating pull requests. It should
171+ not be considered a developer branch, but is used to run the full build
172+ as a final sanity check before the changes are pushed as a * fast forward*
173+ to ` master ` once the build has completed successfully.
175174This process ensures a minimum of friction between concurrent tasks
176175while simultaneously making it extremely difficult to break the build in
177176` master ` . Build problems are generally caught and resolved in pull
@@ -206,8 +205,8 @@ like the following:
206205 ...
207206 # hack commit hack commit hack commit hack
208207 ...
209- $ git fetch reportgrid
210- $ git branch -f master reportgrid /master
208+ $ git fetch upstream
209+ $ git branch -f master upstream /master
211210 $ git rebase -i master
212211 # squash checkpoint commits, etc
213212 $ git push origin topic/doin-stuff
0 commit comments