OSNAT
From Open Siddur Project Development Wiki
The transcription framework web application has been codenamed OSNAT, for Open Siddur Network Application for Transcription.
Contents |
Goals
The goal of OSNAT is to provide a means for tapping into the vast pool of resources that user collaboration provides, to help with transcription needs of the Jewish Liturgy Project.
OSNAT will also help lay the groundwork for access to the Jewish Liturgy Project database via a web interface.
Current Status
The web application is being developed in Java, using Google Web Toolkit (GWT). To be clear, there is currently no server-side Java, rather GWT compiles the Java to optimized Javascript for use on the client's web browser. What is on the server however, is an eXist XML database, which serves the XML files that house the Siddur's data, and to help the client query that data, helping to ease the load on the client side. The queries can be heavily optimized and cached if executed on the server. Server-less querying is currently not a priority.
Contributing to development
Obtaining the source code
The source code can found at http://jewishliturgy.googlecode.com/svn/trunk/code/webapp/. See http://code.google.com/p/jewishliturgy/source/checkout for checkout instructions. On Windows, I find that http://tortoisesvn.tigris.org/ is very helpful.
Getting started
See OSNAT/Readme for instructions on how to build the project. Automated builds are supported with Apache Ant.
Updates
See http://code.google.com/p/jewishliturgy/source/list for updates as SVN commits occur. You can sign up for the commit mailing list at http://groups.google.com/group/jewishliturgy-devel.
Third-party GWT libraries
These libraries have to be obtained separately.
- gwt-log - Used for logging errors and other information, can also report the full log back to the server in case of fatal error
- gwt-dnd - Used for Drag and Drop support (http://allen-sauer.com/com.allen_sauer.gwt.dnd.demo.DragDropDemo/DragDropDemo.html demo)
- gwt-incubator - These are GWT widgets that haven't yet made it into GWT. GWTCanvas and SliderBar are two widgets being used.
- gwt-query - Allows selection and effects in a similar manner to the intuitive jQuery style ( see http://code.google.com/events/io/sessions/ProgressivelyEnhanceAjaxApps.html for a fascinating video demonstrating its development )
Third-pary Javascript libraries
These libraries are included in subversion.
- Sarissa - Used to wrap browser native XPath selection in a cross browser API
- XRegExp - Used to transparently fix browser native RegExp parsing
- HTML Virtual Keyboard Interface Script Used for portably inserting text into text elements, for use in the virtual keyboard
Current Design
The current design begins with a "source selector", which will allow the user to choose a source that requires transcription. The user is then directed to a "page selector" which asks the user to further choose a page within the source which the user wishes to transcribe. Once selected, a "transcription page" presents the user with an image of the page, and a texteara with which to type. The user is able to manipulate the image for best viewing. Image manipulation is accomplished via a resizable reticle, that moves around on a miniature copy of the image. In addition, the "transcription page" will provide a virtual keyboard with Hebrew keys.
Double Keying
Double keying will be implemented as a separate "transcription page" that can be chosen in the "page selector".
Fonts
Hebrew fonts should not have to be installed on modern browsers, as the CSS @font-face is now supported by Firefox (3.5). Internet Explorer has long had support for embedded fonts (albeit in a convoluted way).
Browser support
Primary browser support is whatever Google Web Toolkit supports ( currently IE, Firefox, Mozilla, Safari, and Opera ).
Look and feel
GWT allows changing the look and feel via CSS ( see GWT showcase ), and as such, while development is currently focused on program logic, CSS developers are welcome to contribute better stylesheets.
Demo and Nightly build
We are considering having a nightly build that would showcase the current status of the application as it is developed, as the project can be built using Apache Ant.
License
OSNAT is released as a whole under the terms of LGPL 3. However, many parts of the project are under Apache License Version 2.0 and labeled as such in a header comment.
gwt-log, gwt-dnd, and gwt-incubator are all Apache Licence Version 2.0.
gwt-query and XRegExp are available under the MIT license.
Sarissa is multi-licensed under GNU GPL version 2 or higher, GNU LGPL version 2.1 or higher and Apache Software License 2.0 or higher. Any of these licenses can be used.
"HTML Virtual Keyboard Interface Script" is licensed under a BSD license.
In addition, there are smaller snippets of code that are being used, and each of them has a license header indicating their respective license:
- java.util.regex.Pattern implementation ( Apache 2.0 license )
- java.net.URI implementation ( Apache 2.0 license )
- A virtual keyboard ( Apache 2.0 license )
- Part of the demo for Fred Sauer's gwt-dnd library, used for resizable dragable widgets ( Apache 2.0 license )