The present and future LiveCode

by Ben Beaumont on June 30, 2014 16 comments

2013 was a big year for the LiveCode technology if not the biggest to date. The Kickstarter campaign allowed us to not only take LiveCode open source, but provided us with the funding we needed to completely refactor the way the LiveCode language was processed internally. You’re starting to see the fruits of that work with LiveCode 7 and transparent Unicode support, but that is just the tip of the iceberg. 2014 looks set to be an even bigger year for the technology with team members being committed to some of the most exciting projects I’ve seen in my 9 years working on the technology.

In the year since the Kickstarter campaign we’ve put out 15 new releases of LiveCode spanning versions 6 and 7. New features include:

  • Core Refactor: Modernise 500,000 lines of code paving the way for another decade of innovation
  • New Graphics Layer: Modernise the graphics to pave the way for ‘Resolution Independence’, ‘Fullscreen Scaling’, ‘Stack Scaling’ and other scheduled projects.
  • Resolution Independence: Apps takes advantage of high DPI displays
  • Fullscreen modes: Apps scale to any device for you with just 1 line of code
  • Stack scaling: Helps you work on your projects on small laptops
  • Unicode: Seamless easy Unicode in any app on any platform
  • Cocoa / CoreText: LiveCode on Mac OS now works with the latest API’s
  • Image Cache: LiveCode apps are now smoother and faster on mobile and desktop
  • OpenSSL: Apps can now be as secure on mobile as they are on desktop
  • Proxy Support / Secure sockets: Your apps can now work seamlessly from behind proxy servers
  • WebKit Browser: New webkit browser helps you make better cross platform apps
  • Integrated Fonts: Apps load and use fonts with no hassle
  • Server Graphics: Create graphics using LiveCode on the server
  • 9 way image stretch: Create skinned apps even more easily

We’re also in the process of finalising a couple of other features on our roadmap which will be out in testing in the coming week or two.

  • Multimedia: We’ve replaced the MacOS video player with the latest API’s (AVFoundation)
  • GDK: LiveCode on Linux now works with modern windowing API’s

Much of the work we’ve completed in the last 12 months was on our public roadmap, but you’ll notice that a number of items were not. With the desktop and mobile platforms constantly evolving we’ve been working hard to deliver on the commitments we made while keeping LiveCode at the cutting edge of cross platform development. So where does that leave us on our journey?

Roadmap

Active

Performance

Open Language

Themes / Widgets

IDE

Regions
LiveCode to use more intelligent region data to reduce the number of pixels rendered.
Awaiting build – LiveCode 6.7 DP5
Effect: 0 – 5x Speedup
Evaluator
Write a new evaluator
Prototype complete
Widget Architecture
LiveCode to have pluggable themed controls that can be written in the LiveCode language by inhouse developers or community members.
Prototype in progress
Widget IDE
Widgets provide an ideal focal point for the new IDE. We’re prototyping a basic IDE to help test and progress the widget prototype. This builds on other IDE prototypes created in the past.
Prototype in progress
Multicore Rendering
LiveCode to use all CPU cores when rendering
Prototype complete
Effect: 2x Speedup
Parser + Specs
Write a new parser
Prototype complete
File Format
New file format to save new controls into stack as well as provide for better versioning system integration
Stack Views *
A stack view in LiveCode will enable us to load stacks as a view and create a single windowed IDE
Multicore Accelerated Rendering
LiveCode to use all cores when generating data for GPU allowing LiveCode to use the GPU by default
Network / Sockets
Use new open language feature to implement
Cross browser player object
Use widget framework to wrap video playback on all platforms into a single object
Full IDE Prototype *
A full prototype of a new IDE based on a solid architecture
Database
Use new open language feature to implement.
Vector Shape Object
Use widget framework to write this control

Performance: We’ve made substantial changes to the graphics architecture in the last 12 months. The core has been replaced with a modern abstraction providing a foundation upon which much of our future tech will be built. However, Resolution Independence has required this library to do work it never had to in the past. A retina display requires the graphics library to render 4 times the number of pixels to the screen. Every pixel takes time to calculate, so the more you have, the longer it takes. This project was added to our roadmap to address the slowdown caused by this increase in pixels. We’ve created a generalised threading library that the engine can use to take advantage of all the cores available on a given system. We’re also looking at ways to reduce the number of pixels LiveCode renders taking advantage of features in our new graphics library. Most of these changes have been prototyped and are now being implemented for release in 6.7 or 6.7.1.

