2020 Vision

by Neil C Smith

So, with a pun too obvious to ignore (if ironic given my eyesight!), let’s take a look ahead at 2020 plans for PraxisLIVE and PraxisCORE. As well as talk a little about the founding of Codelerity Ltd.

Objects in the rear view mirror

In some ways, 2019 seemed a quiet year on the PraxisLIVE front. We had three minor releases which brought some useful new features, including support for Java 11. But there were no major changes, at least on the surface. Behind the scenes, however, some big changes have been afoot as preparations have been made for the upcoming v5.

2019 had some enjoyable PraxisLIVE related talks and workshops too, including trips to ICLC in Madrid, FOSDEM in Brussels, and LGM in Saarbrucken; JUG talks in Birmingham, Manchester, Dublin and London; and the really fun Code2Create workshop in Andover.

During 2019 I was also involved as a PMC member of the Apache NetBeans community, fleshing out the new quarterly release plan, and release managing two Apache NetBeans releases (11.1 and 11.2). NetBeans is an essential part of PraxisLIVE, which is now based on Apache NetBeans 11.1 - an update that has allowed us to run on and support Java 11+.

Jump to light speed

Aside from occasional paid projects and workshops, PraxisLIVE has mostly been a spare-time (if sometimes all consuming) pursuit. In the decade leading up to 2017, most of my paid work was, like many others, in web applications and services. Since 2017 I’ve been trying to concentrate more on work related directly to PraxisLIVE in order to spend more time on it, the majority of which to-date has been related to GStreamer.

In mid-2019 I set up Codelerity Ltd.. We will be offering consultancy and development work around real-time systems, real-time programming, media, embedded and tools on the JVM. This will expand on the recent consultancy work I have been doing, as well as investing in other use cases for aspects of PraxisCORE and PraxisLIVE. For example, we’ve recently been looking at low-latency video in machine learning, as well as development for embedded devices. If you think we might be able to help with something, get in touch!

Donations to support PraxisLIVE development are, and will remain, much appreciated. However, they are not enough to sustain the amount of time I’d like to be putting in. Assuming all goes to plan, Codelerity will allow me to spend more time investing in PraxisLIVE development, while ensuring it remains free, and continues with its creative and innovative approach to coding.

Number 5’s alive(-ish)

PraxisLIVE, or more specifically the PraxisCORE runtime, is undergoing some radical restructuring for v5. So radical we’ve switched to a completely new repo! We’re moving away from the NetBeans module system and fully embracing Java modules, and Java 11 will be the baseline supported Java version. We’re also moving to the Maven build system, and all modules that make up PraxisCORE will be published to Maven Central for reuse in other projects.

A new, simplified actor and component base was added in v4.4.0, initially just for data roots and some of the built-in Hub services. These will now form the basis for other modules, allowing a large amount of legacy code from the v1 days to be removed. The code is also being restructured to remove unwanted dependencies between modules, remove the need for Processing except in the OpenGL renderer, and replace all NetBeans usage in PraxisCORE. Many of these changes support Codelerity’s plans for other use cases for these modules, while also offering key benefits in PraxisLIVE.

Unfortunately, Processing still has some issues with Java 11, as does JOGL, so I’m currently working on forking Processing and tidying up the LWJGL-based OpenGL renderer. These changes should give us a better performing OpenGL pipeline, and the forked modules will also be published to Maven Central for other projects to make use of. Of course, I’d prefer to see those changes accepted upstream, but we shall see.

Changes in the PraxisLIVE IDE for v5 will not be as radical, but there will be some key changes to support changes in the runtime. Projects will now run in separate processes from the IDE, and there will be a Hub per project. This will allow multiple projects to be run independently, removing a confusion for new users. Distributed hub settings will also be moved to each project, and also be taken into account when the project is run from the command line or as a standalone application. Support for exporting standalone applications will also be improved.

PraxisLIVE v5 should be released sometime in the next few months, although as with all these things we’ll release when it’s ready! Not every change is decided yet - if you have things you’d like to see then open an issue, or join in the conversation.