Intro to hacking
From Open Siddur Project Development Wiki
|
This page introduces the interested programmer to the Open Siddur code base. This document assumes interest in the source code behind the Open Siddur technology and familiarity with common programming terms. If you're interested in transcribing texts, go here.
Note: This document is in a very rough state. The information in it should be correct, but following it may not be smooth sailing. If you see something blatantly wrong, please complain!
Joining the project
Optionally, you may fill out our survey form and/or join the opensiddur-tech email list. A second email list, opensiddur-dev, sends automated messages after each code commit and bug report.
Trying it out
To familiarize yourself with the (user-facing) work that has been done already, check out our demos.
Obtaining and building the source
To obtain the source code and build a local copy of the database and software, see Building.
Project structure
To learn what components are in the Open Siddur and locate their source code, see Architecture. To learn the current state of development, see milestones. Note that the order of feature development listed on the milestones page is not set in stone. If you have a particular interest in any aspect of the project, please let us know.
Technologies
The following are helpful links for learning about the technologies we use:
XSLT 2.0
- The XSLT 2.0 specification.
- The XPath 2.0 Functions and Operators specification
XQuery 1.0
- The XQuery Wikibook.
- The XQuery 1.0 specification
- The XPath 2.0 Functions and Operators specification
XForms 1.1
- Micah Dubinko's XForms Essentials.
- The XForms Wikibook.
- The XRX Wikibook.
- The XForms 1.1 specification.
TEI/JLPTEI XML
- The TEI P5 Guidelines.
- The JLPTEI extension specification.
eXist
- The main eXist documentation page.
- Searchable eXist functions reference.
There are also projects available that require Java or Python skills.
Coding style and documentation
A copy of the generated code documentation is available online. The online documentation usually lags behind the current head revision on git by a few revisions.
If you're interested in coding XSLT for the project, check out our draft coding conventions.
Some parts of the project code are separable and usable on their own. These include:
- the automated transliterator
- the XSLT Grammar Parser
- a script to turn any directory in a filesystem into a "backup" that can be "restored" into the eXist database, with control over excluded files and user and group ownership and permissions.
Web applications
Development on the web applications is in the early stages. In order to participate, you will want to have your own development copy of the database. The current development philosophy/coding tutorial is described at XRX Toolkit.