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
"The tools market is dead. Open source killed it. The only commercial tools that can survive today are the ones that leapfrog open source tools." Thus argues John De Goes, president of N-BRAIN, which creates and provides UNA, a source code editor. After all, in the midst of the competitive IDE space, mainly populated by IntelliJ, Eclipse, and NetBeans, there are other players—lighter in weight and fleeter of foot. These are the pure source code editors. The personal edition of one of them, UNA, is now being distributed for free, since a few days ago. We find out more from John, who made the announcement here on Javalobby.

Hi John, can you briefly introduce yourself?

I've been a software developer for more than 20 years now, having written dozens of programs in Pascal, Fortran, C, C++, Java, JavaScript, PHP, and other languages. Likely more than a million lines of code, all told. I absolutely love software development—it's my life's passion. I devour books on software engineering and computer science and have even written a few books myself, on 3D game programming (albeit not recently).

These days, my day job is President of N-BRAIN, though I still spend up to 30% of my time acting as lead developer on UNA. Mainly working on stuff behind the scenes, like the concurrency framework, the collaborative merging algorithm, networking code, and parsing technology, in addition to serving as resident usability expert and interface designer.

Firstly, for for those who don't know, what is UNA in the first place?

UNA Collaborative Edition is a real-time collaborative development environment for software engineers. It lets two or more developers edit the same code, at the same time. It's similar to pair programming, but better because both developers can contribute productively, whether they're located across the hall from each other or on different continents. It includes other features like chat, a whiteboard, persistent notes, team tools and team queries, and other features to enable developers to work together in real-time.

As a development environment, both Collaborative and Personal editions of UNA support most of the features that developers have become accustomed to, such as syntax highlighting, source snippets, regular expression search and replace, external tool integration, auto-complete, structure and object hierarchy views, and lots more.

What does "UNA" stand for?

UNA (pronounced 'ooh-nuh') comes from the Latin adjective for 'together'. 'Una' also means 'one' in some languages, and that kind of fits too: the idea behind the collaborative edition is several developers working together, as one. We write it in uppercase because it looks better and is more faithful to the logo.

What are the languages currently supported by UNA?

Currently, we have mixed levels of support for the following languages: Ada, assembly language, batch files, C, Cobol, C++, C#, CSS, Eiffel, Erlang, Fortran, Haskell, HTML, Java, JavaScript, Lisp, Lua, Pascal, Perl, PHP, properties, Python, Rexx, Ruby, Shell, Smalltalk, SQL, VisualBasic, Verilog, XML. For some of these languages, we just do syntax highlighting, keyword completion, and so on. But for any language supported by Exuberant CTags, we offer much broader functionality, which includes structure views, object hierarchy views, go to declaration, parameter hinting, and so on.

Basic support for Groovy, Scala, and several other languages is coming in the next micro release (about two weeks from now).

And how did UNA come to be?

Four years ago, I was working on a project with millions of lines of code, maintained by dozens of programmers over the span of two decades. It was hard to understand sections of this code, and impossible for anyone to understand all of it. As there were no unit tests, changing anything could have unintended consequences that might be detected only weeks or months later (possibly by customers).

In this environment, I discovered that two heads really are better than one. Developers have different ways of interpreting code, and different ways of solving problems. Combining this rich diversity creates a strength unequaled by any single developer. Put me in a room with a junior programmer, and turn us loose on some task, and I guarantee you that I will gain new insight into the problem from this developer, and that our resulting solution will be stronger than anything I could have come up with alone.

Once I came to understand this, I immediately began looking for a tool that would make real-time collaboration the default way of working, and which would allow both developers to contribute productively at the same time. SubEthaEdit was king of collaborative editing, but only on the Mac, and even this great editor assumed you would be working alone most of the time, sharing a file or two on occasion. Plus, it's not easy to develop software without external tools integration and other features that SubEthaEdit did not have. So, since nothing existed that satisfied my needs, I decided to contract out the development of such a product.

After several false starts, I found some stellar developers by the name of Alexander and Michael, who began work on the project that would later be called UNA. Eventually, I realized my background in mathematics, computer science, and distributed computing would be necessary, and I quit my day job to work on UNA full-time. Other contractors came and went over the years, and recently we've added two new developers, but we're still a small, tightly focused group of developers who all share the same vision for the future of software development.


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.