/htm.pony

an HTM experiment in Pony based on the Go implementation https://github.com/htm-community/htm/

Primary LanguagePonyGNU Affero General Public License v3.0AGPL-3.0

HTM.Pony

Build Status

Rough Plan

  • Start with porting the Go version to Pony using classes at first
  • Once an opportunity arises to parallelize, start experimenting with actors & benchmark
  • When the Temporal Pooler is ported, align the implementation with the latest NuPIC/htm.java details
  • No attempt at proactive refactoring is made at the moment. When a rough working version is made, it might make sense to reimplement whole classes/actors
  • Error handling is ad hoc currently, and will need to be designed once there is a high level executable that uses the library. Trade-offs: errors, logging & partial functions vs explicit union return types
  • continue

Contributing

  • Open or take an issue for the next small problem to solve, and open a PR if there's some code to be merged
  • If there are tests and these pass in CI, the maintainers should merge the PR into master
  • After a successful PR, the contributor may become a maintainer if so desired
  • Should merge conflicts arise, the master will be protected, all work will be done via PRs
  • Long-lived branches are to be avoided. All progress should go into the master branch as soon as the tests are green
  • If there's significant traction, we'll switch to the ZeroMQ process C4 and a protected master

Getting Started with Pony

Current Maintainers

Progress

  • Sparse Binary Matrix, Dense Binary Matrix: Go tests translated & running. Untested Go code left for later
  • Initial implementation ready: Scalar Encoder (#1)
  • Next: Date Encoder (#2), any other chunk with minimal dependencies

Developing

  • Install Ponyc
  • Compilation: ponyc from the test folder produces the test executable

Dependencies

License