I am pleased to tell you about a change we recently made to our research
process. We have made our day to day experimental code public.
As you may know, we already released our commercial HTM algorithm code to the
NuPIC open source community in the form of the
NuPIC project. We use that exact codebase in our product
Grok. The NuPIC open source community and
Numenta actively work together to continually maintain and improve this code
Within Numenta we continue to evolve and expand HTM theory. Our goal is to
create a complete cortical theory and codebase, including such topics as
sensorimotor integration, attention, hierarchy, and others. Our research ideas
are constantly in flux as we tweak and experiment. To support the research we
have, up until today, maintained a separate internal codebase that sits on top
Interest in HTM has grown tremendously and we get many questions about our
research. Over the last few months we have openly discussed fundamental ideas
around sensorimotor inference, temporal pooling, hierarchy, etc. on the
HTM Theory Forum.
Numerous people in the NuPIC community have been actively engaged in deep
Given this interest we wondered whether it would be possible to be more open
about our work. What if we released our day-to-day research code to a public
repository? There are potential downsides. Research code can be very rough –
would people get confused? Would they become discouraged or even skeptical about
the theory if what they see is not yet working? We might get many questions
about it – would that slow us down? On the other hand, exposing our work-in-
progress would give members of the community visibility as to our priorities,
help them understand more deeply the theory, and create an opportunity to
solicit their ideas and improvements.
We floated the idea and discussed the tradeoffs with the NuPIC developer
community. The feedback we received gave us the confidence to proceed. I’m
happy to share that we just created an experimental public
nupic.research repository on
GitHub. This directory is small right now, but active. The code includes our
current prototypes and experiments around sensorimotor inference.
I do want to emphasize one point; this is not code we push only after things are
working well. This is code as we are working on it. We make regular pull
requests and check-ins. We use GitHub to track our day to day tasks, and it
contains our internal conversations about the code. It provides an almost real
time view into the research being performed at Numenta.
This change is an experiment in conducting research in the open. We don’t know
how it will turn out. If this idea works out well, over time the repository will
grow to contain just about all our research code. If not, well, we’ll just stop
doing it. It’s all in the spirit of research!
P.S. There is some fine print. This code is all temporary and experimental. We
can’t make any guarantees about it. Currently we are not accepting pull
requests, though this might change down the road. However you are free to copy
and use it under the terms of the AGPL license*. Please see the
README file on GitHub for more fine print and details.
*This content has been updated to reflect our
new AGPL license.