[Buildbot-devel] GSoC: provide forward compatibility for Python 3

Vasily Kuz'min vasily at freedom-web.ru
Sun Mar 29 21:29:55 UTC 2015

Hi Dustin,

thank you for your reply. I've uploaded my proposal as PDF to my server[0]
so that people who want could have a look. I've also attached it as text file.

I'm quite unsure about the timeline part, since I have to better understand the
structure of the source code before I can give my time estimation. I think I'll
have to correct it once I'll understand source code structure.

As for Twisted, it seems that they mention several issues on the corresponding
web page[0]. I doubt that's all that we should care about: milestone for Py3K
shows that Twisted is only 60% ready[2]. I think it means that we may face
other problems except those listed. I don't think that will be a real problem
though; moreover, I tend to think that means I can help both buildbot and

Generally speaking, we have two ways: create various work-arounds for buildbot
or correct these issues in Twisted directly. The first is faster but I think
it is incorrect, because it'll introduce backward incompatibilities later when
Twisted will get updated its APIs. What I really think about is to collaborate
with Twisted guys. I tend to think that the second way is better, but of course
we shall concentrate on things related to buildbot. However, I'd like to know
your opinions.

[0] http://derzsky.freedom-web.ru/proposal.pdf
[1] https://twistedmatrix.com/documents/14.0.0/core/howto/python3.html
[2] https://twistedmatrix.com/trac/milestone/Python-3.x

2015-03-29 21:44 GMT+03:00 Dustin J. Mitchell <dustin at v.igoro.us>:
> That link only actually works for you, and only mentors can see
> proposals, but for the record Vasily's proposal is for "provide
> forward compatibility for Python 3".
> We've had a few proposals for this project, actually, and I believe
> all of the proposing students are on the buildbot-devel mailing list
> now.  So perhaps this is a good time to talk about approaches to
> porting Buildbot when Twisted is still not fully ported -- and in
> particular, Perspective Broker, on which Buildbot relies heavily, is
> still not ported.
> Dustin
> On Sat, Mar 28, 2015 at 6:57 PM, Vasily Kuz'min <vasily at freedom-web.ru> wrote:
> > Hello everyone!
> >
> > My name is Vasily Kuzmin. I study at Lomonosov Moscow State University and
> > have almost completed the undergraduate program in "Advertising and Public
> > Relations" Faculty of Philosophy. From the very beginning of my
> > computer-related life in 2008 I was interested in Open Source world. I've
> > used various Linux distros, though my favorite have always been Arch and
> > Debian.
> > The main point of my interest was the administration, especially
> > web-development. Basically, I had to work with web-server Apache and Nginx,
> > working in conjunction with PHP and MySQL. I have working experience on how
> > to support debugging servlet in conjunction with Apache Tomcat and
> > PostgreSQL.
> > Recently I've started to learn Python, because I want to improve my skills,
> > take a fresh look at the development of web-based applications and finally
> > have an opportunity to apply my knowledge base to help the world of Open
> > Source. Google Summer of Code seems to be a great place to start, especially
> > for the last part, so I decided to try and enter GSoC.
> > I chose buildbot for its simplicity and its extraordinary capabilities; it
> > is a simple and convenient tool for testing and verification of code
> > changes. Since I already have a basic knowledge of Python and even know
> > about some corner cases about porting application to Python 3, I decided
> > that the task to provide forward compatibility for Python 3 is exactly what
> > I'd like to do.
> >
> > I've filled in the proposal on the Google Melange just yesterday: I've never
> > participated in GSoC or similar projects before. I especially shy of this
> > late proposal; I understand that it would have been certainly better to put
> > my proposal earlier, but it is very hard to beat shyness. I'd definitely
> > like to work on this project, so I'm opened to your questions and
> > suggestions. You may found my proposal at the Melange site[0]
> >
> > Thanks in advance!
> >
> > [0]http://www.google-melange.com/gsoc/proposal/review/student/google/gsoc2015/derzsky/5629499534213120
> >
> > --
> >
> > Телефон:      +7 (999) 988-00-85
> > E-mail:           vasily at freedom-web.ru
> >
> > ------------------------------------------------------------------------------
> > Dive into the World of Parallel Programming The Go Parallel Website,
> > sponsored
> > by Intel and developed in partnership with Slashdot Media, is your hub for
> > all
> > things parallel software development, from weekly thought leadership blogs
> > to
> > news, videos, case studies, tutorials and more. Take a look and join the
> > conversation now. http://goparallel.sourceforge.net/
> > _______________________________________________
> > Buildbot-devel mailing list
> > Buildbot-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/buildbot-devel
> >


Телефон:      +7 (999) 988-00-85
E-mail:           vasily at freedom-web.ru
-------------- next part --------------
Provide forward compatibility
for Python 3
Personal details
Name: 		Vasily Kuz'min
Email: 		vasily at derzsky.ru
IRC: 		N/A

