Skip to content
dhowe edited this page Jul 14, 2017 · 64 revisions

Welcome to the RiTa FAQ!

For Developers


What is RiTa?

RiTa is a software toolkit for computational or generative literature. It provides tools for artists and writers working with natural language in programmable media. It is free/libre and open-source, and is designed to be simple while still enabling powerful features: context-free grammars, n-grams, conjugation, tokenization, pluralization, feature-analysis (part-of-speech, phonemes, stresses), etc.

On what platform/language/environment can I use RiTa?

RiTa is implemented in both Java and JavaScript and runs in a number of popular programming environments including Android, Processing, Node, and p5.js.

Why is it called RiTa?

The name comes from the old Norse, meaning to mark, scratch, or scribble.

Does RiTa use machine learning techniques?

No. RiTa is a set of specific heuristic solutions to a constrained set of natural language concerns. Each algorithm is carefully hand-crafted to handle the complexities of the English language. During the years of writing and improving the library, I have learned a great deal about these complexities and now understand the language (and context-sensitive languages in general) in a way I did not imagine at the start.

What does RiTa's heuristic approach mean for the toolkit?

The short answer is that the library will remain small, fast, and transparent (it should always be relatively clear to other coders what it is doing and why). On the other hand, it will be difficult to extend to other languages. Also, there are tasks for which no good heuristic solutions have been found (this is both a shortcoming and an opportunity), and as such they are absent here.

But wouldn’t big-data/machine-learning approaches do better?

Yes, such approaches might well be more successful at some of the specific tasks performed by RiTa. However, as an author I am interested in more than just performance. I want RiTa to be approachable by as large/diverse set of users as possible. I also want it to be small and fast, so that it can run in the browser, and in as wide a range of other environments as possible, and I don’t want to require vast amounts of training data… Perhaps most importantly, as an author, I want to gain an understanding of the domain in which I work, and machine-learning approaches do not, and likely will not, provide this. The most successful ML model tells us very little about the domain we are investigating, even though it may produce highly accurate results. And this is not fully satisfactory to me as a creative practitioner…


How should I setup my development environment?

  1. Download and install Eclipse for Java.
  2. In the Eclipse menu, select 'File' > 'Import...'
  3. In the 'Import Window' select 'Git' > 'Projects from Git', then press Next.
  4. Select 'Clone URI' > then Next and copy and paste the 'HTTPS clone URL' https://github.com/dhowe/RiTa.git from RiTa's Github page into the URI field.
  5. Press Next to proceed with the default master branch or (optionally) configure the project directory.
  6. Press Next and select 'Import existing projects' to finish.
  7. Right click on 'pom.xml' from RiTa root directory in Package Explorer panel in Eclipse and select 'Run as' > 'Maven install'.
  8. (If you are also working on RiTaJS) In terminal, run ln -s /path/to/ritajs js from rita folder. An alias of RiTaJS will be created in your rita folder. If you have it right, when you build, it should say:
[echo] Checking for rita.js...
     [echo] "RiTaJS found..."
include.js:
     [echo] Copying js files ...

How to build RiTa from source?

  1. In the Eclipse menu, select 'Window' > 'Show View' -> 'Ant

  2. Click the 'Add buildfile' button to add a buildfile in the newly added Ant panel, and navigate to RiTa/resources/build.xml

  3. Click to expand the 'RiTa' menu and reveal the various tasks, then double-click 'build' (or run $ cd RiTa/resources && ant build from the terminal)

  4. (Optional) Ignore this step if you are on Mac or step 9a to c if you are on Windows, install ant and use cygwin to run the command $ cd RiTa/resources && ant build.

  5. When the build is complete, project resources can be found in RiTa/dist

How do I build docs?

You can build the docs either by running $ cd RiTa/resources && ant build or
$ cd RiTa/resources && ant make.docs.

What is the usual workflow for developers?

Working on Known issues

The most common task is working on a test case in KnownIssues-tests. (RiTa/java/rita/test/KnownIssuesTest.java or RiTaJS/test/KnownIssues-tests.js)

In most of the cases, the same issue is valid for both JAVA and JS. You can start fixing the issue either from JAVA or JS, and make sure to make the same changes later to the other one.

After fixing the issue, please remove the test case from KnownIssues-tests and place it to a proper location in another corresponding test file.

Working on rita dictionary

Please always change the dictionary in RiTaJS/src/rita_dict.js You can update the changes to JAVA by running scripts/update-dict.sh in RiTa

How do I test a new release?

Before release

  • Run each of the RiTa examples on each of the platforms:

JavaScript

  • In the browser with dom (Chrome/Firefox)
  • In the browser with p5.js
  • Test 'Analysis' and 'RandomRhymes' examples with no lexicon, using rita.js, rather than rita-full.js and verify that the correct warning message is shown

Java

  • In Processing

  • In Processing for Android (Ignore the example: ReplaceableWriting for Android tests)

  • As a standalone Java program (jar)

  • As a standalone Android app (jar)

     

Testing RiTa website

  • Check and fix errors in the console tab of developer tools for each page
  • Check links (with a link-checker) and fix any errors

Post release Pay attention to any error or warning message during the process:

Clone this wiki locally