DN Forum project - development process and standards
Posted: Wed Aug 19, 2009 3:47 pm
Spinning off from the original subject thread - viewtopic.php?f=7&t=104474
I'm starting off a discussion on the development process and standards for an open-source forum community project that could possibly be used to power DN in the future. I'm writing this in the hopes the some of you show interest and sign abroad in order to move to more concrete parts.
What we need to address:
- Coding standards, including file formatting, naming conventions, comments and general style.
- Contribution format and moderation of contributions
- How to organize discussions and make decisions
- Organizing code structure (and possibly choosing a framework to base work on)
My take on those issues:
1. Coding standards
Personally I use the Zend Framework coding standards - http://framework.zend.com/manual/en/cod ... ndard.html, which are a derivation of the PEAR standards - http://pear.php.net/manual/en/standards.php. There are a lot of small variations, but generally it is considered the de-facto standard for PHP (at-least, the most widely accepted one).
Maintaining a consistent coding standard is essential for keeping the source code maintainable and portable between developers. Also, one of the objectives of the project is to create a package which can be used by the community, and in that case it's best to use the most commonly used standard.
2. Contribution format + moderation
In order to share the source code during development and retaining rollback capability, source code should be placed on an online source-versioning repository (such as SVN). There are several sites that host such repositories for open-source projects, such as google code and sourceforge.
Participating members would be given commit privileges to the repository. Commits should occur often to prevent difficult merges (those happen when there two developers submit modifications to the same piece of code), and be accompanied with meaningful messages detailing the changes committed.
Participating members should also review commits by the other members and we could have code-review sessions periodically (depending on the rate of progress).
3. Discussions and decisions
Design and implementation discussions should be held on each part of the project before we jump into programming. This is to ensure that everyone agrees on how things should work and how to implement them.
Ideally, every discussion will end with everyone agreeing across the board. We should make every effort possible to make it so, even if it requires some compromises. In the case that no such agreement could be reached, we should go with a majority vote to make decisions.
All discussions should be public and occur on the forums. Private communications on general issues is generally not helpful for the project. Everybody should be allowed to pitch in and discuss issues.
4. Organizing code structure
The coding standards chosen should dictate the code structure up to a point. In addition, we should decide how to organize library files (in case we're using external libraries) and how to segment the project to the disparate modules. I also recommend very highly to pick one of the major frameworks and base work on that - it will reduce development time very significantly, help enforce good practices across the board (such as MVC separation and other design patterns), and introduce a stable and well supported piece of code into the mix.
I'm voting for the Zend Framework since I am very familiar with it and overall highly satisfied with it, but I don't mind going with another established framework. This should be decided by a majority vote.
If you think there are more issues to discuss before starting, feel free to add those to the discussion.
I'm starting off a discussion on the development process and standards for an open-source forum community project that could possibly be used to power DN in the future. I'm writing this in the hopes the some of you show interest and sign abroad in order to move to more concrete parts.
What we need to address:
- Coding standards, including file formatting, naming conventions, comments and general style.
- Contribution format and moderation of contributions
- How to organize discussions and make decisions
- Organizing code structure (and possibly choosing a framework to base work on)
My take on those issues:
1. Coding standards
Personally I use the Zend Framework coding standards - http://framework.zend.com/manual/en/cod ... ndard.html, which are a derivation of the PEAR standards - http://pear.php.net/manual/en/standards.php. There are a lot of small variations, but generally it is considered the de-facto standard for PHP (at-least, the most widely accepted one).
Maintaining a consistent coding standard is essential for keeping the source code maintainable and portable between developers. Also, one of the objectives of the project is to create a package which can be used by the community, and in that case it's best to use the most commonly used standard.
2. Contribution format + moderation
In order to share the source code during development and retaining rollback capability, source code should be placed on an online source-versioning repository (such as SVN). There are several sites that host such repositories for open-source projects, such as google code and sourceforge.
Participating members would be given commit privileges to the repository. Commits should occur often to prevent difficult merges (those happen when there two developers submit modifications to the same piece of code), and be accompanied with meaningful messages detailing the changes committed.
Participating members should also review commits by the other members and we could have code-review sessions periodically (depending on the rate of progress).
3. Discussions and decisions
Design and implementation discussions should be held on each part of the project before we jump into programming. This is to ensure that everyone agrees on how things should work and how to implement them.
Ideally, every discussion will end with everyone agreeing across the board. We should make every effort possible to make it so, even if it requires some compromises. In the case that no such agreement could be reached, we should go with a majority vote to make decisions.
All discussions should be public and occur on the forums. Private communications on general issues is generally not helpful for the project. Everybody should be allowed to pitch in and discuss issues.
4. Organizing code structure
The coding standards chosen should dictate the code structure up to a point. In addition, we should decide how to organize library files (in case we're using external libraries) and how to segment the project to the disparate modules. I also recommend very highly to pick one of the major frameworks and base work on that - it will reduce development time very significantly, help enforce good practices across the board (such as MVC separation and other design patterns), and introduce a stable and well supported piece of code into the mix.
I'm voting for the Zend Framework since I am very familiar with it and overall highly satisfied with it, but I don't mind going with another established framework. This should be decided by a majority vote.
If you think there are more issues to discuss before starting, feel free to add those to the discussion.