My name is Vasily Kuz'min, I'm fourth-year undergraduate at Lomonosov Moscow State University 
and have almost completed the program "Advertising and Public Relations" Faculty of Philosophy. 
Though I study at Faculty of Philosophy, I've been administrating servers since 2008. I had a 
good understanding of Linux administrating, except for the one part: I didn't know any high-level 
programming language, just bash.
Recently I've started to learn Python and already got the basics. Since I've been always favored 
to the OpenSource, I was trying to find the way how I  could both improve my Python skills and help 
Open Source community. One ofmy friends, who has taken part GSoC before, adviced me to follow that 
way, since it is a great way to feel the Open Source life, improve programming skills, help good 
people to make the world better and spend a time with fun.

Strictly speaking, I'm novice in Python programming, but really want to get close to both Python 
and OpenSource community. After having studied over available GSoC ideas for various projects, 
I decided to select your project, since I heard about it from many of my friends. Moreover, when 
I learned more about your project, I found it an amazing tool to perform various routine actions,
 — much better and easier than Jenkins which I had to use for several weeks long before.

>> Schelude

 It is hard to estimate the exact time since I didn't know the entire code base yet, but here is 
 how I think I should divide the project:

№	Period	
1	28 April - 25 May	Community bonding period: get known to source code base; learning more about portability 
						issues between Python 2 and Python 3.

2	15 April - 25 April; 20 May - 25 May	Unavailable to work every day due to exams in University.

3	April - July	Reimplementing the core functionality, which is absolutely necessary for the application and 
					it’s the most parts vital parts to work.
4	July - August	Checking that everything works; scanning other (less significant parts, i.e. non-core functionality) 
					and writing tests.

I'm planning to spend at least 4-5 hours daily.

>> Project proposal

One of the tasks I've found attractive is to implement forward compatibility for Python 3. I've 
already had to deal with it (I mean str/unicode/bytes difficulties, print() as statement and function
 and range() behaviour change) and have already studied through the various cases where Python 2 
is incompatible with Python 3. It seems to be the task which I can complete, since I doesn't have 
to completely modify or rewrite the existing implementation, I just need to adopt it to support 
active Python implementations.
Though this task seems to be easier than other, I think it shall be not underestimated: 
the entire world moves to Python3, and eventually Python2 branch will be deprecated. Moreover, 
some distros have already switched to Python3 as primary language for system scripts, and that 
means we shall be ready to the time they will deprecate Python2 from the base install and leave 
it only in repositories. You may know about PIL (Python Imaging Library), which many users had to 
deprecate due to the fact it couldn't support Python3. I don't think the very same situation shall 
ever happen to your project, so I'm going to help you to deal with it. It appears to be a very 
interesting task, which (while seems to be easy) has many caveats which I'll learn about.

>> Experience

As I said, I don't have pretty much experience with Python, though I certainly know the basics 
and even some corner cases. I have good understanding of server-client internals, can successfully 
perform all necessary actions from Windows and Linux, can manipulate with various configuration 
files and command-line tools. The main reason why I'd like to work on this project is that I can 
both practice my strong sides as well as get the knowledge of the things which I know less. 
The ability to learn much from your project is one of the reasons why I selected it.
Since I've just started to learn real programming (well, except for shell scripts), I haven't participated 
in the life of the Open Source community yet, though I've always wanted to do it. I don't have neither 
SVN nor Git repository, though I played with both and certainly know the basics.

>> Demonstration

My demonstration is based on the jbigkit library. 
Feel free to check my remote server: http://derzsky.freedom-web.ru:8010. This simple demonstration shows 
three steps, which are quite common in development process: obtaining sources, compiling them and running test
suite if available. I've used jbigkit since it includes these three steps and is quite a lightweight library. 
So, here is what happens on my server:

1.	`git clone' jbigkit repository.
2.	Compile the entire project by issuing `make'.
3.	Run the necessary tests by issuing `make test'.

This demonstration is quick and simple yet contains the most necessary actions. Usually one wants to 
receive a notification in case of build or test fails too. I've ommitted this part since I prefer 
monitoring via web interface.
The steps mentioned before are usual part of the development process. It took just 60 lines in master.cfg 
to do all I wanted on the remote server, and this counter includes line breaks just added for clarity. 
In my opinion, it clearly shows how fast and easy can be performing usual actions using buildbot driven development.
The main reason I'd prefer buildbot is that I could easy extend my code: for example, I could wrap some 
actions in classes, functions, decorators, etc. I seriously doubt if that could ever be achievable e.g. 
in Jenkins. The other thing I like is that everything is clear from the code part: you can just open 
configuration file and understand what exactly happens.
That said, I'd particularly like if this amazing tool could work in Python 3, and would very like to 
work on implementing it.

More information about the devel mailing list