Piotr Galiszewski
Background:
I am 21 years old and I am a second year student of Computer Science at AGH - University of Science and Technology in Krakow, Poland. I have never contributed directly to Debian, but there is hope it will soon change. I have been GNU/Linux user for about 5 years. Unfortunately, I have been using used Debian only for short period of time. Currently, I am Ubuntu user.
I often code in C/C++ (mostly for Unix systems) and Java (using AWT, Swing and Eclipse RCP for GUIs). I also have experience in Delphi, javascript, python, ruby, bash, vhdl and x86 asm. But my language of choice is C++ with Qt library.
I have some basic knowledge of packaging. Three years ago I made some unofficial packages of Kadu instant messenger, and published them in my private repository on school server. Then official Kadu packager Patryk Cisek returned and I stopped my short involvement in packaging and changed my interests to programing (especially in Qt). I have been one of the developers of Kadu for more then two years . Kadu is the most popular Gadu-Gadu (the most popular network in Poland) instant messenger for unixes in Poland. The newest Kadu version (currently in alpha state) also supports Jabber and Tlen network (second most popular network in Poland). Presently, I am the second most active developer with more than 700 commits in master branch. You can find more informations about my contributions on my ohloh page or gitorious account. During this two years I have gained experience with Qt programming and creating user interfaces. I collaborated with designs people from Kadu usability team ( http://www.kadu.net/w/Usability ). Here you can find some samples of my work: Kadu chat styles framework: (http://gitorious.org/kadu/kadu/trees/master/kadu-core/chat/style-engines and http://github.com/vogel/kadu/blame/master/kadu-core/chat/chat-styles-manager.cpp, rewriting hints module and new notifiers configuration: http://gitorious.org/kadu/kadu/commit/cdbc830922bf2415bd2 http://gitorious.org/kadu/kadu/commit/b544018bdc6d7ff913 and http://github.com/vogel/kadu/tree/master/modules/hints/), identities support http://github.com/vogel/kadu/commit/3d7e8818142657ff05b1cc22b526101ac4a3d245
Project title:
Aptitude Qt
Contact/Email:
email: My primary email address is piotr@galiszewski.pl , I can also be found at piotrgaliszewski@gmail.com or piotr.galiszewski@kadu.im.
jabber/xmpp: pgal@chrome.pl or piotr@galiszewski.pl
irc: whe on freenode and OFTC
Synopsis:
Writing a Qt Gui for aptitude probably inspired by aptitude-gtk and adept.
Benefits to Debian:
There is currently no good Qt-based package manager for Debian. There were Adept some time ago , but now it has been abandoned project. On the other hand KPackegeKit is not suitable for debian-based distributions and is not designed for advanced users. This will give KDE Debian users the same level of package management experience as Gnome users have.
Project details and schedule:
Project will support all features from GTK based frontend and will live in a branch for the aptitude repository.
Due to my studies I am going to start project as soon as possible (at the end of April). I will split my projects into 3 main parts:
- improving my knowledge of aptitude code-base and writing low level classes which will abstract aptitude signals and slots (which uses sigc++) into Qt slots and signals.
- creating and evaluating GUI mockups
- implementing gui on top of classes from first point
- writing documentation, fixing bugs, cleanup code and integrating user feedbacks
The first and the second points can be made simultaneously. I think that this will be the hardest part of my project, because currently I am not familiar with aptitude and sigc++ apis, This will take all May and half of June. This time could be much shorter but my studies schedule is not consistent with GSOC time-line. I will have one exam in mid May and three exams at the mid/end of June. During this time I have also normal study curses so I could work for about 20 hours per week. After my last exam (currently I don't know my exam session schedule) I am going to work for about 50 hours hours per week (or even more if it will be necessary). At this point all required generic changes should be discovered and discussed with Daniel Burrows.
GUI mockups will be made simultaneously with coding. Every mockups versions will be presented and discussed with broader audience. I hope that some usability people will be able to help with evaluating them (I will ask Kadu Usability Team for help me with this task and maybe KDE usability experts could also give me some help). I hope that final mockups will be finished in time and I will start implementing them in second part of June. First mockups will appear about one week after starting of Community Bonding Period. There should be two or three alternate designs (aptitude-gtk based, synaptic based and one another). They will be discussed with users and my mentor, to find the best design, which will be further evaluated. New mockups should appear each week (or to weeks). Implementing mockups should be straightforward and take all of July. Then, I am going to stabilize the interface and integrate further improvements which will be send to users and testers.
During my work I am going to write each two weeks reports to my development block.
Some more technical details:
Low level classes should implement all required functions from aptitude. I would like to avoid direct usage of none Qt code in gui classes. I think I will write one bigger class (?AptitudeClient - I think it is a good candidate to be a singleton) and some services on top of it (for example: downloadService, debconfService, searchService, resolverService). Proper classes splitting should make implementing gui much easier. Mockups will be made in ?QtCreator and/or DIA. The gui will be built directly in source code ( I am not a big fan of ?QtDesigner. I think that designing GUI in code give developer more control and flexibility). For package list I am going to use Qt Model/View Architecture with custom ?ItemDelegate, and proxies models.
Proposed schedule (starting on April 28):
week 1: get to know with my mentors, more research of aptitude code-base, create first gui mockups
week 2: start coding of low level classes (mostly ?AptitudeClient class). All needed low level functionalities should be known. Second round of mockups evaluation. During this week I have one exam, so some schedule delay is possible
weeks 3 - 5: continue coding low level classes. Discuss any outstanding issues with my mentors. Continue evaluating mockups and discuss them with users and some usability people. Any service should be self-contained as much is possible (one feature per service). Every implemented service should be fully functional. During this time 3 days long student festival (called in Polish: Juwenalia) will take part -> probably now work from my side
week 6: last fixes in final mockups. They should be approved by my Mentors, users and usability experts. Low level classes should be nearly finished
weeks 7 - 9: exam session (3 exams). Currently, I don't know exams schedule. The level of my involvement will decrease. As soon as exams session finish, I will back to coding. This part of schedule are subject to change when I will know my exams. Except that all low level classes will have been finished by this time and mockups approved.
week 10: first version of gui: probably unusable.
week 11 - 14: implement functional gui on top of low level classes. At the end of this time gui should be 100% functional
week 15 - 16: gui polishing, fixing bugs and integrating user feedbacks, writing final evaluation
after the end of the program: continue fixing bugs and maintenance of application
The schedule will probably change due to my studies commitments
Travel:
Traveling from Poland to USA requires visa. Furthermore, English is not my mother tongue. But except that I will be able and willing to travel to New York
Exams and other commitments:
I have no other commitments except my studies. I have already written about this above.
Do you have plans for Debian after the summer?
I am going to continue develop and maintenance of code written during summer. Moreover, I can help with another jobs, which will require Qt skills.