Mode-independent Computer Aided Interviewing.

About Sonar
Sonar is a survey administration engine built on the Java CAI Framework. It combines JCaiF with industry standard technologies like XML, Javascript and CSS to create a survey interface that is both easy to use, and easy to develop. Sonar's goal is to simplify the life of survey authors and programmers, giving them the powerful tools they need to produce large and complex surveys without all the hassle, while making those surveys portable from CAPI to Web to CATI.
How Sonar is related to JCaiF
The Java CAI Framework (JCaiF) only describes the structure and content of a survey, it does not provide any mechanisms for displaying the survey, or collecting responses. To accomplish this, the JCaiF survey must be loaded into an application that will host the survey. We call such an application a JCaiF Container. Containers are not limited to display and collection, they can be used for reporting, statistical calculation, or any other puprose that needs to make use of the data defined in a JCaiF survey. Sonar is an implementation of several JCaiF Containers for data collection.
Sonar Features
Sonar contains an implementation of the SurveyEngine JCaiF interface, which is responsible for initializing and controlling the skip logic (flow) of a survey. Sonar's engine contains additional features that are not required by JCaiF, but make developing surveys much easier, while still allowing all the same flexibility and control.
XML Authoring
Sonar lets you author surveys in simple XML-based markup instead of Java code. This makes your survey files easier to write, easier to read, and much easier to maintain. Sonar then translates the XML file into the correct JCaiF components to be displayed for the survey. Sonar's XML processing also provides survey authors with shortcuts to reuse pre-defined questions and response lists, instead of typing them out all over again.
Enhanced Scripability
JCaiF gives survey authors the ability to run their own Java code to determine if a component should be displayed, onLoad, or if the respondent should be allowed to move on to the next question, onContinue. Sonar extends this model by allowing survey authors to include this code in their XML file, and even gives you a choice of which programming language to use. While Java is the default, you can also use ECMAScript/Javascript, Python or Ruby. On MS Windows, you can additionally use Visual Basic or Perl.
Variable Piping
While it is possible to change the text of a survey component using JCaiF alone, it requires you to replace the entire text. Sonar allows you to include special functions and variables directly in the text of your component, which will be interpreted whenever that text needs to be displayed. You are not limited to simply replacing variables with their text either, Sonar lets you call methods on JCaiF objects, loop through a list of variables, perform arithmetic and much more.
Dynamic Styling
JCaiF was designed to be as generic as possible, and to only include information related to the structure and definition of a survey. As such, the way a survey should look was intentionally left out of the JCaiF specification. Sonar gives you the ability to control the look of your survey in two ways. First you can include standard HTML markup in the text of your components to control the formatting of the text. Second, Sonar allows you to apply visual attributes to your components through the use of Cascading Style Sheets, or CSS. By separating the data from the display information, Sonar makes it trivial to customize the look of your survey for whichever method it is being used in. This means that your one survey file can look completely different when being display on a PC, over the internet, or even on a commandline terminal like Telnet or SSH.
Sonar Containers
Sonar implements three different JCaiF Containers for data collection, targetting different requirements and environments.
Sonar App
Sonar App is a desktop UI for data collection. It uses the Java Swing toolkit to present a visually attractive, easy to use interface to your JCaiF survey. Sonar App can be deployed as a stand-alone desktop application, launched from a hyperlink using Sun's WebStart technology, or embedded into a webpage as a Java Applet.
Download | Screenshots | Learn More...
Sonar Web
Sonar Web is a web-enabled JCaiF Container used to display a survey in any modern browser using standard HTML and Javascript. Sonar Web is a J2EE Servlet, and can be deployed on any J2EE server. Question templates are defined as Java Server Pages and custom JSP Tags, making them easy to modify to your needs.
Download | Screenshots | Learn More...
Sonar Term
Sonar Term is a character-mode (aka Dos-based or Terminal) survey interface. It can be run on a centralized server, using thin clients to connect over a Telnet or SSH connection. Sonar Term is ideal for Data Entry or CATI, where speed and low resource requirements are more important than visual display.
Download | Screenshots | Learn More...
Mode Independence
Sonar takes a decidedly different approach to mode-specific interviewing than most other programs you may be familiar with. Instead of implementing containers specific for face to face (CAPI) or over the phone (CATI) interviews, Sonar focused on the environment the survey will be run in, locally on the desktop, remotely over the web, or to a server on your local network. This means that you can use any one or a combination of these environments for the same interviewing "mode". Sonar uses the term "mode independent" to differentiate this approach from traditional "multi-mode" interviewing, where one program is specialized for each mode, and only that version can be used for that mode.

With Sonar, you are free to run your CAPI study locally in your field office or over an internet connection to your home office. Your CATI surveys can connect to your network server using cheap DOS terminals, rich Windows clients, or again over the internet to an interviewer's own home.