26 August 2009

Towards erlIDE 2.0: it's not only about code

I've been sketching some ideas for erlIDE 2.0 before, but that was only about the tools needed to handle the source code. Writing code is of course an important part of the development process. In other languages, it is one of the two pillars, the other one being debugging the code. Erlang, however, is different: an Erlang system is alive, and thus it's just as important to be able to architect and monitor it.

Of course these activities could be placed under the two other categories, but I dare to claim that they are sufficiently different from "normal" coding and "normal" debugging that they can stand on their own.

"What's the fuss about? We have that already!" I hear someone mutter there in the back. Um, yes, sort of. There are tools to visualize the process structure, but IMHO they are far from what they can be. There are no tools to help with the architecture of the system and there are almost none to watch it running. Here are some examples:
  • visualize and edit the supervisor structure as well as the links and monitors between processes. With a graphical tool, I mean something like right click and add a child, drag and drop from it to create a link to another process, mark the process as trapping exits, and so on. This would of course get saved into the appropriate code modules.
  • freeze execution of all application processes and inspect them without fearing that timeouts will kill them
  • "sandboxes" for processes, allowing all to be killed and the application restarted without affecting unrelated processes
  • trace messages live, at full or reduced speed or step-by-step. This could also be done offline, from the logs, but then the processes' data can't be accessed.
Some of these features require extensive support from the VM, so it becomes a matter of how useful these tools will prove themselves at paying customer's site. Which is difficult to find out before having a tool to test, but I am hopeful that there will be a way out of the deadlock (maybe we can build a good enough tool without VM support to use as demo).

I will explore this path further, I think we can get more developer productivity gains from this kind of tooling than from the usual coding and debugging support.

10 comments:

Alain O'Dea said...

Vlad, I'm excited about ErlIDE 2.0. There is definitely room for system monitoring tools with an up to date look and feel. Add to that more interaction and visualization possibilities and this is a definite win. Very exciting stuff :)

Vlad said...

I'm glad you are :-)

The only problem is that it's going to take a long while to get there unless we get (a lot of) help. There's so much to do and so little time...

One of the reasons that we moved to GitHub is that it may make it easier to get people started.

Alain O'Dea said...

I have a fork of ErlIDE on GitHub and I intend to start actively assisting as I get time.

The first thing I think I need is a good book or tutorial on Eclipse Plug-ins. I got lost trying to figure out how things tie together last time I dug into some of the Erlide tickets ages ago.

Before I can do any seriously useful development on ErlIDE, I need to understand the architecture. I am going to start reading the code from the plugin config inwards and see what I can grok from it :)

In the meantime if you have any suggested reading material I will dig into that as well :)

Ram said...

Hi Vlad,
I have tried installing ErlIDE on Eclipse galileo running in Ubuntu 9.10.

But seems erlide is not installed. May i know is it because of the ErlIDE not runnable with galileo or ubuntu...

Cheers
RameshVel

Vlad said...

@Ram: Hi, it should work fine on ubuntu. I have only tested with Sun's Java VM (which is not installed by default) and you should install Erlang from source (so that you can open the library sources). Let me know what error messages you get and I'll try to help you get started.

Anonymous said...

no i don't want to compile Erlang from src! my system provides nicely packaged erl. i use that! ram also has the same problem. why don't you fix it first?

Vlad said...

@anonymous: If you develop for Java, you would need to use the JDK, not the JRE that is ususally installed by default. If you develop for C, you need to install the development libraries for the external code that you use. And so on...

The packaged erl is nice, but if the sources and/or the documentation are not installed, you would not get the same level of support.

Besides that, even when installed, different distributions use different places to put all these bits of data. We don't have the resources to support all of them.

FWIW, it works nicely for me on Ubuntu 9.10 with the packaged erl (minus sources and docs, per above).

Ram said...

Vlad,
sorry for the reply... i works fine without any problems now..

My Ubuntu automatic update made some problems, thats the reason..

And Thanks for the handy tool... its just cool mate..

Cheers

RameshVel

Vlad said...

@ram: No problem, I'm glad to hear it works okay.

Inventory Management Software said...

Thanks for sharing your post and it was superb .I would like to hear more from you in future too.