numenta / nupic-legacy

Numenta Platform for Intelligent Computing is an implementation of Hierarchical Temporal Memory (HTM), a theory of intelligence based strictly on the neuroscience of the neocortex.
http://numenta.org/
GNU Affero General Public License v3.0
6.34k stars 1.56k forks source link

Replace NTA acronym to more intuitive and specific names #811

Open david-ragazzi opened 10 years ago

david-ragazzi commented 10 years ago

Ok, I hope this is not a controversial issue, but I feel that more people (both experts and newbies) wish that the NTA acronym spread over the code was replaced to more intuitive and specific names.. (from my cristal ball, I guess that NTA could be an acronym for NumenTA, right?)..

Although is not an easy issue to be solved in a single step we can achieve this goal gradually.. I mean that we don't need a single PR but several minor PRs along time in order to avoid any throubles..

So if you agree with this improvement, I suggest the following changes which be made individually for each situation bellow:


As $NTA is the location of the Nupic release, I think a more intuitive name would be $NUPIC_RELEASE. Anyway, as we make Nupic a pip-instalable package (https://github.com/numenta/nupic/pull/813), we'll discard environment variables.. So maybe we don't need create a PR for this (unless this removal process get slow).

nupic.core uses the nta namespace in all CPP projects.. I think that we should use the name nupic, in order to we have class names calls easy to follow like nupic.region for example..

All of these flags are used in both Nupic Python and Nupic C++ projects.. So flags like NTA_INTERNAL could be renamed to NUPIC_INTERNAL, NTA_PLATFORM_* to NUPIC_PLATFORM_*, and so on..

In all CPP projects we have #include directives like #include <nta/algorithms/Region.hpp>.. If we rename this folder we would have #include <nupic/algorithms/Region.hpp>.

Yes, I know this is a extensive issue and requires a lot of work, but I think if we solved it, we would avoid a lot of confusion which we seen until now..

Update:

I removed .core extension in the namespaces.

fergalbyrne commented 10 years ago

Hi David,

+1 on changing NTA into something more meaningful. I have a slight twist on your list:

  1. $NTA => $NUPIC_HOME
  2. nta namespace => nupic namespace (or NuPIC), thus nupic.Region (or NuPIC.Region), according to taste in case. No need to use Core.
  3. NTA* compiler flags +1 on NUPIC*
  4. nta folder => nupic folder, again no need for core.

Regards,

Fergal Byrne

On Tue, Apr 15, 2014 at 1:03 PM, David Ragazzi notifications@github.comwrote:

Ok, I hope this is not a controversial issue, but I feel that more people (experts and newbies) wish that the NTA acronym spread over the code was replaced to more intuitive and specific names.. (from my cristal ball, I guess that NTA could be an acronym for _N_umenTA, right?)..

Although is not an easy issue to be solved in a single step we can achieve this goal gradually.. I mean that we don't need a single PR but several minor PRs along time in order to avoid any throubles..

So if you agree with this improvement, I suggest the following changes which be made individually for each situation bellow:

1. $NTA envinroment variable:

As $NTA is the location of the Nupic release, I think a more intuitive name would be $NUPIC_RELEASE (until we discard fully env variables, of course).

2. nta namespace:

Nupic.Core uses the nta namespace in all CPP projects.. I think that we should use a name like Nupic.Core, in order to we have class names calls easy to follow like Nupic.Core.Region for example..

_3. NTA__ compiler flags*:

All of these flags are used in both Nupic and Nupic.Core projects.. So flags like NTA_INTERNAL could be renamed to NUPIC_INTERNAL, NTA_PLATFORM__to NUPIC_PLATFORM__, and so on..

4. nta folder:

In all CPP projects we have #include directives like #include <nta/algorithms/Region.hpp>.. If we rename this submodule folder we would have #include <nupic_core/algorithms/Region.hpp>.

Yes, I know this is a extensive issue and requires a lot of work, but I think if we solved it, we would avoid a lot of confusion which we seen until now..

— Reply to this email directly or view it on GitHubhttps://github.com/numenta/nupic/issues/811 .

Fergal Byrne, Brenter IT

Author, Real Machine Intelligence with Clortex and NuPIC https://leanpub.com/realsmartmachines

http://www.examsupport.iehttp://inbits.com - Better Living through Thoughtful Technology http://ie.linkedin.com/in/fergbyrne/ https://github.com/fergalbyrne

e:fergalbyrnedublin@gmail.com t:+353 83 4214179 Formerly of Adnet editor@adnet.ie http://www.adnet.ie

david-ragazzi commented 10 years ago

Hi @fergalbyrne I feel we should keep the "core" sub-division. On the contrary, how a newbie could distinguish Nupic.Region from Nupic.Cerebro or Nupic.Tools sub-projects? This sound weird.. Trust me.. So I strongly recommend keep these files grouped by the Core keyword (unless they have a more global scope like NTA_* compiler flags, and are not specific from Core algorithms).. So I'm suggesting these names just for avoid any confusion!

subutai commented 10 years ago

@david-ragazzi I'm a bit confused. I thought we were moving in the direction of removing these variables altogether.

david-ragazzi commented 10 years ago

@david-ragazzi I'm a bit confused. I thought we were moving in the direction of removing these variables altogether.

Yes, but only the environment variables will be removed soon (rename $NTA to $NUPIC_RELEASE would be only in case if this process of removal get very slow).. The remain code still will contain compiler flags, include directives, folder names, etc, using NTA acronym..

Anyway, I updated the text related to $NTA env variable to avoid confusion..

fergalbyrne commented 10 years ago

Hi David,

In C++, there's only nupic.core, so there's no need to include core in the namespace. Nupic.Region etc is fine. If we wish to build new C++ stuff, it'll be in new namespaces like Nupic.Clients.Cerebro (or I'd prefer nupic.clients.Cerebro ie lowercase for namespaces, CamelCase for ClassNames).

