Difference between revisions of "How to get involved"

From PROSE Programming Language - Wiki
Jump to: navigation, search
m (Subprojects)
m (Subprojects)
Line 27: Line 27:
 
:* Implement LDAP schema checking and syntax rules.  There is some stub support for both already embedded, but neither are actually implemented.  See bug id [https://sourceforge.net/apps/mantisbt/prose/view.php?id=5 #5] and [https://sourceforge.net/apps/mantisbt/prose/view.php?id=6 #6].
 
:* Implement LDAP schema checking and syntax rules.  There is some stub support for both already embedded, but neither are actually implemented.  See bug id [https://sourceforge.net/apps/mantisbt/prose/view.php?id=5 #5] and [https://sourceforge.net/apps/mantisbt/prose/view.php?id=6 #6].
 
:* LDAP schema should be compiled at first use for faster subsequent start-up times.  See bug id [https://sourceforge.net/apps/mantisbt/prose/view.php?id=7 #7].
 
:* LDAP schema should be compiled at first use for faster subsequent start-up times.  See bug id [https://sourceforge.net/apps/mantisbt/prose/view.php?id=7 #7].
:* Load PROSE modules only when needed.  The ''cltrig'' parameter in a module configuration file exists to support this concept, i.e. the module should only be loaded when the named object class is first referenced.
+
:* Load PROSE modules only when needed.  The ''cltrig'' parameter in a module configuration file exists to support this concept, i.e. the module should only be loaded when the named object class is first referenced.  See bug id [https://sourceforge.net/apps/mantisbt/prose/view.php?id=11 #11].
 
:* Implement virtual attributes.  A virtual attribute appears as a normal attribute, but whose value is maintained by a back-end module and may be derived using alternative logic, e.g. it might be context-sensitive and change its value according to the values of other attributes associated with the same object, or may change according to the object's address in the nexus.  Virtual attributes appear when particular object classes that define them are assigned to an object.
 
:* Implement virtual attributes.  A virtual attribute appears as a normal attribute, but whose value is maintained by a back-end module and may be derived using alternative logic, e.g. it might be context-sensitive and change its value according to the values of other attributes associated with the same object, or may change according to the object's address in the nexus.  Virtual attributes appear when particular object classes that define them are assigned to an object.
 
:* Implement virtual branches.  A virtual branch is one that appears underneath a node but whose content is provided entirely by a back-end module.  The branch appears when particular object classes that define them are assigned to a node.  Virtual branches will be useful for making external data and systems accessible to a PROSE engine through the same bytecode instructions as are used for traversing the nexus.  For example, access to the schema (to make live schema changes), or access to the local filesystem will be implemented through virtual branches.
 
:* Implement virtual branches.  A virtual branch is one that appears underneath a node but whose content is provided entirely by a back-end module.  The branch appears when particular object classes that define them are assigned to a node.  Virtual branches will be useful for making external data and systems accessible to a PROSE engine through the same bytecode instructions as are used for traversing the nexus.  For example, access to the schema (to make live schema changes), or access to the local filesystem will be implemented through virtual branches.

Revision as of 20:45, 21 November 2011

How to get involved

If you're interested in contributing your time to the PROSE project, your input will be valued. This page discusses how to get involved.

Who can contribute?

We are open to contributions at any level by anyone. Although at the moment we're focussing on getting the core engine and bytecode developed to a point that can support a scripting language on top, so we're in most need of folk who can bounce around low-level design ideas and/or roll up their sleeves and write some C code.

How do I register my interest?

Please contact the author and register your interest in becoming involved. We're also planning to use the PROSE-Discuss mailing list, so please subscribe to this list. Discussions until now have been limited to Usenet (e.g. 1 2) and Google+.

What can I do?

If you like to work in a team, the best thing to do is start a discussion on the PROSE-Discuss mailing list, and find out what others are currently working on, and who needs help at that time.

If you prefer to work more autonomously, below is a list of subprojects that can be worked on separately.

Copyright

PROSE is free software released under the terms of the GNU General Public License. It is copyrighted to Mark R. Bannister as the inventor and lead developer. The copyright is there primarily to ensure that the software remains free. Others who contribute to the project are credited as authors.

Subprojects

The following tasks can be treated as separate subprojects, and can be worked on almost autonomously at any time. If any of these subprojects interests you, please send a message to the PROSE-Discuss mailing list first to obtain more background information and to make sure that no one else has already started on it, before you begin.

  • Implement LDAP schema checking and syntax rules. There is some stub support for both already embedded, but neither are actually implemented. See bug id #5 and #6.
  • LDAP schema should be compiled at first use for faster subsequent start-up times. See bug id #7.
  • Load PROSE modules only when needed. The cltrig parameter in a module configuration file exists to support this concept, i.e. the module should only be loaded when the named object class is first referenced. See bug id #11.
  • Implement virtual attributes. A virtual attribute appears as a normal attribute, but whose value is maintained by a back-end module and may be derived using alternative logic, e.g. it might be context-sensitive and change its value according to the values of other attributes associated with the same object, or may change according to the object's address in the nexus. Virtual attributes appear when particular object classes that define them are assigned to an object.
  • Implement virtual branches. A virtual branch is one that appears underneath a node but whose content is provided entirely by a back-end module. The branch appears when particular object classes that define them are assigned to a node. Virtual branches will be useful for making external data and systems accessible to a PROSE engine through the same bytecode instructions as are used for traversing the nexus. For example, access to the schema (to make live schema changes), or access to the local filesystem will be implemented through virtual branches.
  • Implement foreign functions. This must be an interface to numerous other programming languages, by calling what appears to be an ordinary PROSE function.
  • Implement hot-code swapping. This is the ability to load up new versions of function objects without affecting threads that may be currently executing the old versions. This also includes the ability to create loopback functions (see PROSE and LDAP).
  • Implement multi-threading. The PROSE engine is currently single threaded. The concept is, if you load up several modules that contain a main function, then all main functions will be executed simultaneously, similar to an application server. Then there will be a means of starting up new threads programmatically.

Coding standards

Please follow the same coding style already used in the project. There are many APIs already available, please use them if you can in favour of implementing new algorithms. If unsure, please ask.

Comment your code so that others can understand at the high level what you're doing simply by reading your comments.

Please use a tabstop of 8 characters and a shiftwidth of 4 characters.

Submitting new code

Please agree on the PROSE-Discuss mailing list the best way to send in your code, prior to doing so i.e. whether its small enough to be sent as patches, or if you've worked on a subproject and need to commit a number of new files. Time goes slowly on this project, so don't worry if a few days have lapsed without a response, nothing major changes in a hurry around here. Your contributions will always be valued greatly.