What would motivate you to put work into an AGI project?
1) A reasonable point of entry into the project
2) The project would need to be FOSS, or at least communally owned.
(FOSS for preference.) I've had a few bad experiences where the project
leader ended up taking everything, and don't intend to have another.
3) The project would need to be adopting a multiplex approach. I don't
believe in single solutions. AI needs to represent things in multiple
ways, and to deal with those ways in quasi-independent channels. My
general separation is: Goals (desired end states), Desires (desired
next states), Models, and logic. I recognize that everything is
addressed by a mixture of these approaches...but people seem to use VERY
different mixtures (both from person to person and in the same person
from situation to situation).
4) I'd need to have a belief that the project had a sparkplug.
Otherwise I might as well keep fumbling around on my own. Projects need
someone to inspire the troops.
5) There would need to be some way to communicate with the others on the
project that didn't involve going to a restaurant. (I'm on a diet, and
going to restaurants frequently is a really BAD idea.) (N.B.: One
project I briefly joined had a chat list...which might have worked well
if it had actually been the means of communication. Turned out that the
"inner circle" met frequently at a restaurant and rarely visited the
chat room. But I think a mailing list or a newsgroup is a better choice
anyway. [The project was successful, but I think that the members on
the chat group were mainly a diversion from the actual work of the
project.])
6) Things would need to be reasonably documented. This comes in lots
of forms, but for a work in progress there's a lot to be said for
comments inserted into the code itself, and automatically extracted to
create documentation. (Otherwise I prefer the form that Python
uses...but nobody else does that as well.)
7) LANGUAGES: Using a language that I felt not completely unsuitable.
After LOTS of searching I've more or less settled on Java as the only
wide-spread language with decent library support that can run
distributed systems with reasonable efficiency. There are many other
contenders (e.g., C, C++, Fortran, Alice, Erlang, and D each have their
points), and I don't really *like* Java, but Java, C, and C++ appear to
be the only widely used languages that have the ability to run across a
multi-processor with reasonable efficiency. (And even there the
techniques used can hardly be called widespread.)
7a) Actually C and C++ can be suitable if there are appropriate
libraries to handle such things as garbage collection, and protocols for
how to save persistent data and then remember it later. But I still
don't like the way they make free use of wild pointers.
7b) I wonder to what extent the entire project needs to be in the same
language. This does make understanding things easier, as long as it's
small enough that someone can understand everything at a low level, or
if the entity should ever want to understand itself. But there are
plausible arguments for writing things in a rapid development language,
such as Python or Ruby, and then only translating the routines that
later need to be translated for efficiency. (If only those languages
could execute across multiple processors!)
-----
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?member_id=231415&user_secret=fabd7936