/knotx

Knot.x is a highly-efficient and scalable integration framework designed to build backend APIs

Apache License 2.0Apache-2.0

If you are directed here from https://github.com/Cognifide/knotx or you are looking for Knot.x 1.X version please see this repository Tags, the latest 1.6.0 version code is available here along with the documentation.

Knot.x Logo

http://knotx.io

web integration framework

Knot.x is an open source framework integrating content from different sources like headless or traditional CMS, with systems like CRM, e-commerce or search engines.

The heart of Knot.x is the HTTP Server that uses Fragment Processing to connect many data sources into one customer experience (like HTML, JSON or PDF) in the configurable, reactive, scalable and fault-tolerant way.

Knot.x comes also with a distribution that enables quick start with the framework, is a project structure and supports deployment automation (see the Cookbook and Docker images). With the Starter Kit template project, you can setup your project in a few minutes.

We build Knot.x on top of Vert.x, known as one of the leading toolkits for performant, event-driven applications. It uses asynchronous programming principles which allows it to process a large number of requests using a single thread. Asynchronous programming is a style promoting the ability to write non-blocking code (no thread pools). The platform stays responsive under heavy and varying load and is designed to follow Reactive Manifesto principles.

How to start

See knotx.io for tutorials and examples. See Knot.x Example Project for usage case examples. See Knot.x Starter Kit template project. See https://github.com/Knotx extensions for user and developer documentation.

For more information on Knot.x and where Knot.x fits into the big picture please see http://knotx.io.

Community / Issues

All feature requests and bugs can be filed as issues on GitHub. Do not use Github issues to ask questions, post them on the User Group or Gitter Chat.

GitHub issues labels

Knot.x project have couple of custom labels for issues board (also issues for each repository) to make it easier manage the tickets. Some of them are:

  • configuration - tickets that have impact on Knot.x configuration and deployment.
  • discussion - this is an open discussion over a feature (that e.g. may break compatiblity) - everyone is welcome to participate with comments and ideas.
  • performance - tickets that have impact on system performance, e.g. some improvement.
  • wiki - stuff with documentation e.g. missing documentation or wiki structure update.

Backlog and Releasing

Release Semantic Versioning

Knot.x releases follow Semantic Versioning 2.0.0 guide. Each release has a version number MAJOR.MINOR.PATCH. Those numbers are incremented when:

  • MAJOR version when Knot.x introduce incompatible API changes or major architecture refactoring,
  • MINOR version when Knot.x introduces new complex functionality in a backwards-compatible manner, MINOR dependencies updates (e.g. Vert.x or RxJava), and
  • PATCH version when Knot.x introduces backwards-compatible bug fixes, small improvements or PATCH dependencies updates (e.g. Vert.x or RxJava).

Changes tracking

Knot.x provides two sources of tracking the changes:

  • CHANGELOG.md for each repository, where all notable changes for the module are documented with links to the tickets and detailed description.
  • Upgrade Notes section in the release blog, where all crucial changes that concerns users during the migration (e.g. additional parameters, bugfix and workarounds, API/configuration changes, dependency upgrades like Vert.x or RxJava) are pointed out.

When to migrate

  • MAJOR - new project start or planned migration - migration may require a significant effort.
  • MINOR - if you need some improvements that are in this release, planned migration - migration may require a minor effort.
  • PATCH - as often as possible, no compatibility break, only bugfixes or very small improvements that does not change any system logic - migration should not take any effort.

Bugfixes support and releasing

Knot.x as an Open Source project supports the last MINOR release with bugfixes released regularly as PATCH releases, until the next MINOR or MAJOR release.

Work in progress and milestones

Knot.x roadmap is build of milestones. All MAJOR or MINOR improvements are developed on feature branches that are reviewed and merged to the current milestone/goal-of-milestone branch which is frequently updated with master branch (that contains bugfixes and small improvements that are subject of PATCH releases).

When all milestone goals are finished, MAJOR or MINOR release is announced, milestone branch is merged to master branch and new Knot.x version is released.

We treat master branch as a stable branch that is always ready to release.

Clear milestones, progress and branching

We are working on the next major/minor versions using milestone goals. You may always see the current milestone goal in Knot.x Roadmap board in the Current milestone column. This board contains:

  • Backlog that contains all areas that require some investigation and are candidates for the future milestones.
  • Next milestone - all candidates for the next milestone.
  • Current milestone - tickets representing the goal of the milestone we are currently working at. When all milestone goals are finished, we release the next version of Knot.x.

License

Knot.x is licensed under the Apache License, Version 2.0 (the "License")