Skip to main content

Releasing 0.5.0

· 6 min read
The LittleHorse Council
The LittleHorse Council

We are excited to announce the minor release 0.5.0. This release is highlighted by:

  • Alpha support for building WfSpecs in Python.
  • Improved monitoring and health metrics on the LittleHorse Server.
  • Support for looping over a JSON_ARR and launching threads in parallel for each element.
  • Improved Exception Handling.
  • Limited early access for LittleHorse Platform.

In this release, we made great strides towards full Python support, improved monitoring and observability, and added the ability to spawn threads in parallel looping over a JSON_ARR variable.

Get Started

LittleHorse is free for production use according to the Server-Side Public License!

To get started with LittleHorse OSS, you can:

New Features

We'd like to highlight some of the exciting new features in 0.5.0.

Python WfSpec Support

Our Python SDK now has full support for building WfSpecs! You can check it out at our quickstart page.

For-Each Suppport

This is a very exciting feature which allows you to iterate over a list and spawn multiple ThreadRuns (like threads in a program).

To see it in action, check out our example or read the documentation.

Improved Failure Handling

This release introduces a new status for LittleHorse, called EXCEPTION. The EXCEPTION status differs from the ERROR status in the following ways:

  • ERROR means an unexpected technical failure occurred. For example, a TaskRun timed out because a third-party API was down.
  • EXCEPTION means that a failure occurred at the business process level. For example, you might use an EXCEPTION when a customer has insufficient funds in her account to complete an order.

Just like in programming, you can throw and catch EXCEPTIONs (and you can also catch ERRORs). For a blog post that goes in-depth into how LittleHorse makes it easy to handle failures in your workflows, check out our Failure Handling Docs.

LH Server Monitoring

We added a new path /status on the LH Server's health endpoint (port 1822 by default) which can be used to inspect the status of all internal Kafka Streams Tasks on the LH Server. It presents the following information:

  • All Active Tasks on the host
  • All Standby Tasks on the host
  • Any ongoing State Restorations on the host

Additionally, we added a /diskUsage endpoint which returns the number of bytes of disk space in use by the LH Server.

LittleHorse Platform uses these endpoints to intelligently scale, manage, and operate LittleHorse for you.

We are also in the process of writing and implementing a Kafka Improvement Proposal to improve visibility of Standby Tasks, which will allow the LittleHorse Operator (both in LH Platform and LH Cloud) to safely and smoothly scale LittleHorse clusters down without any downtime. Stay tuned in the Kafka developer mailing list!

LH Platform

LittleHorse Platform is a Kubernetes Operator that securely manages a LittleHorse cluster for you in your own environment. It seamlessly integrates with your Kubernetes environmnent, GitOps workflows, and security strategy (TLS, mTLS, OAuth, Cert Manager, Keycloak).

LittleHorse Platform is now available for limited early access, and has been installed in one of the largest health insurance companies in the US.

To get started with LittleHorse Platform, please contact us.

Persistent Variables

In LittleHorse 0.2.0 and later, you can search for Variables by their value. For example, if you have a Workflow Specification that defines a variable email_address, you can find all Workflow Run's where email_address == 'obiwan@jedi-council.org by using the SearchVariable rpc call.

The problem with 0.2.0? You need to provide the wfSpecVersion in your search request. That means you can only search for a Variable if you know the version of the WfSpec it came from.

Release 0.4.0 introduced the ability to mark a Variable as persistent, which means that:

  • Every future version of the WfSpec must have the same variable definition with the same index type.
  • You can now search for variables with a certain value across all versions of the WfSpec.

Be on the lookout for an upcoming blog post about using Persistent Variables and a simple backend-for-frontend to build an end-to-end Approval Workflow Application using only LittleHorse!

What's Next

Over the next few weeks, we plan to:

  • Add utilities to make it easier to work with the LittleHorse API.
  • Allow users to throw a Workflow EXCEPTION from within the Task Worker SDK (currently, only ERROR is supported).
  • Continue hardening the LittleHorse Server's availability and performance story.
  • Launch limited early accesss for LittleHorse Cloud and LittleHorse UI.

To get started with LittleHorse, head over to our installation docs.

What about 0.3.0 and 0.4.0?

We also released 0.3.0 and 0.4.0 over the past 5 weeks! (And before 0.3.0, we had a minor patch bugfix on 0.2.1).

The only thing missing with 0.3.0 and 0.4.0 is a blog post + announcement. That's because a lot of the features we included in this announcement were partially-implemented, implemented in some languages and not others, or in the "experimental" phase at the time of 0.3.0 and 0.4.0. We accelerated the release of 0.3.0 and 0.4.0 because certain early-access customers requested certain features on an accelerated timeline.

As our API is mostly stable now, we will slow down our release cadence to likely a new *.x.* version (a minor release in Semantic Versioning) every two months, with security and bugfix patch releases (*.*.x) as needed.

Additionally, as we introduce new features, we will start a release changelog document in which we document the level of stability of the new API's introduced. For example:

  • STABLE: Any changes to this API before the next Major Release will be backwards compatible. The feature is covered by our integration tests.
  • BETA: We don't anticipate any large breaking changes to the feature/API. It is covered by our integration tests, but it might change before the 1.0.0 release.
  • EXPERIMENTAL: Try it out and give us feedback! But you might want to wait a release or two before putting it into production.

The 0.6.0 release notes will include a table of all of our features and their API Stability Level in all four of our SDK's.