Everything You Need to Know About the New Monorepo  Lisk SDK

We will introduce Lisk Framework and discuss our recent move to merge it along with Elements and Commander to create the Lisk SDK monorepo. We will also discuss the renaming of Core 1.7.0 to 2.0.0 and identify this release as the first role model app created using Lisk’s SDK. Lastly, we will outline the next steps necessary for the release of Alpha SDK.

By Lisk

15 Apr 2019

evertyhing-you-need-to-know-monorepo-MAIN@2x.png

Hi Liskers,

In preparation for the release of Lisk’s Alpha SDK, we have merged our repositories into a monorepo structure. Today, we will take a closer look at the process of changing to this development strategy.

We will also disclose plans for the future of Lisk Core including the renaming of Lisk Core 1.7.0 to 2.0.0. We will also outline how this move improves development speed, code consistency and allows greater accessibility to our products. Lastly, we will discuss what it means for the first initial release of our SDK and what else needs to take place before Alpha goes to Mainnet. Please be aware that the move to a monorepo structure does not affect current node operators and no actions are required to stay compliant with the network.

First of all, what is a monorepo structure?

In the most basic terms, it can be defined as a software development strategy in which code that may refer to multiple projects is stored in the same repository, in our case, on our public GitHub. This particular strategy is used by many tech industry players including Google and Facebook, as well as top open source projects including React and Babel.

In the case of Lisk, the move to a monorepo means a couple of changes across our GitHub and product suite.

Monorepo structure enables faster development.

One of the main benefits for opting for this repo structure is that it allows faster development workflows. All products being developed as part of the SDK are now being worked on within the same repository. This means that, for example, we can now integrate Elements’ libraries into Core without publishing it to npm first. Similarly, any issue affecting products within the SDK can now be dealt with by producing one pull request instead of two.

The new approach enforces code consistency and third party accessibility.

Another perk of choosing this particular structure is that keeping our code within one repository enforces similar coding standards. This makes our code more accessible to external developers by being easier to read and easier to contribute to. Having more consistent standards will help us maintain and shape up the SDK with better quality.

Monorepo makes tools more accessible and easily installable by developers.

We see all of the packages included in this Lisk SDK repository as an essential part of the Alpha SDK. Combining those products into one repository as monorepo is a first step towards the one unified product named Lisk SDK. Our main goal is to have all the basic tools that are required for creating and interacting with blockchain applications as the SDK, and make them easily accessible and downloadable by developers.

Lisk Framework, Elements and Commander are merged into the Lisk SDK repo.

We have decided to merge Lisk Elements and Lisk Commander to the old Lisk Core repository and rename it to Lisk SDK. Following this, we will move the application part of our blockchain to a new repository which will be named Lisk Core. Lisk SDK consists primarily of an application framework, a collection of libraries providing blockchain application functionalities via Lisk Elements and a command-line tool provided by Lisk Commander.

It allows developers to manage a Lisk node instance and interact with a Lisk compatible network. At this point, we have chosen to not include Hub and Mobile into the SDK monorepo, as these products will not be integrated in the Alpha version of the SDK. The diagram below provides a high-level overview of the SDK architecture:

What is Lisk Framework and how is it different from Lisk Core?

As the name suggests, Lisk Framework combines all of the elements (libraries) and creates the business logic to be a foundation on which to create a blockchain application. It’s responsible for establishing and maintaining the interactions between the modules of a Lisk blockchain application. On the other hand, Lisk Core is an application that is created using the modules of Lisk Framework.

Lisk Core 2.0.0 will become an application built with the Alpha SDK.

First of all, due to the fact of the repository restructure and other breaking changes explained in this issue, we renamed the Lisk Core version 1.7.0 to 2.0.0 and the protocol version from 1.0 to 1.1 for the next scheduled release.

As mentioned above, Lisk Core is the blockchain application implementing the Lisk network (i.e. mainnet, testnet). The upcoming scheduled release of Lisk Core 2.0.0, will be the role model app created using Lisk SDK. Because Lisk Core is an application while Lisk SDK is a set of tools, files such as network configuration, docker and QA tools will become a part of Lisk Core repository.

The custom transactions are now becoming a central focus point of blockchain applications created using Lisk SDK and will be placed in “src/transaction” folder of Lisk Core.

There are three types of custom transactions that Lisk Mainchain implements: application registration (type 5), transfer of value to a blockchain application (type 6), and transfer of value from a blockchain application to Lisk mainchain (type 7). These three transaction types are considered as custom for Lisk application serving as a Mainchain to the Lisk network.

How are the three custom ones different from the default ones? The five default transaction types will be re-used in every blockchain application created using Lisk’s SDK. These include a value transfer (type 0), registering a second signature (type 1) and multisignature (type 4) to user’s accounts and two transaction types that implement the Delegated Proof-of-Stake consensus layer, as well as registering a new delegate (type 2) and vote/unvote for existing delegates (type 3).

Lisk SDK will start from version 0.1.0, and the official release of Lisk SDK Alpha will be at the production release of Lisk Core version 2.0.0.

What’s next prior to Alpha SDK release?

It’s important to note that the restructuring of the repo is not a singular event but a process. There are a number of steps necessary for the Alpha SDK’s release to be considered complete. These include:

  • Finishing the development and QA phases of Lisk Core 2.0.0, publishing the “lisk-framework” package in version 0.1.0 to npm repository
  • Moving the temporary folder “lisk” from “LiskHQ/lisk-sdk” to the new repository “LiskHQ/lisk-core”
  • Releasing of the upcoming Lisk Core 2.0.0 to Testnet and Mainnet

We will notify our community when the above actions have taken place. Please be aware that during this time our Documentation will also be undergoing significant changes. For up-to-date development instructions, please refer to the READMEs on the new repo.

Keep an eye on our channels for upcoming Alpha SDK updates. In the meantime, don’t forget to star the new Lisk SDK!

Lightcurve Development Team