vladimir piskarev's blog

Musings on the Eclipse Handly project and software development in general

Discovering Erlang, again

I recall it was a lot of fun when I was first investigating Erlang some time ago. Since then, I never had a chance to use it in production (unfortunately, non-curly-brace languages seem to avoid industry mainstream). But an overall feeling of grace of this language has remained in the back of my mind, and Erlang has been firmly set in the personal pantheon of the all-time greats (along with Smalltalk and CLOS), though some of its details have vanished through the course of time.

It seems I’m fortunate enough to have a very nice opportunity to get back and rediscover this great language. Having read the Part I of the 2nd edition of Joe Armstrong’s book, I’m once again impressed by the beauty of Erlang. I think it in many ways reflects some of the original OOP ideas by Alan Kay that went into the creation of Smalltalk-72 (which was one of the influences for the development of the Actor model).

It is known that Alan sort of apologized for having invented the term “object-oriented” and said that a better metaphor would be more “process-oriented”. Erlang seems to deliver exactly that with its notion of processes and associated primitives: spawn, send and receive. At a high level, it actually can be considered to be a (very pure) object-oriented language: it emphasizes messaging and fully supports encapsulation and polymorphism of processes (a.k.a. “real objects”). The pattern matching and functional programming facilities are just icing on this wonderful cake.

And yes, I’m having a lot of fun with it, again.

Get a handle on Handly!

Concurrently with the Handly releases announced today, we are also making available (under the Eclipse Public License v1.0) a step-by-step guide to getting started with Handly. It is hosted on GitHub. Despite being a work in progress, we do hope that even in its current form it will be useful for Handly adopters. Early feedback is welcome.

The Guide

Announcing Handly 0.2 and 0.1.1 Releases

In celebration of Eclipse Luna SR1, I’m very pleased to announce the simultaneous availability of two Handly releases.

Version 0.2

This is a major Handly release with the following themes:

Integration with Xtext 2.7.x — The most important goal of this release is to provide integration with Xtext 2.7.x. It will not support previous Xtext versions due to breaking changes introduced in Xtext 2.7 (see bug 442674 for a discussion).

Scalability — Handly 0.1 has been tried out on source files containing tens of thousands of lines of code. From those tests it seems that the JDT-inspired design would scale pretty well. Of course, there is always room for improvement, and this release is going to be even better in this regard.

API Quality — This release includes a number of API enhancements.

No major release can happen without some API breakage. Here is a summary of breaking changes in this release.

Version 0.1.1

Concurrently with 0.2, we are also shipping 0.1.1 release to bring important bug fixes to those adopters who still rely on the 0.1.x line. Please note that this release (as well as the 0.1) will not work with Xtext 2.7 or greater due to breaking changes introduced in Xtext 2.7.

We are making available these two Handly releases simultaneously to minimize disruption for adopters who use Handly integration with Xtext. While Handly 0.1.1 remains compatible with Xtext 2.5, it will not work with Xtext 2.7 or greater; the 0.2 release is integrated with Xtext 2.7.x but doesn’t support previous Xtext versions.

Enjoy and don’t forget to leave your feedback on the adopter forum.

Downloads

State of Handly for June 2014

It has been a busy four months for the Handly team since the project was created in February of 2014.

The initial code contribution from 1C has passed the Eclipse Foundation’s full IP review, we have a PMI-based website, source in Git, bugs in Bugzilla and builds running on every commit.

Even though the current project team is only staffed by 1C employees, we make it a point to communicate in the open on the adopter forum and the developer mailing list, and have provided the contributor guide and the committer FAQ in preparation for community participation.

I had the pleasure of giving a 30-minute talk on Handly at this year’s XtextCON. Here are the slides. My blog posts on topics surrounding Handly are syndicated to Planet Eclipse to ensure broader reach and exposure to potential adopters and contributors. We have made available an architectural overview and a basic exemplary implementation that might be of use to those interested in the project.

Finally, the Handly 0.1 release just shipped on-time, coinciding with Eclipse Luna symbolically. This release is quite stable and is going to be used by at least one major adopter. We have no outstanding bugs for the moment. However, if you run into issues, please report them via Bugzilla. We are committed to steadily improving the level of quality with each subsequent release (that includes tests and documentation).

Now, we’d love to receive your feedback as we are setting directions for the next major release. Please use the adopter forum to post your comments and questions.

Announcing Handly 0.1 Release

I am very pleased to announce that the Handly 0.1 release has been completed today as scheduled to coincide with the Eclipse Luna (it is not part of the simultaneous release though).

Downloads

