What is a community fork?

What is a community fork? In any event I’m working on my nupic Visual Studio fork.

Usually on a software project in Github, developers fork nupic once, and everyone has their own local forked copy. PRs are created from the forks and compared to master, and must be approved before merging. We are not actively developing NuPIC or nupic.core at the moment. They are both in maintenance mode. All our engineers are researching, not writing production code. So we don’t have the engineers to process the large code changes required for an endeavor like updating to python 3.

So the alternative is a community fork. Any fork of NuPIC could diverge from master at any time. So when I say community fork I mean one that is maintained by the community and diverges from master.

Because our repos are in maintenance mode, we don’t expect it to change very often, so keeping these divergent forks up to date with master probably won’t be hard. But if there is going to be a community fork, someone should be in charge of merges and keeping it up to date with master (if that is favorable).

Thanks Matt!

Hi there!

I just joined the community, so pardon my learning - there’s a lot here; I’ve been trying to figure out where to start. I’d love to jump into the HTM world, but I’m used to a completely different environment than python and C++. I’d love to see a particular flavor of nupic: C#. I’m comfortable with it; I like it - I can focus more on HTM than learning new tools and languages, for now at least. The nupic extraction plan outlines an approach to support multiple environments and languages using C++ and Swig. I want to see if C# could be supported using that approach. I’ve been trying to get a Windows build to work in VS 2017, so I’ve been looking at what @chhenning has been working on. I’ve not been successful. Core still seems to be tied to python. Is this true?

Is nupic.core ready for multiple language bindings, and if not… is there any community effort to complete its extraction?

–Matt

No, nupic.core is not tied to python. It contains swig bindings for python.

Yes it is. I’d love to see a community effort to add more language bindings. If you plan on adding C# language bindings, I’ll do whatever I can to get it into master.

Cool. Should that be tracked in a forum post? Github issue? A bindings label?

@heilerm You’re in the right place! Here is a link to our process (start with #2): Development Process.

What happens to those community forks when nupic.core goes back into development mode (I’m presuming it will)? Is the answer subjective? Will pull requests be considered, or will those community forks be abandoned and/or be required to handle the conflicts? There might be a community few forks that have gone in very different directions from one another.

What happens to those forks is 100% up to the community itself. If people take responsibility for them, we should assume it is out of good faith and support their efforts. Some projects might get popular and start their own branches of the community as well. That’s okay. All projects have a different culture that either develops organically or is patroned by a leader. Leaders will emerge as HTM gets more traction. HTM is starting to get more traction as the ML community investigates neuroscience. Now is a good time for leaders to emerge!

I have no idea, honestly. nupic.core has had a few minor updates since we went into “maintenance mode” but nothing game-changing. The research team only updates it with minor frameworky changes when necessary for new configurations. I do not think there is going to be a lot of activity here in the near future, but I cannot forecast what we’ll be doing at Numenta in a few years. So :man_shrugging:.

@rhyolight, I have general question regarding community forks. As you might remember I’m trying to get nupic to work with python 3 and it’s looking pretty good. For that I’m using a python c++11 wrapper called pybind11. I’m wondering what I need to do with the source files I have created. Should I add the Numenta license header or a different one with same “GNU Affero Public License version 3” license?

Thanks,
Christian

1 Like

For new files you add to the repo, I would add a copyright header like this, replacing YOUR NAME HERE with the authors of the changes:

# ----------------------------------------------------------------------
# Numenta Platform for Intelligent Computing (NuPIC)
# Copyright (C) 2017, YOUR NAME HERE.  
#
# Unless you have an agreement
# with Numenta, Inc., for a separate license for this software code, the
# following terms and conditions apply:
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero Public License version 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero Public License for more details.
#
# You should have received a copy of the GNU Affero Public License
# along with this program.  If not, see http://www.gnu.org/licenses.
#
# http://numenta.org/licenses/
# ----------------------------------------------------------------------

For updated files, modify the copyright to add your name, like this, replacing YOUR NAME HERE with the authors of the changes:

# ----------------------------------------------------------------------
# Numenta Platform for Intelligent Computing (NuPIC)
# Copyright (C) 20XX, YOUR NAME HERE.  
# Copyright (C) 2013, Numenta, Inc.
#
# Unless you have an agreement
# with Numenta, Inc., for a separate license for this software code, the
# following terms and conditions apply:
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero Public License version 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero Public License for more details.
#
# You should have received a copy of the GNU Affero Public License
# along with this program.  If not, see http://www.gnu.org/licenses.
#
# http://numenta.org/licenses/
# ----------------------------------------------------------------------

You are not allowed to change the license of the codebase in the community fork unless you have over 50% of the copyright holder’s agreement (100% of the copyright is owned by Numenta aside from the changes others make in the fork, so it will be quite a long time before the community has the ability to change the license).

2 Likes

Moved from #nupic:developers into #nupic:community-fork.