-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Document the proposed directory structure for nupic.core and nupic #591
Comments
@david-ragazzi If I remember correctly you took a crack at laying out the directory structure before. Do you want to propose something? Cheers, Subutai |
Yes @subutai ! I think we should have a default directories structure for each repo in order to Nupic repositories follow the most used convention on open-source projects. PR #499 has the details about a example for Nupic repository:
@scottpurdy has commented in other messages something similar when suggested a "src" folder to put only code. I don't remember where.... hehe Summary of the discussion Proposed structure until now:
In Travis file at nupic.core repository, the process is something like:
|
I like @david-ragazzi suggestions. I am more familiar with C++ code living inside a I looked for a C++ project on Github and the first one I found was https://github.com/rethinkdb/rethinkdb |
@scottpurdy I liked the project structure in your suggested link. Just to avoid the same confusion in PR #499 : |
I never liked the name of of |
@rhyolight I have no idea.. but I believe there's not default name... Some suggestions:
What do you think? Ah.. this folder name is only for internal use (i.e. travis build), so any other name wouln't have any problem with CMake file. The user is free to choose any name. However I believe even so all should adopt this convention for avoid future confusions with names on mail list. Just a suggestion.. |
I've seen "work", "temp" or "scratchpad" used variously for such transient directories. I'm not aware of any standard name however. |
I'd suggest keeping all the directory names lowercase, and src, build (sith build/libs, build/bin) etc are more conventional than the other suggestions. Everyone will simply understand those names. |
I like @fergalbyrne 's suggestions. With python packages that require C++ compilation, the convention is also to put everything under build. So, build/lib, build/bin, etc. They also put generated files in there. So build/temp would contain the generated files. This way the user just has one directory to delete if they want to manually clean everything. |
I liked @subutai idea on put everything related to build on
This way we combine @subutai, @scottpurdy and @fergalbyrne suggestions in a single structure. |
Sounds good to me. |
Yes, everything generated should definitely be placed in a subdirectory under "build". Within the build directory most projects have various directories indicating what gets placed in each rather than a catchall "temp" directory. For instance, Chromium has "master", "scripts", "site-config", "slave", "test", etc all within the build directory. |
Therefore Completely separating As we will eventually be building
Would plough into nupic and the generated files for So we could, for example, have this directory structure:
Say you wanted to build
Sometimes one justs wants a clean |
@david-ragazzi Can you take the suggestions we've received above and re-draft your initial proposal? |
@sjmackenzie I understand you concern but I don't believe this is a Autotools stuff.. And although Autotools uses similar convention, the concept is not restrained to this tool. @ALL: The own Travis could update the |
Ah yes correct there is the |
@david-ragazzi One could easily put the That's great that Travis has a 'download binaries' feature! |
don't forget the |
Isn't supposed that such information about how get only the binaries should be in Readme.md? And although I'm not a GitHub expert, I believe that it has some packages management, i.e. packages only the source or the binaries which users could donwload them separately..
Do you mean folder wih header files when you say |
I amended my comment by adding |
Typically you do not need to worry about binary distribution.
Our main concern is making life easy for developers and achieving a flexible yet standardized development environment that becomes the 'culture' of nupic development communicated via the Readme. |
Maybe I am confusing the things.. but.. Isn't Nupic dependent of Nupic.Core, but not the inverse? From my understanding, Nupic should gets the only output generated by Nupic.Core, not interfere on Nupic.Core build process. |
Dependency is not part of my discussion. But I will include it now as I see a discontinuity between what we are saying. This is what we are working towards that we do not have now: What we have now ( a temporary stop-gap situation that will help us to the above goal) is to allow The transition: This way the transition is safer and core builds independently. Changes are done in little steps all nupic is stable. If you want to focus only on getting Hence it is better to get That is why |
@sjmackenzie Now I understood you and I agree in many points. However, since that CMake can run in parallel to Autotools, we can implement and test this without any headache.. After that the CMake files in each repo are working ok, we just remove Autotools stuff.. and voilá. Anyway, your suggestion is fine. It's a top-down approach for this job, while mine is bottom-up.. But remember To say truth, I sincerely don't now how to do it without first ensure that
Yes, as I said in other message, the own user could choose another location, but CMAKE_INSTALL_PREFIX need have a initial value. So as $NTA still is not configured, CMAKE_INSTALL_PREFIX and $NTA is set to the subfolder |
I am not familiar with CMake. In my experience, doing a We also need to remove the need for environment variables to support simple installation mechanisms like pip or other package managers so please try not to rely on $NTA or similar. |
This would be a good topic for the nupic-hackers mailing list. |
Can we agree that the I think we're at this point now for
Does anyone disagree strongly with this? If not, let's move to discussing the |
@david-ragazzi You're talking about #9 now. My suggestion is to make a space for tests, but don't worry about getting them running until after the src folder builds as envisioned. Then we can merge that PR and confirm it's all building in Travis before moving on to #9. |
@rhyolight OK, here's the issue: numenta/nupic.core-legacy#19 |
Just a little change: I moved |
OK, sounds good. Will |
I really dont know give a concrete answer, but I'll research more how address this.. at first moment, they should continue spreaded over
Yes, if any project has tests, they should go to
It's supposed that they will go into |
Thanks, sounds good!
Sorry, I meant the source code for executable applications. (Currently there's a separate
or
|
I liked the second one.. At end, apps also are examples.. :-) |
OK with me! :-) |
Re: examples I find it strange that examples would be a child of src. Examples are, of course, available as source code, but they are not part of the required source code of nupic. Examples are consumers of nupic, and their primary purpose is to be an entry point. The first time I clone a repo I start looking for examples as a way to understand what is possible and how to use the code. Many times those examples are totally external to the repo, but when they are available as part of the repo, I want to interact with them BEFORE I dive into the source of the project itself. So while it sounds like it might be non-standard I will suggest that examples should be a top level directory. |
@iandanforth I think the future of Nupic will be a global and all-in-one repo. Thought it, newbies will have their first contact with the HTM approach as you said. This said, what could be confusing you is the So if I'm correct we won't have code related to CLA in this repo.. My feeling is that Nupic will have CLA (nupic.core and its bindings), OPF, etc, and put all in a same place, i.e. Nupic repo. But it won't contains much code, instead, it will consume these subprojects though dynamic/static libraries. The users will can see their application though examples contained in the folder with same name.. |
Hi guys, I have a small query about include directory now. Should we define a small set of rules for include file locations? |
I agree with you. The current convention adopted by Numenta (which it's very easy to follow) is:
IMO I don't see any need for separate .h from .hpp or .c from .cpp.. |
@david-ragazzi We have nupic.core/include, nupic.core/external/common/include, but not nupic.core/src/include. Is this what you mean? I'm wondering what kind of include files reside in each directory. |
Is external not the place where you put your dependencies? I assume the On Mon, Mar 24, 2014 at 8:37 PM, Hideaki Suzuki notifications@github.comwrote:
Fergal Byrne, Brenter IT http://www.examsupport.iehttp://inbits.com - Better Living through e:fergalbyrnedublin@gmail.com t:+353 83 4214179 |
Sorry guys, ignore last. Hideaki, At the moment nupic.core depends on some common external (ie non-nupic) nupic.core build process will output libraries (for your platform) in On Mon, Mar 24, 2014 at 9:06 PM, Fergal Byrne
Fergal Byrne, Brenter IT http://www.examsupport.iehttp://inbits.com - Better Living through e:fergalbyrnedublin@gmail.com t:+353 83 4214179 |
This was solved by #965 and numenta/nupic.core-legacy#47 |
As a part of the
nupic.core
extraction, we need to create some documentation of the proposed directory structure after the extraction is complete. This should include both repositories, as well as details about where thenupic.core
dependency exists withinnupic
.The text was updated successfully, but these errors were encountered: