A project generator from templates
Some time ago, I planned a project template for developing astronomical instruments.
It is based on roles and common tasks. These tasks respond to a procedure or design handbook. The handbook has been written from the experience and methodologies.
When a new instrument must be developed, it is a good idea to create a project from a template project, selecting this template from a templates menu. Then, you specify the people on each role, and an starting date for the project. Then, the project generator will “copy” that template into a new project starting from the given date and assigning the tasks to the people in each role.
I made a plugin draft to demonstrate the idea works, and generated programatically the project. I attach here the code showing how to programatically create a project template. This code is only showing the concept or idea, as you can see, the users are not selected based on a role. but here you can see tasks and subtasks that should appear on each project.
Nowadays I think the idea is not to have a software that programatically can create a new project based on a algorithm, I think the good idea is to create an intelligent “project copier” and give the Redmine the abbility to “hide projects” and “assign to roles” or “hide template people”. then, each template is created as a “hidden project”, and when a person wants to create a new project from one of these templates will tune the copy using a form to select the people, the dates and the name of the project. The “project copier” will generate the new project, with the correct people and in the correct dates. The project manager can, then, change the project to tailor it to the actual needs.
The abbility to “assing to roles” can be difficult to add to Redmine, but one can create a subclass of “user” called “user template”, “user role” or similar, something like a “pseudo-user” or “phantom user”, hidden to the rest of the redmine, and use this “user role” in the template projects to assign tasks to them. In the project copy form, the user must rename each “user role” into a “user”, and then the tasks will be reassigned when being copied.
Then, a user will be able to create not only projects, he/she will be able to create project templates based on their department/company procedures and methodologies, and then use these templates to generate new projects. And also the experience can feedback the templates for future projects.
I am only talking about tasks and users, but a project template coult have also a template wiki, etc.
#1 Updated by Txinto Vaz almost 11 years ago
- File Screen_Shot_2011-08-24_at_12.11.44.png View added
- File Screen_Shot_2011-08-24_at_12.12.25.png View added
Here I add two screen captures showing an example of project structure that can be repeated from project to project, too heavy to do it by hand again and again. The tasks are linked to subtasks like a tree structure.
#4 Updated by Txinto Vaz almost 11 years ago
Hi, I have tested it, but it does not fit the requirements. The key is to reassign the tasks from roles to users, and to select the starting date for the new project. The project copy simply copies it. After copying it, the user must reassign manually all the tasks and calculate all the dates of the project. A project template (that actually can be another project, of course) will have dozens of tasks linked and will be difficult and risky to change people or dates by hand.
#6 Updated by Txinto Vaz almost 11 years ago
Yes, it is a good idea. People that just want a “copier” can use it. And people that want a template only has to use some prefix to identify the templates from the rest of the projects.
It can be available to non-admins, but it is not a problem if the users request the admin to do it once in a project. If it is not restricted to admin some visibility problems may occur. A non-admin must not see a project in which it is not involved. This will lead us to make all the “templates” or “general interest projects” public to allow non-admins to copy them. But maybe the projects must not be public to outside of the “company”.
#7 Updated by Andriy Lesyuk almost 11 years ago
Did not get the idea about the prefix... What I asked is to have an additional link “Use as a template” on a project page e.g. near “New subproject”. The same for Administration panel - “Use as a template” near “Copy”. This way project can be used as a template (of course the seen one only).
As I understand you are Ruby developer as well? Is this the plugin you started to work on, you would like me to work on, you would like me to help you or?..
#8 Updated by Txinto Vaz almost 11 years ago
- Audi A3.
- Seat Leon.
- [Draft]Sport Car.
- [Draft]Industrial Car.
- Citroen Berlingo.
- [Draft]Family Car.
That is, simply with a naming convention, people knows that the [Draft] prefixed projects are not real projects. When someone need to create a project to develop a Ferrari Testa Rosa, then he/she must “copy” the [Draft]Sport Car with the Ferrari Testarrosa Name.
“Use a template” → Perfect!
The problem with the users: when a project is copied, the tasks need to be transferred to a new team. Redmine has “roles”, but there is no possibility to assign task to a role. In fact, the Redmine Roles are roles against the project management: contributes or not, can manage the team, etc... This is not the kind of roles I am speaking.
Probably the most easy solution is to create “phantom users” like:
_sys_user: Systems Engineer.
_mng_user: Project Manager.
_sw_user: Software Engineer.
_tst_user: Testing Engineer.
_mech_user: Mechanical Engineer.
this is, a “phantom user” for each “company role”. Then, when creating the [Draft] project, the tasks are assigned to that users.
In the action “Use as template”, the Redmine plugin must offer a form allowing to the user to “rewrite” the roles. _sw_user → andriy, _tst_user → txinto, _mng_user → ....
If a role can not be assigned to a real user, their tasks will continue existing and pointing to the “phantom user”. When the new team player is arrived, then a second action “reassign users in project”, must allow to parse the whole working project and change the name of the user in the not closed issues. This is useful also for reassigning people when a person leaves the project, or the company.
I am a Ruby developer, true, but in Ruby I am a newbie. I did not start working in this plugin, some time ago I made a script to solve programatically a situation, but was not a plugin. Nowadays I have no knowledge/time to develop this. You asked for ideas and I found this was a good idea to give to you. Obviously I can collaborate, developing, testing, whatever you need. Now you are the boss. If you want to develop it, the plugin is yours, this is open source code. Take the ideas and make them fit your expectations. If I can give you feedback or help, I’ll do it. If the plugin does not fit what I can need in the future, I will try to tune it so it can fit both ideas. The question is to sum. Alone, I can not develop it this year, maybe the next.
So, now you decide what to do with it.
#9 Updated by Andriy Lesyuk almost 11 years ago
A kind of Wiki template: https://projects.littlestreamsoftware.com/projects/chiliproject_auto_wiki