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.
  • 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.
  • Implement the LDAP wire protocol. Many of the advantages of PROSE are with distributed applications that will require support for the LDAP wire protocol.

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.

The older source files use a tabstop of 8 characters and a shiftwidth of 4 characters, without expanding tabs. More recently we have switched to expanding tabs, so you will find source files with a mix of both. It is now preferred to expand tabs.

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.