News
- 2003-10-12: Alpha release 0.4.7 is out. The changes are:
- [Sanskrit] Support for Deshpande Lesson 5.
- [Sanskrit] Some adjectives and nouns could crash the declension exercises. That has been fixed.
- [Sanskrit] Fixed the encoding of the personal pronouns and the adjectives following pronominal declension in the masculine singular nominative.
- 2003-10-12: The development of the Attic Greek module is on hold until further notice.
- 2003-09-24: Alpha release 0.4.6 is out. The changes are:
- [General] Fixed some typos.
- [Sanskrit] Support for Coulson chapter 5.
- 2003-08-24: Users of Exert's Attic Greek modules should take a look at Kirk Lougheed's Unicorn. It is an editor that has Greek support: it does Greek editing, has a Greek dictionary and does spell checking.
- 2003-08-21: For the next few weeks, Exert development will be in a mode where no new extra-linguistic features will be added for a while. Development and releases will continue (and will keep pace with the groups currently using Exert). However, most of the effort will be spent restructuring the current code base, documenting it and probably moving towards a different development environment (eg. use Ant instead of Make to build the software, use subversion instead of CVS, etc.) Although I make no guarantees as to when the open source release will happen, this period of stabilization is a prerequisite to open-sourcing the code. Also, Exert will probably get promoted to "beta" status instead of the current "alpha" by the end of this period.
Mailing List and Contact Info
In the following discussion, none of the addresses will be spelled out in full. I do that to throw off email address harvesters. When I say x@, you should add "lddubeau.com" after the @ to get the full address.
First of all, if you need to contact me, my address is ldd@. People interested in keeping informed of the latest development should subscribe to exert-announce@ by sending an empty mail to exert-announce-subscribe@. This is a moderated mailing list (in other words, I'm the only one who can post there) that I use to make announcements. This is a very low volume list so if you use Exert, I strongly encourage you to subscribe.
Upcoming Enhancements
- General: Add support for alternative font selection. (This is especially important for Attic Greek). Add support for selecting a subset of the whole set of exercises for display: Exert currently shows in its left panel the tree of all exercises available: that's a problem for people who want to concentrate on only one language.
- Sanskrit: Further support for Deshpande and Coulson. Support for more "Sanskrit to English" or "Sanskrit Analysis" kind of exercises.
- Attic Greek: Hansen & Quinn chapter 15.
What is Exert?
(In the following discussion everything that appears like this is something that I recognize is a problem to be addressed.)
It is a language learning tool. The various language modules dynamically generate exercises based on the grammar of the languages they support. The modules usually follow the material in the order laid out by specific textbooks. If you don't use any textbook the module supports, you're out of luck. Because the exercises are dynamically generated, Exert can generate questions that are not present in the textbooks supported. (As a matter of fact, Exert has no knowledge of what actual questions are in the textbooks: it only knows what grammatical concepts and lexical terms are covered.) On the other hand, Exert cannot generate complex questions. It is unable, for instance, to generate an English sentence to translate into Sanskrit and test you on that.
Exert is designed to be multi-language. The Attic Greek module is currently the most advanced in terms of how much grammatical knowledge it covers. Sanskrit is the second most advanced and is actually where my focus is going to be for the most part. However, Sanskrit uses more features of Exert than Attic Greek. For instance, Sanskrit has support for source identification and for explanations whereas Attic Greek has neither of those.
The Sanskrit module is designed to follow the material in Coulson's Teach Yourself Sanskrit and Deshpande's Sanskrit Primer.
The Attic Greek module is designed to follow the material in the same order it is presented by Hansen and Quinn's intensive Attic Greek textbook.
The other modules are there mostly for illustration purposes.
Architecture
- ExertEngine
This is the part of Exert that manages exercises and tools and creates an environment to allow the user to select the exercises he wants to work with.
- ExertLibs
This is a framework for building language modules, exercises and tools. It provides functionality that both ExertEngine and the language modules use.
- ExertCore
The combination of ExertEngine and ExertLibs forms ExertCore. By itself, the core knows nothing about any language. Exert could, in theory, be distributed as separate core and module packages.
- Language Modules
-
This is where the exercises and language tools are implemented. Note that the modules have very superficial grammatical knowledge. For instance, a module may know that nouns and adjectives agree in gender and number but will not know how to make them agree. They do however, have complete control over the proficiency levels. Indeed, this is the only place in all of Exert where proficiency levels have any existence.
It is also important to realize that the actual questions presented to the student are dynamically generated. The modules don't have a prewritten list of questions. To generate a question, a module loads a vocabulary term from a database and uses the language libraries to apply grammatical transformations on the term and then asks the student to perform the same transformations. Similarly, grammatical explanations are not all precoded in the modules but are generated by the language libraries as they perform grammatical transformations.
- Language Libraries
This is where deep grammatical knowledge is implemented: how to conjugate, how to decline, etc. Some functions of the library are able to generate grammatical explanations as they perform their grammatical functions. So for instance, when a verb is conjugated, the conjugation function may also provide an explanation as to why the final form of the conjugation looks like it does and detail the steps performed during conjugation. The libraries are designed to be independent from the rest of the system (as illustrated by the dashed line in the image above) and could be used for projects other than Exert.
Requirements
Exert has been tested on Red Hat Linux 9 (no package available yet) and Windows 2000. Note that Windows XP has some problems with Input Method selection (which Exert uses) that are apparently fixed by installing all the available Service Packs.
You need the Java Runtime Environment (JRE) installed. Exert has been tested with versions 1.4.1 and 1.4.2 (and 1.4.2 Beta also). Use older versions of the JRE at your own risks. Note that you don't need the SDK but only the JRE to run Exert. The SDK is useful only if you want to develop Java software.
You need to have the Palatino Linotype font installed to display Greek properly. It comes standard on Windows 2000 and XP (and probably 2003???) but I recently learned it is not present on Windows 95 and 98 so I will try to find some solution to this problem.
Download
Right here. At the moment only the Windows version is available. (Note that it is theoretically possible to take the Windows package and make it work on a *nix machine: the exercise is left to the insane.)
Installation
Double click on the installer you downloaded. You should really just accept the defaults as they are. Right now Exert will not work on any other disk than C:. This is not a difficult matter to fix but not one that is high on my priority list right now.
Known Bugs
Nothing worth mentioning since release 0.4.0
Development Environment
This section is to satisfy some people's curiosity.
Tools used for development:
- Sun's JDK 1.4.2
- Ant 1.5.4
- Subversion 0.27.0
- JUnit 3.8.1
External libraries Exert depends on for running:
- Sun's JRE 1.4.2
- IBM icu4j 2.4 (bundled with Exert)
Documentation
The documentation has been moved. Follow the link.FAQ
Why Java? I don't like Java. It is too big/slow/etc.
Because that's what is most practical for me at the moment. If you don't like it, you are free to develop your own software or use someone else's package.
Why is Exert so big?
Because it uses IBM's ICU to do some Unicode manipulations. This package is big. I've already slimmed ICU down but there's a limit to what can be done.
Is Exert ever going to be released under an Open Source license?
Most likely.
Why is it not Open Source right now?
Many areas of Exert are experiments. It is bad enough to have to keep 2 languages up to date with the Exert core without having to nudge other developers to do the same with their modules. I also want the feature set to be more developed before I open the code. When that happens, the Attic Greek and Sanskrit modules will embody a set of best practices for using the Exert core system. If I open the code right now, there would be a very real risk that module design would quickly diverge and I'd end up with a software management nightmare. (And users would curse me because the various exercises would all have their own little incompatible behavior.) I'd rather concentrate on the project than on managing contributors right now.
It seems that sometimes you release new features before they are completely designed. Why?
That's a valid question. Here is the rationale behind this. First of all, if I'd wait until all of Exert is designed and stable before releasing anything, there would be nothing available right now and it would still take months before anything would be available. It happens that some people use Exert and find it useful as it is even with its quirks. To those people, it is much better to have Exert even if there are some rough edges in places than not have Exert at all.
The proficiency system is an example of a feature that was released before it was deemed "complete". The reason in this specific instance is that without it, it is impossible for beginners to use Exert at all since they will be bombarded by advanced questions. That was a huge problem. I decided to release the proficiency system after enough of the internals were ironed out to make it so that the problem is no longer present. The system is not user friendly but its release has transformed a huge problem into a mere user interface quirk.
What happen?
Somebody set up us the bomb.
(For the source of this nonsense, follow the link.)