NOTE: We have a video version of this article, available here: Flower Dev Center and Google Summer of Code 2013: The Video. 5min 57 sec.
Flower Dev Center helps students and mentors that participate to Google Summer of Code program. It improves communication and allows students and mentors to make better use of their time. And the overall result is better code.
Let's suppose I am a student, I work on a wiki software and I want to add a new feature: a special table of content (TOC).
For working on a new project, we propose the folowing flow:
0 – Investigations: understand the current technical context
1 – Think of a solution. Make diagrams (and code scaffolding)
2 – Discuss the solution with my mentor ⇒ feedback
3 – Discuss again with my mentor (initial feedback = processed)
4 – Coding
5 – Coding done ⇒ pull request and code review
First thing with a new project should be understanding what already exists. Depending on the project this can mean: studying the code, documentation, mailing list, debugging, studying bug list, discussion (e.g. IRC), etc.
After the investigations I put my ideas on diagrams that look like this:
This was helpful, as I added, during the design phase, comments, snippets of code and pseudo-code that I will reuse during coding.
I have a first discussion with my mentor. As Flower Dev Center is web based, I give him a link, and he has my diagrams on his screen, and we begin to collaborate.
We use Skype or phone. He quickly understands my design.
My mentor adds his feedback directly on the diagram:
currentUseris not a good programming practice and is also not thread safe! And he pointed to me an existing function that I can use to get the current user.
I processed the feedback. I may have a new discussion (or I may skip this step), to validate the final design (i.e. including the feedback that I processed).
Here, the diagram is basically the same, but also contains the modifications my mentor asked.
Now comes the coding part, using my favorite IDE.
I use the desktop plugin, powered by the same CodeSync technology, which keeps the code and the model synchronized.
I am finished and now I do a pull request (or submit my patch, so that it gets merged into the main dev branch).
My mentor will have to do a code review before integrating my changes. Let's suppose I modified 46 files; 19 of them from core. I think it will be a real “pleasure” to review them.
But Flower Development Center helps.
My mentor knows that the structure is clean, because we designed it together. Working in parallel on my diffs and with Flower Development Center, my mentor can easily be more thorough on things that are more important (e.g. remember that I modified code from the core?). He will probably pay more attention to that than to my
So why was Flower Development Center helpful?