Some notes to your well written post.
Stage #1:
- Have a recruitment system (vpsBoard sub-section). Users will post their ideas with requirements (timeline)
It will be hard to figure out at that stage that you need 40 mandays to develop somethings.
Or that 4 developers for 10 weeks doing 8 hours a week to build a tool.
I like the idea of a a recruitment center where stakeholders can find product owners.
The product owner (lead developer) is offering an architecture and a rough plan how things should be done.
You might even call that the product owner is offering a solution.
- These "ideas" will then be up for discussion. Interested parties can talk logistics and gauge interest
- The top X (two or three at a time) will be given the green light
- These projects receive full hosting/support by the sponsoring entity
The "top x" will be "voted" by the people joining the product owner.
The only limit is the number of developers.
One developer is only allowed to join one project at a time.
And the developers are offering services (unit: 1 manday (MD) per month).
The product owner then has to decide if he takes the offers or decline them.
Stage #2:
- Interested parties will sign-up to be on the developing team for said project (list # of hours available per week)
Yup at that time the "services" will sum up and this will be the base for the project plan (timeline).
- A lead developer (or two) will be assigned
That will be the product owner which offered a solution.
- Developer team will be selected
- Include 1-2 novice developers to mentor (depending on team size)
** Majority of
projects would only require 2-3 developers **
That limit would destory the idea of pair programming - double that amount.
Stage #3:
- Collaboration software and Git repo will be setup for team members
- If requested, a continuous integration server
OR a VPS with an isolated environment will be assigned for the project
And the tests are setup -> test driven development.
If we want that open approach to develop things the first line of codes should always be tests.
Stage #4:
- Lead developer/s will be in charge of initial planning, including:
- Framework (by majority vote)
Allready done. The developers offered "services" like 5 MD per month for JS development".
- Code assignment -> Split the project into X sections
Allready done by the architecture.
- Coding standards
- Directory structure
- Database structure
- Class structure -> Interfaces/Abstracts
Yup that has to be done by the team,
- Once initial planning/setup is complete, team members will be assigned (or choose) their section of code. E.g. Front-end UI, database interaction/management, API development, etc...
- Novice developers will be teamed up with another member, where they can interact/learn
The team is defining a story board (list of things to do).
Each
story is about one aspect (use case) of the system.
Then one developer takes the resposiblity for this story and is developing it.
Your right one story will have a defined place like API, UI, etc.
But if a developer wants to do more he can define a story that is including UI and API
Stage #5:
- Public Git repo
This is a public repro by design - right at the beginning.
If I am doing something wrong I want to have feedback as soon as possible.
Hey let everyone - who might be interested! - my code is boring review it right from the beginning.
- Interested parties can keep up to date with development, and interact with developers/submit pull requests
Second that!
Submit what you want - hey you would do my work!
Stage #6:
- Committed code will be peer reviewed (lead developer/s should do this anyway)
- UNIT TESTS!!!
Sorry but this is my first nope.
Don't ever do tests when everything is done.
Noone will create all tests needed (hey it is running!) and noone will check if the tests are testing all requirements.
Stage #7:
- Release compiled/packaged code once completed
- Maybe vpsBoard, or fellow low end companies would sponsor the project (once complete)
It's git so the team will tag releases but hopefully that project will never end.
But your're right if all tests are green the project is finished and the developers can join other teams.