Factor/FAQ/Contribute

How can I track development with git?

See GIT repository.

How can I join Factor development?

The best way is to make a git repository of your own. Chris Double described how to do this in a blog post. Once you have a git repository, make whatever changes you feel like to the code base, and tell someone involved in development about it. If they like your changes, they can be pulled into the main Factor repository. Before pushing any of your patches to your public repository, make sure that they'll be signed with your name by including your information in the .git/config file with the following format:

[user]
    name = "Manuel Lopez Garcia"
    email = "manuel@lopez.mx"

Where can I host my Git repository?

You can use GitHub: http://github.com/

What are the requirements for getting code accepted into the Factor repository?

The Factor project has very stringent requirements for contributed code. Continuous integration is used to ensure that all libraries in the repository pass minimum quality controls.

The main requirements are as follows:

  • The code must follow the same naming and indentation conventions as the rest of the code base.
  • The code must have adequate documentation.
  • The code must have adequate and test coverage.
  • All unit tests and help lint checks must pass.
  • Vocabulary meta-data in the form of an authors.txt, summary.txt, and tags.txt must be provided.

If you are a new contributor, there are two additional requirements. You must not make changes to anything in core and basis without asking first. All new vocabularies must start off in extra.

Since binary packages do not get released unless all build-time checks pass, we may move your code to unmaintained if it fails to load or the tests don't pass for more than a few days. You may move it back at any time once you fix the problem holding back builds.

How do I get my patches merged into the main repository?

Drop by the Concatenative IRC channel and ask slava or erg to review your changes. All patches go through a code review process by one of the core developers before being merged into the repository. We reserve the right to reject any code contribution.

Where should I store my working code that I don't feel like contributing to the Factor project?

If you feel like it, you can put that code in extra/, where included non-core libraries go. But if you want to be a little more organized, you can put vocabs in a different directory named work/ which is part of the vocab search path (for example, extra/foobar/foobar.factor or work/foobar/foobar.factor), or in the current working directory. You can also add new directories to the vocab search path by modifying the vocab-roots variable in the vocabs.loader vocabulary. Also, see the help page about working with code outside of the Factor repository.

When trying to push to my repository using Cygwin, why do I see this error message?

fatal: exec failed
fatal: The remote end hung up unexpectedly
error: failed to push to 'foo@bar.com:factor.git'

Install OpenSSH with the Cygwin installer, and the problem should be fixed.

This revision created on Wed, 6 May 2009 16:30:59 by slava