Geertjan is a DZone Zone Leader and has posted 468 posts at DZone. You can read more from them at their website. View Full User Profile

Interview: John De Goes Introduces a Newly Free Source Code Editor

  • submit to reddit
Can you explain what the external tools interface is and how it works and how someone would use it?

The tools interface is how you add functionality to UNA. For example, in our project for working on UNA using UNA, we have tools setup for running files, compiling them, building the project, running automated tests, and launching a debugger. All the results appear inside UNA. For example, the tool that runs the automated tests (for a given file or directory) produces a nicely formatted and color-coded table showing which tests are passing and which are failing.

How does UNA's tools interface differ from the facility available in IDEs to run external programs?

Take a look at the interface for running external programs in most IDEs. It's usually a tiny little dialog that lets you specify the program and the arguments you pass to the program. That's the extent of your options. Output is usually shown in a separate window.

UNA lets you completely control the environment of the program and nicely integrate the program with UNA. For example, UNA lets you determine where the standard input comes from—the active file, user input, the current line, etc. Similarly, you can specify where the output goes: whether it's shown inside UNA (as text or HTML), shown as a tooltip, used to replace the current document, discarded altogether, etc.

You can limit tools to operating on certain file types. For example, in a Java application, a compile tool might be setup to work only on Java files. In this case, when you right click on a Java file, 'compile' is shown as an option, and of course, you can also select the compile option from the tool menu or activate it by a keystroke.

You can also use a wide range of jokers when configuring a tool, which range from the current line, to the active file, to the projectspace location, to something the user types in, and so on.

It's a hacker's paradise, because with very little effort, you can achieve great integration with existing programs. It's very much in the spirit of TextMate's bundles.

OK, so, how does UNA compare to other source code editors that are not part of IDEs?

There are lots of great source code editors out there, and at some time or another, I've used most of them: vi, Emacs, TextMate, jEdit, SlickEdit, e, EditPlus, SubEthaEdit, Nedit, and many others. All serious code editors have incredible power, but in most cases it's not accessible to the average developer. You need a cheat sheet for all the hidden functionality, and a year or more to gain proficiency in the editor, and its bundled, often proprietary, scripting language.

UNA takes a different approach:

  • First, virtually all functionality in UNA is accessible from menus, similar to Nedit. This means you don't need to memorize commands if you don't want to, since you can do everything with the mouse. This makes for some large menus, but it exposes the full power of UNA to the greenest of users. The commands are still there, and with time, you'll subconsciously memorize the ones you use most often. With the consistency of our keystrokes, we actually cut down on the number of keystrokes you'd ever need to memorize: a full two-thirds of commands can be guessed by following the three rules (shift = expanded scope, alt = interactive, caps lock = opposite).

  • Second, instead of focusing on a large number of marginally useful features, we've tried to focus on a smaller number of killer features. For example, programmers spend more time navigating code than actually writing code. And the killer feature here is in-place incremental search. You can use the feature to instantly jump to some text, with the theoretical minimum number of keystrokes. Not just text, but you can actually use the same feature to jump forward by a word (simply search for whitespace), a newline (search for enter), a brace—whatever. In fact, I would go so far as to say the in-place incremental search replaces 20 or more individual commands, which goes a long way toward reducing mental overload. It's such a simple concept that changes the way you get around in a document.

  • Third, we have the highest attention to usability that I know of. I've already talked about this somewhat, but I'd like to given an example in the context of an editor. TextMate is a fantastic editor, and if you work on the Mac, you owe it to yourself to purchase a copy. Since it gets so many things right, I don't mind picking on it a bit. Many of the bundle commands show results in a separate window. This window pops up, on top of my work, and forces me to pay attention to it immediately, at the expense of whatever else I'm doing. Commit a file, for example, and some number of seconds later, I'm rudely interrupted with a dialog telling me I've just committed a file. I don't want to know that an operation I expect to succeed actually does succeed—tell me if it doesn't work, and only then, in an unobtrusive way. UNA's tools and operations run in the background, with results appearing down below in a defined area; they never steal you away from your work, force you to wait for them to complete, or transfer your input focus from one area to another. UNA is the only tool that can make you that promise.

  • Finally, even in the current 1.0 release, UNA has quickly approached the power of some IDEs. For example, take version control. If you have a project setup with version control, then until you decide to update or commit, you won't even know you're working with a repository. Create files, delete them, rename them, drag and drop them in the project tree to move them around—UNA keeps track of what you do and does the appropriate thing when you commit. This is IDE territory here. As far as I know, there's no text editor with this kind of functionality. Add to that file structure and object hierarchy views, go to declaration, parameter hinting, symbol renaming, and so forth, and you're well beyond the range of most text editors. From the screenshots, most people actually think UNA is an IDE—and with the proper tools added, it can actually function as one.

Now UNA isn't designed for editing single files. That's a definite weakness. So it's not going to replace most people's favorite code editor. It hasn't replaced TextMate for me. But for actual projects, UNA provides a shorter learning curve, some killer features you won't find anywhere else, a silky smooth experience that puts you first, and features you ordinarily find only in IDEs.

version-control.png92.85 KB
una-screenshot.png132.84 KB
tools-interface2.png102.52 KB
tool-interface.png87.26 KB
source-snippets2.png163.01 KB
source-snippets.png96.27 KB
smart-autocomplete.png175.84 KB
Save search queries for later.png13.17 KB
right-click-tools.png182.52 KB
Quickly navigate UNA without using a mouse.png15.91 KB
Quickly navigate documents with incremental search.png5.45 KB
Quickly locate symbols, files, declarations of symbols.png15.17 KB
One search and replace interface - unlimited power.png5.61 KB
jump-to-symbol.png163.57 KB
java-extensions.png168.28 KB
file-templates.png57.95 KB
file-templates2.png92.71 KB
instant-search.png163.06 KB
johndg.png70.47 KB
johndg.png26.37 KB
Published at DZone with permission of its author, Geertjan Wielenga.


