Let us assign a birth date of 10/17/2013 to the Open Source Nupic project. So here we are almost 3 years later (actually 2 years and about 9 months. Seems like the original goal was to get to a release version of 1.0 for Nupic Core. Last update to the Roadmap in the Wiki was 8/25/2015. Last update to Nupic Core Extraction in the Wiki was 10/14/2014. Last update to Docs/API/Nupic 0.2.7.dev0 was 07/14/2015. And by the way there are no docs. Last update to Docs/API/Nupic.Core was 07/21/2015. This documentation just contains links to sections in the Nupic Wiki.
So my question is, with the Numenta people getting ready to go into research mode for sensor HTM, who is going to be responsible for getting the existing state of Nupic software to version 1.0. IMHO, the final push to 1.0 can only be done by the Numenta staff. Not by the Open Source people.
I was expecting/hopping that version 1.0 would have been done in 2015. But now with the Numenta staff going to research mode for sensor HTM, I fear that it will be several years before we ever see version 1.0.
I totally missed this topic somehow, sorry @rhscJohn.
We haven’t been very good about keeping the roadmap updated. @scott and I know this is a problem.
The reason I haven’t considered it a high priority is because no one has been complaining about it anymore. I believe it was January 2014 when I asked the community the most important things they thought needed to be done to NuPIC. Pulling the C++ core out and separating it was the biggest thing, so that’s where the plan came from.
I’d say that work is 95% complete. The C++ core is not 100% stand-alone, but it is really close. Someone with the motivation and energy could create a Ruby binding and client library with encoders that extended the base encoder in C++, for instance.
The extraction plan hasn’t been updated because once we got NuPIC split up into two repositories with two different builds and release cycles, no one mentioned it again (until now).
We have been cutting releases whenever we’ve needed one for HTM Studio. Anyone can request a release. You want me to run one? I can deploy nupic.core 0.4.4 and nupic 0.5.5 in 30 minutes.
However you are right that the API docs hosted at Home | Numenta are out of date. They used to build automatically, but some infrastructure change broke it. I haven’t had time to fix it.
There are some really useful docs in there, although the codebase hasn’t been completely documented. For example, the spatial pooler and temporal memory classes are useful.
The question is: What do you want out of a 1.0 release?
We’ve discussed this a bunch on our old “nupic-hackers” mailing list (which is now #nupic:developers), but there’s no point in going 1.0 until we’ve switched our serialization technique to something that allows us to refactor the codebase. There are many refactorings we’d like to make before 1.0 that cannot be done until Capn Proto serialization is completed.
I’m prepared to call nupic.core 1.0 as soon as this is done:
There are only a couple more things there, and they are actively being worked upon.
But honestly, us calling a release 1.0 is not really going to change anything. It is just a line in the sand we drew a long time ago, and priorities change over time. We have made steady progress towards it, but since no one was complaining about not having 1.0 releases, I figured it was not important to work on. I’m interested to hear your further thoughts on the matter.
I have been of the opinion that Nupic wanted their idea/product out there
for the world to explore and use. To reach the widest possible number of
people. I think this is why Nupic.Core came into existence. You want to
have a cross platform C++ binaries that Nupic and/or others outside of
Nupic could write language API/bindings for other software languages. In
other words you want an ecosystem for HTM. You want/need APIs written in
Python, Julia, GO, C#, F# that will will interact with Nupic.Core. But you
have to have the Nupic.Core at a point, along with quality documentation,
that you can wrap it up in a package and say: Here is everything you need
to develop HTM models on your own. Go forth and write your language
specific API and create your own HTM models. That is version 1.0 and that
is how you exponentially expand your user base.