How to get involved

From PROSE Programming Language - Wiki
Jump to: navigation, search

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.


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.


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.
  • LDAP schema should be compiled at first use for faster subsequent start-up times..
  • 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.
  • 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.