I'm not religious on the issue, but it's easy to discuss now rather than after we've implemented the changes..

Fergal

On Tue, Apr 15, 2014 at 4:50 PM, David Ragazzi notifications@github.comwrote:

@DavidRagazzi https://github.com/DavidRagazzi I'm a bit confused. I thought we were moving in the direction of removing these variables altogether.

Yes, the env variables will be removed soon.. but the remain code still will contain components (compiler flags, include directives, folder names, etc) using NTA acronym..

— Reply to this email directly or view it on GitHubhttps://github.com/numenta/nupic/issues/811#issuecomment-40498613 .

Fergal Byrne, Brenter IT

Author, Real Machine Intelligence with Clortex and NuPIC https://leanpub.com/realsmartmachines

http://www.examsupport.iehttp://inbits.com - Better Living through Thoughtful Technology http://ie.linkedin.com/in/fergbyrne/ https://github.com/fergalbyrne

e:fergalbyrnedublin@gmail.com t:+353 83 4214179 Formerly of Adnet editor@adnet.ie http://www.adnet.ie

subutai commented 10 years ago

Yes, but only the environment variables will be removed soon (rename $NTA to $NUPIC_RELEASE would be only in case if this process of removal get very slow)..

In that case I suggest we just focus on the variable removal rather than rename and then remove. Both changes are backward incompatible changes, so each change will take some time even renaming. From me, :-1: on changing environment names right now.

:+1: on the idea of making the namespace clearer. I agree with @fergalbyrne - I would recommend just nupic as well. In general I don't think we should create a deep hierarchy of name spaces - it gets awkward very quickly. We should try to keep it as flat as possible. Let's introduce more complexity only if we need it.

:+1: on the compiler flag changes.

:+1: 'nta' folder -> nupic. Again I don't think we need nupic_core.

david-ragazzi commented 10 years ago

@fergalbyrne wrote: nta folder => nupic folder, again no need for core.

@subutai wrote: 'nta' folder -> nupic. Again I don't think we need nupic_core

Guys, I still think it's interesting we use the same name of the nupic.core repo to keep the names aligned..

In the end, core means CLA, doesn't? For those that read the CLA white paper, it's very easy recognize nupic.core or nupic/core or nupic_core as the main algorithms while the remain code are support or client apps or whatever.

Please take a loot at my proposed default structure that aims to make nupic pip-instalable:

https://github.com/numenta/nupic/issues/809

Note that in the tree, CPP projects are separated from Python projects.. In the CPP sub-projects folder (/submodules folder in root), we have a /nupic_core folder that means "the core algorithms of nupic in CPP language".. In the Python projects that are spread over root, we have a /nupic/core folder that means "the core algorithms of nupic in Python language".. But why /nupic/core instead of /nupic? Because we need a folder called /nupic in root in order to distutils/pip know that folder is the main package and within this folder we would have core as mentioned and regions subfolder.. If we adopt nupic as global name as you are sugesting, we would have a folder or module with the /nupic/nupic namespace/path.. Is this ok for you?

rhyolight commented 10 years ago

@david-ragazzi What do you think the status of this ticket is now?

david-ragazzi commented 9 years ago

@david-ragazzi What do you think the status of this ticket is now?

Sorry, @rhyolight .. Now I see your message.. Its status is "paused". Each item on this PR requires changes throughout repositories.

oxtopus commented 9 years ago

nta namespace and folder need to be done at the same time. Otherwise, :+1: from me.

rhyolight commented 8 years ago

Looks like # 3 in the description is the last one that needs work. I'm going to mark this under-review until someone creates a subtask for that issue.