Announcing CSML, a new open-source language dedicated to building powerful, enterprise-ready and interoperable chatbots
Tags: chatbots, programminglanguage, ai, rust
Published: 2020-01-14 19:40:54

Chatbots are a powerful tool as a universal UX to solving automation issues at scale. Like the web before, followed by mobile applications, chatbots are very good at providing an easy-to-use interface for end users to effortlessly perform repetitive or complex actions in a natural interface.

However, creating a scalable, enterprise-ready chatbot today is still unnecessarily complex. All chatbots in 2019 are created with one of only two methods: either by using any of the available free or inexpensive drag and drop graphical tools, which enables non-technical people to get started quickly, but scales very poorly, can not be versioned using standard tooling, and does not easily allow for exportation (strong vendor lock-in); or by using a generic programming language (javascript, PHP, python…), which lacks a common standard, requires a lot of unnecessary and repeated boilerplate to achieve even basic features like memory handling, and often induces high development costs and slow goto market.

Market consolidation has already proven that Javascript has won the battle for the web, and most serious iOS applications today are written in Swift, while Java is used for Android applications. As most large companies worldwide are now involved in at least one conversational program, the underlying technology and tooling is outdated and due for a global standardisation.

![CSML logo](https://miro.medium.com/max/1726/1*QoR3pppB9si6cGtX13GtzQ.png)

# Introducing CSML, a new programming language for conversational design

The [Clevy](https://clevy.io) team is proud to release today a new solution to this long-standing problem in an open beta program: the [Conversational Standard Meta Language (CSML)](https://csml.dev), a common language for all chatbots.
CSML’s objective is to make designing conversational experiences as intuitive as possible, drastically reducing the time and costs to create and deploy any chatbot at scale compared to all existing platforms and make it as easy as possible to connect any human with any machine.
Written itself in Rust (a low-level, fast, memory-efficient and safe programming language), and fully Turing-complete, the CSML acts as a linguistic/syntactic abstraction layer, designed for humans who want to let other humans interact with any machine, in any setting. The syntax is designed to be learned in a matter of minutes, but also scales to any complexity of chatbot.

CSML automatically does the heavy-lifting of all conversational concepts without any added complexity for the developer: memory, context, metadata, message formatting for the target channels, conversational logic, interoperability with third-party systems, API-agnostic integrations…

The documentation of the language is publicly available on [https://docs.csml.dev](https://docs.csml.dev). We also provide a free, full-featured development studio (REPL) on [https://studio.csml.dev](https://studio.csml.dev).

# All conversations start with a common language

The principle used by CSML is to treat the entire conversation as a series of separate events, linked by the same conversational context, instead of request by request. Each event is a reaction — potentially cumulatively — to the event preceding it; a trigger for an event that must follow it; or totally independent.

Nominally, the language itself is structured like the train of thought of a young child: everything is sequential and consists of descriptions. When asking a child about their day, they would usually answer somewhat like:
> I went to school, and then I had lunch, where I ate a steak and fries, then I played with my friend Kevin, and then we had ice cream.

This also means that after this last part, the conversation can end there, continue (“do you like ice cream?”) or a new subject can be picked up (“let’s go to the swimming pool now”). The sequential nature of a child’s reasoning makes a great comparison with how current chatbots can handle conversations: as a stream of individual bits of information, that can either be taken independently, or attached to other bits of information in a sequence.

Either way, a child learns from their interactions. The more the bot chats with the user, the more it learns about the user and their preferences. Everything is memorized and saved in the bot’s memory about the user to be reused later, so that no information needs to be asked twice.

We have worked for many months with computational linguists to transpose this inherent logic of natural conversations (and not just natural language) into the CSML. The result is an incredibly simple and natural framework to build just any chatbot about as easily as imagining a conversation.

![A simple CSML chatbot flow to receive non-stop cat gifs 😸](https://miro.medium.com/max/3656/1*ZyKW_krqnCtSbPp_I05SSQ.png)
_A simple CSML chatbot flow to receive non-stop cat gifs 😸_

# Connecting humans with any machine

[CSML](https://csml.dev) is designed to be interoperable with any API-enabled third-party system. We understand that many of our users will want to run their own code directly inside the conversational engine, which is why we make it possible to integrate any language runtime (using any FaaS platform, in the cloud or on-premise) that enables chatbot developers to execute custom code in Javascript, Python, Go, Java, C#, or interconnect with their other systems natively from any CSML script.

The immediate benefit is that CSML makes it possible to reuse existing code with no or very little modifications, or use built-in connectors with popular systems (ServiceNow, SAP, Microsoft Office 365, Zapier, Workday, Salesforce…) or communication channels (Messenger, Teams, Slack, Workplace, Discord, Skype, Hangouts, Alexa, Google Home, Twilio, websockets…).

## CSML is open-source

We are committed to helping the community benefit from this new programming language as much as possible.

To ensure that any entity, company or person, involved in a conversational program, can commit to using this new game-changing language, we will be releasing the full CSML source code in the coming months.

Chatbots are no more than natural interfaces to machines. As a language dedicated to creating chatbots easily, the CSML engine natively includes a modern package system, allowing developers to create, share, or download reusable bots or parts of bots. We will also be providing original content (bots, functions, integrations…) in the form of plugins, that can be added to any bot as installable dependencies.

## CSML is secure

One of the side-effects of open-sourcing the CSML is that you can ensure that nobody can ever access your previous customer data by running it on your own servers. Some of our early users have been using the CSML in entirely private environments, sometimes even inaccessible from the internet; others prefer to run it in their own cloud environment: by default, CSML comes with easy-to-use bindings to AWS services like DynamoDB for storing the bot’s databases and AWS Lambda to execute code in any major programming language, in addition to SQLite and FaaS platforms like OpenFaas or FnProject for custom runtime executions. The CSML engine also comes with easy-to-deploy, stateless Docker containers.
In addition to network separation and deployment flexibility, one of the leading design principles of CSML has been to ensure that all data is stored safely and securely: by default, all sensitive user data is stored encrypted using strong 256-bit AES encryption — the gold standard for military-grade encryption.

## CSML is scalable

CSML is built with large enterprises in mind, who want to go beyond the proof-of-concept phase without inducing immense development and product management costs, while not limiting themselves in what they can or can not do with their chatbot. We want to empower developers to create what they want without technical barriers. We want to make sure that CSML chatbots can accept any number of conversations. We want to make CSML available in the cloud, on-premises, or even offline.

The architecture of the CSML engine was designed to address all these constraints and handle any number of conversation, from a few to a few millions, without any restriction. Small bots can be created in minutes, then expanded to any arbitrary size of enterprise-grade bots later. With CSML, you are in control of your chatbot development project with very little boilerplate and a standardized lifecycle and development process, maximizing return on investment for your team.

# Build your CSML chatbot in minutes!

If you are intrigued by this new language, give it a try! You can setup your chatbot in minutes by signing up for free to the beta at https://studio.csml.dev.