InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Using Newspeak and Hopscotch for UI Composition

Posted by Abel Avram on Apr 28, 2009

Sections
Development
Topics
Ruby ,
IDE ,
Language ,
.NET ,
Java
Tags
Composite UI

Hopscotch is an application framework and IDE for Newspeak, a new programming language and platform inspired by Smalltalk, Self and Beta. Hopscotch avoids a number of design limitations and shortcomings of traditional UIs and UI frameworks by favoring an interaction model and implementing a framework architecture which enable easy composition of interfaces.

Newspeak is a dynamic, class-based language with all names lately bound and having no global scope. One of the consequences is the lack of static state. All classes can be nested in each other, they are virtual and there is class hierarchy inheritance.

Hopscotch IDE runs on Brazil, a widget GUI library which is connected to the underlying operating system through a mapping layer which is bound dynamically either to a Squeak window or a native one, Mac or Windows. The purpose is to be able to take snapshots in order to store the complete state of a process (memory, stack, processor registries, etc.) and restart it on a different machine or a different operating system. For that to happen, it is necessary to have dynamic binding to the underlying windowing system because new window handles need to obtained when the snapshot is restarted.

Hopscotch is not just an IDE for Newspeak but rather a document-based GUI application framework, including a DSL for creating presentation pages from fragments. Atomic widgets are leaf fragments while aggregates correspond to compound fragments. A presentation is created using combinators like blank, filler, button:action:, row:, column: or deferred:. The latest is used for aggregates that are to be constructed in the background. An IDE tool written in Hopscotch would contain a number of such presentations using hyperlinks to navigate between them.

Usually, an IDE contains tools represented by a form having a certain number of widgets. Connecting such tools is not an easy task. Hopscotch has a different approach to creating user interfaces through composition and it is using the subject-presenter paradigm as explained by Vassili Bykov in this paper:  Hopscotch: Towards User Interface Composition.

Gilad Bracha, creator of Newspeak, shows in a presentation how several tools, a debugger, a unit tester and an object inspector, can be seamlessly connected in a tool-chain allowing a developer to jump from one tool to another providing more detail information with a single click.

An example of an application written in Newspeak and Hopscotch is a Twitter client written by Luis Diego Fallas. Hopscotch is open sourced under Apache License 2.0.

IDE by Rodolfo Rothganger Posted
Re: IDE by Werner Schuster Posted
  1. Back to top

    IDE

    by Rodolfo Rothganger

    For a Newspeak language, a better name for the IDE would be Big Brother.

    :-)

  2. Back to top

    Re: IDE

    by Werner Schuster

    Well, the GUI framework _is_ called Brazil...

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.