Monday, December 10, 2007

Transition to new site, repository, etc...

The transition to the new site ( is going well.
We have the new web site up, a new wiki, and the new subversion repository (complete with ViewVC web browser).

We're just finalising the new Contributor Agreement, and a bit of policy. Then, hopefully, the doors will be open again for contributions on the project.

We're also working on getting a Bugzilla instance up and running for defect and enhancement request tracking. If all goes well this will be added to the list of available tools on the web site.

Friday, September 28, 2007

Embedded CAL

Andrew Eisenberg's work on embedding CAL editors into Java source (in lieu of Java expressions) has now been made available for downloading on the main Quark page. See the previous posting here entitled "Sneak Preview".

This download isn't a part of the main Open Quark distribution (at least not yet), but it is a very nice experimental addition to the Eclipse tooling for Open Quark, and could be taken forward as a fully supported tool in the future. As always we (and Andrew!) would appreciate feedback.

Monday, September 24, 2007


Version 1.6.1 of the Quark Framework for Java is now available. The full release notes are available here.

While this is a point release (for bug fixes and small features), it has a number of interesting features. Chief amongst these is the inclusion of concurrency modules. Version 1.6.0 included internal support for concurrent CAL but lacked the library support to make this convenient and practical. This release includes missing library support allowing parallel function application to be programmed elegantly.

The Eclipse tooling continues to improve in this version, with a new Quick Outline view, and other enhancements.

This release also includes a new document, "Getting Started with Open Quark", which aims to help new users determine where to find information in the other collateral.

As usual, we highly value feedback and contributions to the project. Please visit our discussion forum.

Thursday, August 30, 2007

Sneak preview

Our Summer intern, Andrew Eisenberg has been busy working on how to embed CAL fragments directly inline Java source within Eclipse. This is Andrew's last week before he returns to the University of British Columbia to complete his PhD. Accordingly, Andrew has made some videos to demonstrate his work.

We will shortly make the software and other collateral available, but by way of a 'sneak preview' the videos are now accessible for viewing online.

The demo is in four parts:
Part 1
Part 2
Part 3
Part 4

Those who just want to cut to the chase may be able to skip right to Part 4, which offers a full worked scenario and discusses some more advanced features.

1.6 in the wild!

Yesterday, the Quark team completed another release and so the Quark Framework for Java V1.6 is now available in the usual place.

This release is quite rich in features, with a number of new libraries added that we hope will be of interest to people.

As usual, we are really keen for people to provide all kinds of constructive feedback on our Google Group, and of course the team is now setting about the next release.

Additionally, we expect to have a some very interesting auxiliary work posted up soon - the results of our intern Andrew Eisenberg. Andrew is just finishing up his time with us and preparing to return to the University of British Columbia to continue with his PhD. All will be revealed (we hope) within the next few weeks.

Wednesday, August 01, 2007

Long time no post...

...mostly because of my nice long Summer vacation :-)

While I was away though, the team produced release 1.5.1. This release has a range of improvements as listed in the release notes.

An interesting experimental feature is the ability to share the state of a program across multiple concurrently executing threads (as opposed to the ability we've had for ages to concurrently compile and execute logic that doesn't mutually update states of a common program). We anticipate that this feature will grow into a convenient and fully-supported feature of the framework. In the meantime however, it allows people to play with "parallel CAL" so long as they are prepared to do some work to set up scenarios and are happy to take a performance hit.

The benchmarks at the "Computer Language Benchmark Game" site were updated with 1.5.1.

Looking forward to 1.6 now, we expect to deliver a bevy of features and new libraries. Over the next several weeks, some details will be posted on the forum to whet appetites and solicit feedback.

Friday, June 15, 2007

Version 1.5.0 released!

Today we released V1.5.0 of Open Quark.

We managed to complete the standalone JAR feature to our satisfaction, and there are quite a number of Eclipse plug-in enhancements in this version, including wizards for setting up new projects and modules - hitherto a little awkward, as this had to be done manually.

Documentation is also updated and available in the Eclipse plug-in for the first time as help.

See the main Quark Framework page for more details, and please provide feedback on the CAL Language Google Group.

Thursday, June 07, 2007