Mike Miller replied on Mon, 2008/06/09 - 2:13pm

Sounds nice but couldn't get it to start - all I see is the interesting splash page and the client never starts.

Geertjan Wielenga replied on Mon, 2008/06/09 - 2:45pm

I've just installed it (on Linux Ubuntu) for the first time. Between the time that I clicked the download link and had the app up and running, I was approximately 2 minutes older.

Andrew McVeigh replied on Mon, 2008/06/09 - 3:06pm

It's a great looking editor, and it's fantastic to see new tools and innovation in the editor space. I wonder though about the "free single user" play though. When I started it up, I realised I couldn't collaborate with anyone and I lost interest. I wonder if a "free" mode with limited collaboration (or limited connectivity) is going to be more effective as a tactic for getting people interested.


Andrey Kuznetsov replied on Mon, 2008/06/09 - 6:52pm

It does not work.

Here is the console output:

C:\Program Files\UNA-1.0>java -jar unaclient.jar
10.06.2008 01:37:57 net.nbrain.una.unaserver.database.L E
INFO: DatabaseHomeDirectory = C:\Users\andrey\.UNA\\server-personal\database\
java.util.logging.ErrorManager: 2Handler.reportError caught:10.06.2008 01:37:58
net.nbrain.una.unaserver.database.I E
SCHWERWIEGEND: java.lang.NullPointerException
10.06.2008 01:37:58 net.nbrain.una.demo.J$A run
SCHWERWIEGEND: Can't start application: null
at net.nbrException in thread "AWT-Ev


Geertjan Wielenga replied on Tue, 2008/06/10 - 4:04am

Maybe it can't handle the space in the name between "Program" and "Files"? I don't know, just guessing.

Mike Miller replied on Tue, 2008/06/10 - 9:09am in response to: Mike Miller

My setup is a bit different - JAVA_HOME points to a 1.4.2_X version because our product is 1.4 but my JRE is 1.6 so that I can run Europa.  It appears that UNA ships with a 1.5 version of Java.

Tried resetting java home to my 1.6 and still didn't work. Also made sure I was running their shipped version (1.5) but still hangs after the splash screen.

Mike Miller replied on Tue, 2008/06/10 - 9:36am in response to: Geertjan Wielenga

That's not it - they did double quote around the "Program Files" in each instance

Alexander Parshuto replied on Tue, 2008/06/10 - 10:16am

Did you run Una as a root? Do you have access rights to a temp file system? Please make sure that you have access rights on temp file system?

@Andrey Kuznetsov: could you please send full stack trace to

thank you in advance.


Andrey Kuznetsov replied on Tue, 2008/06/10 - 10:31am


I posted complete console output. I have no idea why output just stopped in the middle.

John De Goes replied on Fri, 2008/06/13 - 8:33am in response to: Andrey Kuznetsov

Hi Andrey,

For some reason, the installer fails to create an appropriate directory (.UNA in your home directory) on some variants of Windows XP. If you download the raw distribution, create a .UNA directory in your home directory (echo %HOMEPATH% to find it), and copy the /syntax/ and /server-personal/ directories to the .UNA directory, then everything should work fine.

Creating the .UNA directory must be done from the command-line, as in every case so far where the installer fails, users cannot create the .UNA directory from Windows Explorer either. 

Our next installers (to be released today or Monday) have a workaround that attempts to address this issue. 

If you have any other questions, feel free to email us at 'support' or use the Community Forums (

Andrey Kuznetsov replied on Sat, 2008/06/14 - 5:03am

Well, in fact installer created .UNA directory. However not in my home directory, but direct under c:\.


John De Goes replied on Sat, 2008/06/14 - 10:24am

What does 'echo %HOMEPATH%' say at the command-line prompt?

Andrey Kuznetsov replied on Sat, 2008/06/14 - 2:27pm


serena lin replied on Sun, 2009/08/09 - 9:57pm

nice post keep good writing, you will be success, by nike air max 90 running shoe,Link Text

Kookee Gacho replied on Tue, 2012/05/29 - 6:25am

When a Java program is complied, it results is a byte code. A byte code is machine independent. That is, you can take the byte code on a computer w/ any OS, hardware, processor, etc, and run it.-Arthur van der Vant

Dean Schulze replied on Wed, 2012/08/29 - 4:05pm

Any plans to support the Go language?  

Raging Infernoz replied on Sat, 2013/03/30 - 12:30pm

Collaborative IDEs, and pair programming sound pretty similar, but does not seem very Introvert friendly, if used much; this is important, because I bet most developers are Introverts, like myself.

What happened to and UNA?

The domain is on a holding page and the editor seems to have disappeared; the company must have gone bust, so this looks like a zombie article; so I'm astonished this is still listed in Popular Links!

NetBeans just keeps getting better.

Eclipse is a functional and cluttered UI mess, including the regurgitated project structure abominations, it should never have allowed, which make Maven migrations painful; so I avoid using it as much as possible.

Intelli-J is plain too expensive given than NetBeans exists; I only pay for tools which are economically priced or excellent value for money e.g. Directory Opus.

I want nothing to do with collaborative cloud editors, they are a privacy and security nightmares waiting to happen, because they are all-in 'solutions'!

Collaborative projects can need a lot more visibility than just source code, so distributed source control systems, multiple monitors, and selective desktop sharing are far more useful.

Michael Je replied on Fri, 2013/04/05 - 7:42am

 Eclipse is a functional and cluttered UI mess, including the regurgitated project structure abominations, it should never have allowed, which make Maven migrations painful; so I avoid using it as much as possible.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.