Discontinuation of the J-Ben project


J-Ben has been developed on-and-off from 2007 through 2011, for roughly 3 and a half years.

I've learned a lot from working on this project, details of which I will write in the post-mortem. However, my motivation to continue working on J-Ben has waned considerably.

Cutting to the chase: I've found that continuing work on J-Ben as currently planned brings little new value, at least not enough to warrant me spending a lot of effort to re-implement all the missing features in the Python rewrite. There's plenty of other applications, both standalone and on the Internet, which provide most of the features that J-Ben does.

So, I've decided to more-or-less retire the J-Ben project.

I might continue it if I get really bored, but at present, I'm no longer planning any new releases.

Fate of the JBLite Project

One good thing that came out of the Python rewrite of J-Ben is the Python library "JBLite", which converts JMdict and KANJIDIC2 to SQLite3 databases. It's possible that JBLite may stagnate since the project it was written for is no longer being actively developed. However, even as-is, the database it provides may help to power the software of others. (I know of at least one other program which is considering using JBLite.) It might be used in the future for providing quickie scripts which reproduce some of the features of J-Ben independent of the whole monolithic program. Anyway, I'm happy to answer questions in regards to JBLite, and I may continue development on an as-I-feel-like-it basis. The license is open anyway, so others are welcome to fork it and make something better. The JBLite pypi project page is http://pypi.python.org/pypi/jblite for those who are interested.


J-Ben was my first major open source project, the first such project I know has been used by others, and the first such project where I've received patches and feature requests from others. It's truly been a pleasure to work on such a project, so despite how much it may have set me back in terms of my Japanese studies, I do not regret working on it.

J-Ben was also my first major experience with developing cross-platform applications (excluding Java), and allowed me to gain experience with a wide range of Posix-platform development tools and cross-platform development toolkits. I've got experience with wxWidgets, GTK+/gtkmm, Makefiles, Bash scripting, the GNU Autotools, Python packaging, internationalization using gettext, and using source code from other projects directly in my own project, just to name a few of the experiences.

There's been a lot of hard-won experience acquired as well. I've since read more books on software development and understand many of the common pitfalls better than I did before, but it was in J-Ben where I really came to appreciate having a separation between interface and internals, or simply between my code and whatever framework or toolkit I may be using. In the case the toolkit comes up short and needs to be replaced, it's far easier to change the toolkit if you haven't tightly coupled your app to it.

If I could point at one single decision which "killed" this project, it would be the rewrite from C++ to Python. Basically, I ran into the Netscape problem.

The problems I saw with the C++ version of J-Ben were:

Each one of the above issues was annoying, but nothing was a critical show stopper. These could have been worked around, fixed, mitigated, or otherwise dealt with. By choosing the nuclear option of a rewrite, I halted virtually all progress on the project and, in the end, dragged development out too long until the project lost its relevance to me.

The Python port was simpler and nicer to work with, and it may have gave me some experience that helped me to land my current job. However, I think now that it was a mistake.

Regardless of the mistake, the rewrite did give me opportunities to rethink my project and to accomplish several long-outstanding tasks: to work on finally getting internationalization working, and to repackage everything using the Autotools. Basically, most the work up until the decision to terminate the project has been of professional value to me in some way. So, although maybe I wish I would have spent my time doing these changes on the C++ version, I'm still happy to have spent the time I have on J-Ben in general.

My personal plans

Having put this project essentially behind me, I'm planning to shift focus to that which caused me to work on this program in the first place: my Japanese studies.

I've been living in Japan nearly 5 years, and I still do not know all of the Jouyou Kanji. I want to change this.

I've previously started studying using Heisig's Remembering the Kanji I, and having discovered kanji.koohii.com, I plan to get more serious about it.

Perhaps once this is done, I can get serious about the other studies needed to pass Level 1 of the Japanese Language Proficiency Test. (I passed Level 2 two years ago.)

I may still write Japanese-related programs in my spare time, but not to the degree where my Japanese studies go completely neglected.

Paul Goins
February 15th, 2011