A worthwhile short delay?

OK, we think we're going to delay the release to next week now. We made the call because of the potential to include a cool extra feature that we think may benefit a cross-section of users. This is the ability to have Quark produce small 'baked' JARs containing only the executable Java classes and an entry point to a CAL function of type [String] -> () i.e. a main function taking string arguments.

I use the term "baked" above, because such JARs will not include a Workspace with the metadata necessary to be able to use the contents dynamically (such as in the many cases where we use Quark as a functional metaprogramming library for Java, typically creating transient functions under application control). However, this is great for writing straightforward apps and utilities. Being small and having much less metadata to load up to support dynamic programming means that startup time is drastically improved too with this deployment model.

So, hopefully we'll be able to dot the I's and cross the T's on this feature for next week, and if it makes it into the next revision then we will probably badge it as Open Quark 1.5.

Wednesday, May 30, 2007

Next release

It looks like things are coming together for a release next week. As already noted, this should include a bevvy of Eclipse plug-in improvements (including the very welcome New Module wizard). We also expect to deliver a few other features including a CAL formatter/pretty printer. This will be used (amongst other things) to format the Gem Cutter generated code nicely, which should be of benefit to those using the tool during a project, or to learn functional programming.

Tuesday, May 01, 2007

Onward, again...

1.4.0 seems to be doing well in the wild. We are now into the next development cycle, with the following release likely to appear within the next month. The plan is for this to be a 'point release' with a mixture of bug fixes and a few minor features, including some in the ever-improving Eclipse support.

One such Eclipse feature in the pipeline is a "New CAL Module Wizard". Now that we have the foundational Eclipse features, we are turning our attention to making sure that Eclipse has enough convenience features to streamline workflow. This is especially useful for CAL neophytes who would currently have to manually create a well-structured CAL file in the right module hierararchy - a bit of a roadblock if you are trying to figure things out for the first time!

Thursday, April 26, 2007

Video showcasing the Eclipse Plug-in 1.4.0

We've posted a new video that shows the CAL tooling available in the 1.4.0 version of the Eclipse Plug-in. This is available on the main CAL page.

In 1.4.0, the plug-in was improved considerably over 1.3.0. There's still plenty of work to do, but the plug-in now features most of the bread-and-butter features you've come to expect from a modern IDE (and in particular, Eclipse).

Thursday, April 12, 2007

1.4.0 Released!

A new version of the Quark Framework for Java has been released today. See the main Quark Framework page.

Please provide feedback on the forums.

Monday, April 09, 2007

Final countdown

Open Quark Framework release 1.4.0-0 is almost ready - we're shooting for Wednesday or Thursday, after final documentation and testing.

