Skip to content

A set of libraries to create asynchronous, high performance, scalable and simple application.

License

Notifications You must be signed in to change notification settings

Codamic/hellhound

Repository files navigation

HellHound

IMPORTANT NOTE: This software is not ready to use yet. It's under heavy development and reaches the alpha stage pretty soon. If you like to be part of this process please leave me a message.


Build Status Clojars Project

What is HellHound

HellHound is a set of libraries to create simple and elegant programs based on streams. An HellHound application basically is a system of components which work together in order to achieve a common goal. Components form one or more data pipelines through workflows. In general systems are a great way to manage the lifecycle and data flow or your program and components are awesome for managing the state and dependencies of different pieces of your program.

HellHound provides different built-in components for different types of systems. For example Webserver component for creating a fullstack web application, or a kafka component for a data processing application. For more information checkout the guides and Examples.

Road Map for next stable version

Our near future goals are:

  • Support for configurable execution model for the entire system and components as well. In addition to manage the execution model of the system automatically by HellHound, We like to add a configurable execution model which allows users to change the behavior based on the use case. For example user might want to run a component on a blocking thread pool or control the number of threads in each thread pool under hood.

  • Support for Kafka streams. We're working on adding the support for kafka streams in our stream abstractions so users can easily take advantage of good features of Apache Kafka in their systems. (Development Started)

  • Support for IO spec for each component. The basic idea is to add the support for a pair of configurations to components that allow them to define specs for incoming and outgoing messages. It should be possible to enforce these spec on messages. Another purpose of having these specs is to create a diagram later that demonstrates how data transform in the system. This way by creating the diagram in any given time, as a developer we would have better understanding of our system and data flow. This feature would be awesome specially for new developers.

  • Better support for REPL driven development

If you like to help us with any of these. Give us a shout.

Branching guide

The master branch of this repo is for development purposes. In order to get the latest stable code please checkout the stable branch.

Where to get help

Why did we move from Github?

We're not happy with Microsoft buying Github and we don't trust a company like Microsoft because of their history and their strategies (For more information take a look at (Halloween documents). So we decided to move to Gitlab as an alternative and we are happy here (Gitlab) so far.

License

Copyright © 2016-2018 Sameer Rahmani <@lxsameer>.

Distributed under the MIT License.

Packages

No packages published

Languages