[Buildbot-devel] GSoC 2011 - Master-Side Source Steps

HelioH heliohenrique3 at gmail.com
Thu Apr 7 14:58:25 UTC 2011

Hi, my name's Helio, and I want to apply for "Master-Side Source
Project". I have written an application, and I would like to know what
do you think about it.

Name: Helio Henrique Lopes Costa Monte Alto
E-mail address: heliohenrique3 at gmail.com
IRC nickname: helioh2
Timezone: Brasília, Buenos Aires (UTC/GMT -3 hours)
About me: I am a Computer Science student at Universidade Estadual de
Maringá (Maringá State University), located in Maringá, Paraná,
Brazil. I am in 4th year (the last year) of my course, and I do
undergraduate research project. My research area is related to
Intelligent Systems Development, with focus on multi-agent systems and
I think it’s very nice to work on an open source project, since I am
going to acquire more experience with software development. I also
consider myself an enthusiastic on free software (open source and
software “libre”), and I hope that contributing with an open source
project will give me a good feeling of software development in the
real world.
I am interested in BuildBot because I think that speeding up build and
tests implies speeding up software development. Furthermore, it is
good to make such tasks easy to learn and work, because software
development depends on them.
I think I could work on “Master-Side Source Steps” because I have a
have a good overview of abstractions, and I have little experience on
working with version control (Mercurial) and project management and
comprehension tool (Maven). Both experiences mentioned were acquired
by fixing some bugs on a software system developed (and still in
development) by the research group in which I am a member. Such system
is totally implemented in Java (and uses PostgreSQL for database
management) and it is called DiSEN (Distributed Software Engineering
eNvironment). It is an ongoing project which aims to provide an
environment to support distributed software development. I have fixed
some bugs in the system’s middleware and business object classes.
I hope to design and implement some slave-side functions, and then use
them to implement one (or more, depending on the complexity and on the
time to meet the project objectives) smart task on the master. I
intend to begin choosing one of the smart functions, study it and then
try to decompose it in pieces, which are going to be encapsulated on
slave-side functions.

Work plan:

Community bonding period: community bonding; prepare my development
environment; read Buildbot documentation; explore some of its source
code; plan schedules and work days; try to fix some bugs; get to
choose one of the smart functions to be implemented; begin to remember
and to improve knowledge about Python’s syntax and constructions,
since I do not work with Python for a long time; read about
master-slave architecture, and some other requirement for the
development of this project.
Week 1: definitely choose one of the smarts functions to be decomposed
and start reading and understanding it; learn about the libraries used
in the code, and still improve my knowledge about Python’s
constructions and syntax.
Week 2: begin doing reversal engineering on the function and designing
its sub-routines; still getting familiar with the code and the
technology used.
Week 3: finish design of sub-routines and start to implement them separately;
Week 4: finish implementation of the maximum possible sub-routines and
test them;
DELIVERABLE: sub-routines design and implementation;
Week 5: finish implementing all sub-routines, if not yet finished;
test them all;
Week 6: think about the sub-routines distribution among the slaves
(for reuse of the same functions in the future, functions must be
coupled according to their type of task), and start to outline the new
master algorithmic structure;
Week 7: start to implement the new master function’s version, doing de
properly adjusts on the slave-side functions (sub-routines);
Week 8: finish implementation of new master function prototype; test it;
DELIVERABLE: the smart function’s new implementation and the brand new
slave functions.
Week 9: review stuff made until now, fix some bugs and work on any
possible pending; run the whole product and compare with the original
Week 10: work on the backward compatibility, if something in the new
implementation conflicts with something already existent in the
Week 11: work on documentation (developer guide), since it’s important
to show the way for other developers work on other smart functions;
Week 12: final review and testing of the implemented functionalities;
reviewing and finalizing the documentation; prepare to submit the
final result and to disseminate the changes.
DELIVERABLE: all of the generated code, documentation and working software.

Other details
I will try to test my contribution using some Python-based unit test
tool, like JUnit for Java, although I don’t have much experience with
this kind of tools, but I am going to try to learn how to work with
it. Anyway, I am going to do unit tests, and integration tests as
The code documentation is going to be made accumulatively through all
the development process, but it’s going to be reviewed on last week,
before final submission.

My familiarity with…
Python: It was my first programming language, which was used for
algorithm learning in my course. I have worked on some class-taking
works using this language, and I remember its basic syntax and
construction. However, it was a long time ago, and I have never worked
with Python anymore. But I think I can remember and improve my
knowledge about Python during the development.
Twisted Python: I have never worked with this, but if I need to, I
thing I can learn it.
Databases: I have more experience with MySQL. Most university projects
that I have made I used MySQL. But, as I’ve already said, DiSEN works
with PostgreSQL, so I have a little experience with this one too.
HTTP-Based Protocols: I have never worked with this, but I know the
theory about HTTP protocol.
Web Development: I have already worked with PHP, HTML and a little
Javascript. I have already implemented a Web forum for class-taking.
Javascript Frameworks: I do not have much experience with Javascript.
Git and Github: I have already downloaded things using Git, but no
serious stuff.
Development for Windows: I work with Windows and Linux. My preferred
language is Java, so when I develop software I naturally make it
cross-platform. However, I have already worked with C++ (in which I
have made a simple vector image editor), C (I have implemented an
almost complete compiler, for Tiger language, with this) and Python.

About non-Summer-of-Code plans:
Undergraduate research project: it is well underway, because I have
put a lot of effort on the research between November, 2010 and March,
2011. There are still things to do, but I think I will need less than
15 hours per week to complete these tasks. And I am going to put more
priority on GSoC, mainly in weeks in which planned tasks are more
Graduation project (monograph): it is my last graduation year, so I
have to work on my final project. The deadline for it is November, so
it will not need priority over GSoC. “Além disso”, it is not going to
be that difficult, since it is related to my undergraduate projects.
Class-taking: that is the main reason because I am accepting the
challenge of a GSoC project.  This semester I do not have many
classes, because there are few college matters (subjects). The most
subjects I will have this year were allocated on second semester.
Therefore, I have lots of free time (not mentioning the other projects
mentioned above).

Best regards
Helio H.

Maringá State University

More information about the devel mailing list