Open Language: With the core refactoring almost complete (LiveCode 7.0) we’ve started to turn our attention to the final aspect of this project which is to open up the language for extension by anyone. We have been prototyping for quite some time now and plans are in place to move this project forward at a rapid pace once LiveCode 7.0 is released. We will complete network, socket and database libraries with easy to use English like syntax as part of the development and testing of this feature. This is currently slated as one half of our next major release, currently imaginatively named “8.0”.

Theme / Widgets: Another important prototype we’ve invested time in is codenamed “Widgets”. Our aim is to provide a means for any LiveCode developer to extend the control set. This builds on “Open Language” making it possible for any developer to extend the language and the UI. While still in its infancy, we are really excited about the results which will make LiveCode 8.0 a groundbreaking release.

We’re looking forward to showing these prototypes at the upcoming conference which we hope will give you a flavour of where the technology is going in 2014/2015. This is going to be another special 12 months for LiveCode!

* These features are reliant on strands 1-3.

Queued

That leaves us with only 2 queued projects. Physics is best implemented using the features in planned for LiveCode 8.0. It will take advantage of the new controls as well as have wonderful English like syntax to power it. The Windows 8 port can take place as soon as engineers are available to work on it. The platform layer underpins the LiveCode 6.7 Cocoa port making this Windows port much easier to tackle.

Physics Engine
Incorporate Box2D into LiveCode along with an animation loop feature.

Windows 8
Port LiveCode to Windows 8 on mobile platforms using the new platform API developed for the Cocoa port.

Summary

We’ve shared at length over the last few years our dreams for the technology and creating a “Next Generation” version of LiveCode. A bold step forward to make LiveCode a mainstream language with awesome tools to make app development efficient and easy. Our vision as a company is to make programming simple. For professionals, that means achieving amazing result with a small team. For those new to programming, it means a chance to learn a skill that we see as vital in the 21st century.

LiveCode’s roots are in Hypercard, a wonderful vision to make programming simple brought to us by Bill Atkinson and his team at Apple well over 20 years ago. We share their vision many years on and in a new technological landscape. The first Kickstarter campaign that you supported enabled us to prepare the LiveCode technology to be opened up to every developer.

After 14 months of hard work we are now starting to see the fruits of our labours. LiveCode 7 is a huge milestone which sees your existing LiveCode projects running on completely new foundations. LiveCode 8 builds on these changes bringing the LiveCode language into the mainstream and providing a way for anyone to extend LiveCode to do exactly what they need.

Ben BeaumontThe present and future LiveCode

16 comments