This release is quite feature rich. Here is the "What's New" section from the upcoming release notes:

  • The CAL Eclipse Plug-in is now open-sourced under the Eclipse Public License.

    • The CAL Eclipse Plug-in is a separate download, with its own release notes.
    • Some components of the plug-in are licensed under the BSD license of Open Quark (see the plug-in zip for details).

  • New features in the CAL Eclipse Plug-in:

    • CAL Workspace view provides a categorized tree of all CAL entities in the workspace
    • CAL Outline view shows the CAL entities in a particular module

    • CAL metadata editing support
    • Auto-complete in the CAL editor
    • Rename refactoring
    • Organize imports refactoring
    • CAL Perspective
    • CAL branding plug-in

  • CAL Eclipse Plug-in documentation:

    • New "Using CAL with Eclipse" document
    • New video "CAL Eclipse Plug-in Features"

  • Lazy pattern matching: new CAL syntax to lazily unpack data constructors and records within a let expression.
  • Improved readability of generated Java sources for understanding the Java code actually generated from CAL sources:

    • Java expression pretty printer, shorter un-desugared CAL identifier names, improved generated Java source file organization.

  • CAL and the Computer Language Shootout Benchmarks

    • benchmarks and a document summarizing results on CAL performance for the Shootout benchmarks (

  • Various bug fixes, library enhancements and documentation updates

Thursday, April 05, 2007

Next week...

Slightly later than expected to allow for final testing and documentation, we now expect the next release of the Open Quark framework to be released next week.

This upcoming release is quite feature-rich, including big strides forward on the Eclipse tooling, new CAL language features, and an improved global optimiser.

Further details, of course, will be in the upcoming release notes. Developers are also posting a number of new articles to the forums.

Friday, March 23, 2007

Lazy local pattern matching

While the upcoming release has a lot to do with improving the CAL Eclipse Plugin, we continue to work on the core framework, and even language features. One such language feature that should be putting in an appearance soon is called "lazy local pattern matching".

Both current methods of decomposing values (case expresssions and data constructor field selection expressions) cause a value to be evaluated to weak head normal form (WHNF) - i.e. so the top level constructor of the value is known. The new syntax will allow pattern matching on the LHS of a LET definition e.g.:

// list cons patterns:
public foo3 = let
a:b = [3];

// tuple patterns:
public foo4 = let
(a, b, c) = (b, c, 1.0);

// record patterns:
public foo5 = let
{a} = {a = "foo"};
public foo6 = let
{_ | a} = {a = "foo", b = "bar"};

The difference between this syntax and case or field selection expressions is that the RHS of the LET definition is not evaluated until some value in the LHS is evaluated.

More details on this feature will be published soon.

Saturday, March 10, 2007

NEW Forum (Google Groups)

Based on feedback and personal experience in using the Diamond site Forum (the Business Objects forum for developers), we have decided to create a forum for Open Quark in a more neutral and convenient location. So, we have created a new Google Group called "CAL Language Discussion".

We will be continuing to monitor the Diamond Forum, but expect most new activity to occur in the new group. We will also try to post 'tricks and tips' articles to the new group periodically, so it can be more than just a location for Q&A.

There is a link to the new group in the side bar of this blog.

Experiments with Google Video

For a long time now, the Research Group here at Business Objects has used video to demonstrate progress on projects. A number of videos are available on the Open Quark main page.
One of the challenges of videos of course, is that they are delivered in a particular format, which may or may not be best, or even appropriate, for any given platform/viewer.

Theoretically then, something like Google Video could really fit the bill, offering web-based video playback on all platforms. So, recently I have been experimenting with Google Video as a channel for demonstration videos (which are of course screen captures). Results so far have left a lot to be desired, and I'm wondering whether this is simply a combination of the content type (screen objects and text) and the fidelity possible with Google's streaming/viewer technology at this point. Alternatively, I haven't found the magical format to upload yet to get a high-fidelity transcoding to their live format.

Google recommend MP4 video at 640x480, deinterlaced at 30fps, with MP4/AAC audio. I have tried to provide almost extactly this format in the uploaded source (exception being 8fps as 30fps is a bit of overkill for a screen capture), and have experimented a little with a few different settings. The latency involved in getting a video live on Google makes experimentation a little awkward, and so far none of the results have been particularly better than any other.

So, if anyone knows a way to get the best results out of Google Video for this kind of content, I'd love to hear from you!

Tuesday, March 06, 2007

Early March update

It's been a while since I posted an update here, so here goes...

We're making good progress on the next release, which predominantly features a number of improvements to the Eclipse support as I noted here before. We're aiming for a release this month (March).

Feedback on the Quark Framework so far has been very encouraging - though for some reason most of it has been via private email. I don't know whether this is because people are shy about commenting publically (!), or because our forum isn't working properly. The latter is entirely possible, as we have had problems before. Just in case, we are planning to create a new public forum with a 3rd party service (Google Groups is one possibility).

We have recently updated the Wikipedia content for the Quark Framework and CAL. There was already a short summary there, created by Tom Davies, which has now been expanded, with a separate page to describe the Quark Framework and CAL language in more detail.

Now that Open Quark is released we have been able to turn some attention to creating materials that communicate some of the more interesting areas of the implementation in a more formal way. We have also been invited to guest lecture at some of the local Vancouver universities, which will hopefully be the first of many occasions where we have the opportunity to speak about our motivations, and showcase details of the framework.

Friday, February 09, 2007


Following the release of the Open Quark Framework (build 1.3.0_0), we are of course hard at work with the next version. So, what is coming next?

We are spending some effort now to move our Eclipse integration forward. The Eclipse support has had to take a lower priority over the core framework since its inception, and is only just now beginning to move beyond a 'rudimentary' phase. With the work on the compiler's static analysis and rewrite optimisations now where we want it to be, we are able to put a little more emphasis on developer tooling and in particular bringing the Eclipse integration up to snuff. To begin with, there are many utilities and tools offered in the CAL shell, ICE, which we are integrating into the Eclipse plugins. This work will improve code browsing and navigation, with language sensitive search and renaming. Automatic import management (organise imports and auto-add 'usings') will be added. Intellicut and code completion will be included in the Eclipse editor. We'll also be adding a metadata editor. Finally, we want to begin integrating the debug capabilities of ICE into Eclipse. The full manifestation of some of our plans for a graphical debugger will take many months, but some basic capabilities should be doable relatively quickly.

Besides Eclipse, the Gem Cutter is continuing to be improved. The Value Panels for records has been improved quite a bit and a record extraction feature has been added to avoid having to use a Code Gem to get access to record fields. CALDoc browsing has also been improved to deal with the hierarchical module names that were a recently added feature of CAL.

Monday, January 29, 2007

Open Quark Available

Open Quark is now properly downloadable from the Business Objects Labs web site, the earlier problems with the server having now been fixed.

Thursday, January 25, 2007

Open Quark posted, but server problem remains

The updated Quark page containing the first open source distributions of the Quark Framework were pushed to the public web site today, but unfortunately there is a problem with the resources server not picking up the new files (Zips, docs etc) that are a part of this update. Hopefully, this unfortunate situation will be resolved very shortly.

Open Quark 1.3.0 ready

The first Open Quark build (1.3.0) is complete and ready to go. Unfortunately, we're waiting for a problem with our corporate web tools to be fixed before we can publish. Hopefully this is hours rather than days.

Thursday, January 18, 2007

Open Quark is now... Open!

It's with a great deal of pleasure that I can announce that we've completed all the steps internally on the road to offering the Business Objects Quark Framework as a true open source project, and will now imminently publish a new version of the project with sources - as the real Open Quark Framework!

We have chosen to go with a BSD style license initially. This will allow us to publish most of the sources associated with the project, with what is hopefully the most attractive terms for its use and inclusion in other works. Business Objects itself will be reconsuming this project for its own uses. There is a relatively small amount of code, notably the Eclipse plugin, that we are unable to offer sources for at this time, but we are continuing to work to resolve this limitation.

Looking forward, we will be engaging in conversations regarding the hosting of this project by one of the established FOSS foundations, at which point a future version may change to use another OSS license. In the meantime, we will continue to host downloads of the Open Quark Framework on the Business Objects Labs pages. We are also working on a Contributor Agreement that will allow contributions of fixes and features to the project while we continue to host it.

The Open Quark Framework team here at Business Objects is naturally excited about the value they have created in the framework and tools. We are particularly now very enthusiastic about the potential for working with a community of those wishing to deploy solutions that include the framework, and with those wishing to help move it forward.

The first version of the framework for download, with sources, will be pushed to the Labs page in the next few days.

Thursday, January 11, 2007

Progress on Open Sourcing the Quark Framework

We are making progress on our legal and technical preparations to release the sources of the Quark Framework.

The hope is that we will have the process completed in the next few weeks, which will enable us to update the downloadable Open Quark archive to include source (or at least have a version that does). Once this is established, the most critical and 'legally significant' step in the process will be complete. The next step will be to complete a Contributor Agreement that will allow people to donate changes to the code for us to integrate, and of course the necessary processes for communication and coordination to allow this to occur practically.

Looking forward, we would like to find a FOSS foundation that would be interested in hosting the Quark Framework. Subsequent to the initial open source release, we will be working to establish contacts with such organisations and opening conversations in that direction.

Meanwhile, development on the framework and tools continues apace. The next release will include hierarchical module names, improvements to APIs, enhanced foreign declarations with new casting function generators. We are continuing to develop the Eclipse integration too, with improvements to the editor as well as the addition of a number of search/navigation features that are already available in ICE.

Hopefully 2007 will be an exciting year for the Quark Framework, with major activities to make it a practical choice for people wishing to leverage the advantages of the lazy functional paradigm in Java.