The BECCA project welcomes volunteers who want to contribute to the goal of creating Artificial General Intelligence.
There are are two different but equally important ways to contribute code: Core and Extensions. The Core is the essential code that is included in the BECCA download package. Extensions include Agents, Worlds, and other integrations that implement BECCA for a specific task or enhance BECCA in a particular way. Anyone can register for a user account and start a project on this website to host releases and coordinate development on an extension.
While the Core is still very much a work in progress, it strives for several key ideals that potential contributors should keep in mind:
- Usability -- a new user can apply BECCA to their project with a minimum of effort and pain.
- Readability -- a new developer can get oriented in the code with a minimum of effort and pain.
- Brevity -- the number of packages, modules, methods, and lines of code are minimized.
- Performance -- it works well and quickly.
So if performance can be increased by 0.2% by importing another package or adding another module, I'd say it's not worth it. But an increase of 50% would probably merit it. This may also mean neglecting some code development best practices because of their verbosity. Adding another layer of abstraction in places may make the core more easily extensible, but that may not be worth making the it harder to navigate.
There are no hard and fast metrics for these principles; they are more of an aesthetic that Core contributors should work toward. A Lego brick and a Ferrari represent extremes on a spectrum of well-engineered products. The Ferrari is a high performer, optimized, with a whole lot going on under the hood. It does one thing and it does it really really well. The Lego brick is very simple, clean, and robust. It's not perfect for any job, but can be used to do an amazing number of jobs. Becca should lean toward the Lego end. Compare the relative number, age,(and wealth!) of Lego users with those of Ferrari drivers. We hope for Becca to have a Lego-like user base: large and diverse. Ferrari drivers rarely service their own cars. Lego builders not only service their creations, but develop them.
It should be emphasized that the above guidelines are intended for the BECCA core only. Developers are encouraged to create Extension projects that break any or all of those ideals as they see fit.
BECCA Core collaboration is managed with GitHub, so developer who wish to submit patches may wish to begin by forking the repository there. The GitHub URLs are listed on their respective project pages. Patches can be submitted via the Project Issue Queues, eithe rin the form of an attached patch file, or a URL to a Github pull request.