Join the conversation
  • Klaus Major - June 30, 2014 reply

    Great work, ladies and gentlemen!

    But we are missing a new multimedia architecture for Windows!?
    Quicktime for Windows is not yet dead, but it already smells funny 😀

    Ben - June 30, 2014 reply

    Hi Klaus,

    We’ve not forgotten, in fact it’s in our active roadmap. In order to wrap the video players with the new Themes prototype we have to expand our video support on Windows and Linux. Once 6.7 and 7.0 are released we’ll turn our attention to video on the other platforms.

    Warm regards,

    Ben

  • Klaus Major - June 30, 2014 reply

    Aha! 🙂

    Thank you, Ben.

  • Sean Cole - July 1, 2014 reply

    Hi,
    Looking forward to a number of things on your roadmap. Another thing that has taken a major back burner and not included in any of your roadmaps are the iOS and Android SDKs. The iOS one needs updating and the Android one never saw the light of day. Only Monte was able to pick through the initial parts of it but he is holding it closely to his chest (as is his right) and says we have to pick our own way through the GitHub, which is a mess. Are we ever likely to see these on the roadmap or are they a long distant dream. As most of my work is done for mobile in tandem with Mac desktop am I better off learning Swift and abandoning LC for iOS and perhaps even desktop development (I don’t mean that to sound as a threat, it’s just seeking reassurance and insight). Also there is nothing in the roadmap for publishing to the Windows store which is a major funding boon to the entrepreneurial young developer.
    Thanks for the needed update though, Ben.

    Ben - July 1, 2014 reply

    Hi Sean,

    Great question. The post certainly doesn’t address this. We are very focused on expanding out our SDK support across all platforms. However, we’re realised that different people want to hook into different SDKs and so rather than try and build an team that is big enough to write and maintain that code we’re working on a way to make it easy to hook into API’s directly. We’ll give a lot more info on this at the conference this year and while the tech won’t be ready by then you’ll get a good insight into how it will work and how you might use it. Safe to say, we’ll using this technology to expand our support for API’s so the days of being limited by which API’s are available in LiveCode will be over. I’m also confident the community will start writing and sharing libraries because it will be so simple to write them. When something is easy, code tends to proliferate more often and more quickly. I hope that helps.

    Sean Cole - July 1, 2014 reply

    Cool, thanks Ben. APIs are better than SDKs for sure. I look forward to hearing how this is possible. I won’t be able to make it to the conference again, but hopefully get to see some video

  • Klaus Major - July 1, 2014 reply

    Hi Ben,

    just one more short question.
    I read all avialable Release Notes, but what on earth is “9 way image stretch”? 😎

    Ben - July 2, 2014 reply

    Hi Klaus,

    This was added in LiveCode 6.7 and will be out in the next couple of days when DP5 is released. We are currently in the process of building it. Again it was motivated by the way high res system require UI to be drawn to the screen. For users writing custom controls, it causes a few issues which can’t be worked around. So we added a 9 way stretch feature which is a standard was of creating UI that scales from a single image. Here is a great little guide to the general principles:

    http://radleymarx.com/blog/simple-guide-to-9-patch/

    I’ll put together a sample stack to go with the release.

  • Mag - July 2, 2014 reply

    In recent months we have seen a lot of changes under the hood, they were fantastic, thank you! I wonder if one day we will see even more “practical” things like drag & drop Mobile native controls, in-app purchase for OS X, support for the Social Kit etc?

    Ben - July 3, 2014 reply

    Hi Mag,

    Thanks for the question. The answer to this is similar to one of the other questions. We’re working on a way to make adding to the language easy. The intention is two fold:

    1) Make it quick and easy for LiveCode users to tie into API’s they want to use.
    2) Make it quick and easy for us here in Edinburgh to tie into all the popular API’s.

    Once that technology is in place you’ll see us add support for many API’s. However, that doesn’t mean that we stop all API development now. We constantly review the need for API’s and when customers raise that with us we always take a look and discuss as a team.

    Drag Drop Mobile Controls
    – We are actively developing this at the moment as part of the themes project

    In App Purchasing for the Mac AppStore
    – You’re not the first person to ask for this. We recently added more mobile support for this so the API’s internally have been generalised making this a little easier. We’ll review whether we can add this to our upcoming roadmap.

    SocialKit
    – This is one of those API’s that will be very easy to wrap with the open language project. You’ll hear more at the conference.

    I hope that helps.

    Ben

    Mag - July 3, 2014 reply

    Thank you, now everything is clear. Perhaps reading your road maps, a person might not understand this points. It seems that in the road maps you speak only about engines and do not you ever speak about the car (which is made of rearview mirrors, shift lever, accelerator, lights …). Thank you.

    Ben - July 4, 2014 reply

    Thanks for the feedback. We’ll take that on board when we update the roadmaps in future.

  • Klaus Major - July 2, 2014 reply

    Hi Ben,

    thanks for the URL, now I get it, very cool! 🙂

  • Philippe Coenen - July 12, 2014 reply

    Hello Ben,

    Thank you very much for this summary.
    I was an early user of Hypercard then quit it and suffer for many years.
    When I rediscovered Livecode I was extremely happy. (Just 2 years ago)

    Regarding your summary here, I guess that as many people I would like to have a sense of time.

    Such as (but probably not only)

    When a stable version 7 is expected?
    And when the in app purchases is expected in a stable version?

    Understand that it is not pushing or impatience.
    I think that’s interesting if all of us can have some milestones in head.
    This will let us prioritize our current development efforts the best possible way…

    I hope you can give me some rough idea about it.

    And thanks a lot to all the team, Livecode really rock!…

  • Joe - February 6, 2017 reply

    What happened to the Box2D support.

Join the conversation

*