Riak(002) Going through dependencies.

After I tar xf’ed the Riak source, I found deps directory containing many packages. This night I go through these.

  • basho_stats is apparently a statistics library: variance, min, max and histogram.
  • bear also a statistics library.
  • bitcask serves as a backend. Other alternatives include LevelDB. This one looks like an interesting porting origin.
  • cluster_info dumps status of Erlang clusters.
  • ebloom says, it is a NIF wrapper around a basic bloom filter. NIF stands for Native Implemented Function, probably something similar to FFI in Haskell and so on. I didn’t know bloom filter either, but took a glance on the picture in the Wikipedia article.
  • edown says Markdown generated from Edoc. Well, yeah, there can be n(n-1) translators.
  • eleveldb: Erlang binding to LevelDB.
  • eper: Erlang performance related tools.
  • erlang_js sounds like a javascript library.
  • erlydtl compiles Django Template Language to Erlang bytecode.
  • folsom capturing metrics. Probably the previous stat libraries are used by this.
  • getopt seems like getting options.
  • lager logs in the traditional UNIX way. You can do error, warning and so on.
  • lager_syslog sounds like its interface to syslog.
  • meck mocking library for Erlang. I like the name.
  • merge_index stores ordered sets on disk. OK, this one uses the bloom filter on the memory to find locations on disk.
  • mochiweb is a web framework.
  • poolboy is a pooling library, like connection pooling. I love the name.
  • protobuffs for Protocol Buffers.
  • riak_api Riak API on protocol buffers.
  • riak_control lets you control your cluster on a web browser.
  • riak_core has its own blog post. TODO To be explored.
  • riak_kv is a key/value data store on top of riak_core.
  • riak_pb contains Protocol Buffers message definitions.
  • riak_pipe says it’s “UNIX pipes for Riak”.
  • riak_search is a full-text search engine.
  • riak_sysmon. System monitoring. Memory usage, ports usage, a slow peer node, and so on.
  • riaknostic an interface for sys admins.
  • sext is a term_to_binary() library.
  • sidejob. Oh what is this? README.md is empty. It involves workers and supervisors, but no clearer idea.
  • syslog is an Erlang driver for syslog.
  • webmachine is an HTTP framework built around REST principle.

It is a bit surprising to see these proliferating libraries. It seems that Prolog found its way out.