Showing posts with label erlang. Show all posts
Showing posts with label erlang. Show all posts

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.

09 March 2009

erlIDE internals: Introduction

I think it would be interesting to describe some of the internal workings of erlIDE. There is no better way to clear up one's thoughts that trying to explain them to someone else. Besides, once there will be readers, I'm sure there will be many good suggestions!

So, let's begin top-down.

erlIDE is comprised of several parts:
  • jinterface: we extended the OTP library with some things we needed, like generating Erlang terms from string descriptions (sprintf-like) and simple pattern matching.
  • the core: contains the management of Erlang runtimes and the model of the Erlang code. It includes services for scanning, parsing, compiling and evaluating Erlang code.
  • the UI: handles the editors, views, preferences and other Eclipse UI stuff.
We don't really want to write Java code, but since it's Eclipse we're talking about, there is little choice about that. But we can minimize the amount of Java by using Erlang as backend for our operations. So the main architectural vision is to let the Java part be only an adapter layer and implement in Erlang the core functionality. This will work well for the core functionality, but will be much more difficult for the UI parts.

Okay, this is a beginning. More to come later, stay tuned!

Erlide 0.5.1 (unstable)

This is the first release targeting Eclipse 3.4.

The big news is that we are now including experimental Wrangler refactoring support! György Orosz has put together the required Eclipse scaffolding and we will appreciate all the feedback we can get.

Otherwise, there are some bugs that have been fixed, see the ChangeLog for details.

Enjoy!
/Vlad, Jakob and György

Erlide 0.5.0 (stable) released!

We have been working hard to fix bugs and add new functionality and today we are proud to be able to release version 0.5.0! Now you can do your Erlang development with less hassle, and the fun part is that there's a lot more to come in the pipeline.

The Eclipse update site is at http://erlide.org/update or http://erlide.sourceforge.net/update

For those that have been using out unstable releases, there are only few new things. For the others, a list of some of the new things can be found in the ChangeLog.

IMPORTANT: Please note that this is the last release that targets Eclipse 3.3. The answers (or more exactly, lack of) to our previous questions about which versions we should target tell us that everybody is running 3.4 or newer. If you're still stuck with 3.3 and will need continued support, please contact us.

Enjoy!

/Vlad and Jakob