Handly is a new technology project at Eclipse. It supplies basic building blocks that help implementors of language tooling create handle-based code models similar in design principles to the JDT Java Model. The uniform API makes it possible to develop common IDE components dealing with such models. Integration with Xtext is provided. For more information, visit the project’s website.

The first release of Handly at the Eclipse Foundation is primarily focused on taking a stable initial code contribution from 1C LLC and releasing it from Eclipse. This release lays the groundwork for further development and will be the basis for introducing the project to the open source community.

Looking beyond the initial release, the intent is to come up with a really nice design in this problem area through an open and transparent development process driven by community feedback. So if you are interested in this technology and have a feature in mind where you can leverage Handly, it would be in your best interest to engage as early as possible by playing around with this release and giving feedback. Please direct your comments and questions to the adopter forum.

Handly initial contribution now available

Hard to believe it’s been a month since the creation review for the Eclipse Handly project was declared successful. And quite a busy month, I must say.

Just in case you’ve missed the proposal, Handly is a recently created Technology project at Eclipse. Inspired by JDT Java Model, it aims to provide a common foundation for language-oriented handle-based models. It also includes a layer of integration with Xtext. You can read more about the project proposal in my previous post.

It’s been our stated intention to make the initial contribution available to the community as soon as technically and legally possible. Today, I’m glad to announce that the initial contribution is now available (based on Parallel IP) in the project’s Git repository. You can clone the repository from git://git.eclipse.org/gitroot/handly/org.eclipse.handly.git. Please see the CONTRIBUTING guide in the repository’s root for general information on how to contribute to the project. Also, an architectural overview is available.

Early feedback would be most welcome, of course. It might be a great opportunity to participate and influence further development. We’re listening. Seriously :-)

Look inside the 1C’s new office building

We’ve recently moved to the 1C’s exciting new office building. Some great photos of the interiors can be found here.

Alan Kay on delight in complexity and the joy of simplicity

It seems that I’m in the mood to paste some quotes on the blog. I hope that the reader will forgive this weakness of me; my purpose is not to amuse you per se (though I would be happy if you’re amused), but rather to leave some reminders to myself on what can be important to think about in general.

This quote is from Alan Kay’s Turing Award talk at OOPSLA ‘04:

An ancillary problem is that our field and people in general take great delight in complexity. If you go to schools, it’s remarkable how much work they make the poor kids do, when if they taught the math better and differently, the kids would be doing much less work. But in fact, people delight in complexity and think that putting immense amounts of hard work in, even if there’s an easier way, is actually — there’s something morally good about it.

And so I think for our field, one of the hardest things is the delight in complexity. Because of many levels of structure in computing, and difficulty of going from one level to another, pretty much everyone who gets interested in computing and successful at it is a person who has mastered staggering amounts of complexity. I believe that most of this complexity is absolutely unnecessary, and I believe it can be proved that it’s unnecessary.

So what we really want is to find the joy of simplicity… All the projects I’ve been involved in have been successful, successful because the people who worked in them put quite a bit of effort into keeping things simple, and this community of ARPA and then Xerox PARC was outstanding at being simple.

Handly Creation Review successful

It’s hard to find the words to convey what you feel when your first Eclipse project is being created before your very eyes. Thus, I shall restrain myself to simply expressing appreciation to all of you who have been interested in the proposal (or even took time to read my commentary on it and spread the word). Special thanks (in alphabetical order) to Doug, Marcel, Sven and Wayne; without your help and support, it would not be possible for the project to reach this phase within a relatively short time.

I hope that Handly will nicely fit the “Incubators Stream” of its parent Technology Project, as defined in the Project Charter (“incubation of small-scale, innovative platform and tools projects”). Being a small-scale project, it’s unlikely that its community is going to be particularly large. However, I do hope that its community will be friendly, diverse and vibrant. It’s an explicit goal for the project that we shall try to achieve.

We’re eager to make the initial contribution available to the community as soon as technically and legally possible. After that, please join in the development effort, participate in feature planning and design discussions, begin using this thing and provide valuable feedback, or simply ask questions. Remember, you are always welcome here. Thank you!

A quote from “Hints for Computer System Design” by Butler W. Lampson

Designing a computer system is very different from designing an algorithm:

  • The external interface (that is, the requirement) is less precisely defined, more complex, and more subject to change.
  • The system has much more internal structure, and hence many internal interfaces.
  • The measure of success is much less clear.

The designer usually finds himself floundering in a sea of possibilities, unclear about how one choice will limit his freedom to make other choices, or affect the size and performance of the entire system. There probably isn’t a ‘best’ way to build the system, or even any major part of it; much more important is to avoid choosing a terrible way, and to have clear division of responsibilities among the parts.

Design a site like this with WordPress.com
Get started