OPW Application Template
Name: Jingjie JIANG
Email Address: firstname.lastname@example.org
IRC Nick: sophiejjj
Location: Hong Kong
Education completed or in progress (i.e., university, major/concentration, degree level, and graduation year)::
- Tsinghua University, Automation, B. Eng., 2012
- Hong Kong University of Science and Technology, CSE, Network Engineering, PhD, in progress
How did you hear about this program?: from the GNOME news page
Please describe your experience with Debian as a user and as a contributor (Please include the information about the required contribution you made to the project you are interested in here):
As a user, I have used Debian for six years. I like to tweak the Debian system to suit my needs most. Because of that, I tend to install the base system. And then compile/install the window manager (openbox of course), the file manager and a bunch of other stuffs with my own peculiar interest. Many thanks should be given to the DPKG system, and of course the community behind Debian. Apart from desktop-experience, I also have much experience of Debian from a system admin's view. I used to be a sys-admin in a department lab. My distro of choice is always Debian. It's stable, secure, slim, and up-to-date (yeah, the sid). The Debian community best interpret the spirit and philosophy of FOSS. There is always someone willing to help me without sparing any effort whenever I have a question. With that help, I successfully setup LDAP, HTTP, FTP, REV-PROXY, VPN, DB Server and many other services for the lab. I'm currently a PhD student at HKUST. As for me, I continue to use Debian as my daily dev environment, and never stop advising my friends and teammates to try it as well (YUP, I am a Debian extremist from my Fedora friends ).
- As a contributor, I'm still a rookie. Actually, I once wanted to contribute my effort to Debian. But I just don't know how to start the first step. Debian-OPW is really a chance for me and I think I must not miss it. I recently submit several patches to improve Debsources. The Debsources code is well structured and quite comprehensible. Besides, both mentors are very nice. I feel much confident in participating Debsources project. Specifically, I've solved the following open bugs:
#761232: add ctags count to the package infobox
#761100: show suites/releases when listing package versions
#766162: use 'env' instead of /usr/bin/python to make source more portable.
See the git commits for more information about the fixed bugs and the bugs that I'm working on.
Please describe your experience with any other FOSS projects as a user and as a contributor:: I've played with many FOSS projects. Most software I use are FOSS projects, from the shell, the terminal, the editor, and even up to the player. I am interested in website dev, so I make an example of Django. As a FOSS user, I use Django to develop web applications. Django is rather full-stack, and through using Django I learnt a lot of web dev. Following the plentiful and comprehensive documentations, it's easy to get acquainted with the framework. The Python REPL also gives me much room to play. To build an interactive visualization tool for call graph of large-scale software, I have build a call graph visualizer with a partner using the open graph drawing framework ( OGDF) and some related FOSS packages. The modular functionality and good documentation helps us progress well even we were new to this framework. A user can select different view to better understand the structure of a software project, such as hierarchical tree and fish eye view. Since a large project typically consists of numerous functions/methods, we allow users to zoom in to scrutinize the most relevant small area and zoom out to understand the whole architecture. To contribute to this framework and help users interested or major in software analysis, we have published our program online along with instructions to use our tool.
Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them:: I have participated in some projects in the past years, varying from web dev to system maintenance. For Debsources Project, I think the relevant parts goes into the following.
- HTTP Basic: I have both general and in-detail understandings of HTTP protocol. Besides protocol itself, I am also aware of problems like XSS, CSRF, and techniques like traditional RPC or RESTFul philosophy.
- DB: E-R diagram, relation algebra, normalization, etc. BTW, I also have experience as DBA. (MySQL, Postgres mainly).
- Flask/Jinja2/SQLAlchemy: The basic idea is the same, (Flask vs Bottle), (Jinja2 vs Django Template), (Sqlalchemy ORM Vs Django's). Through the past several days, I am getting more and more accustomed to these packages.
- System Maintenance: Also a big topic here. I think I am competent for such tasks.
- Python: I am familiar with Python(2/3) language, coding in Python a lot.
- Dev Chainset: Tmux, Vim, Make, Hg/Git, and all the quick fix tools: find, xargs, ag, etc. The above knowledge, I think, is most relevant to this project. I also gained much more other knowledge from participating projects, e.g., I write perl/ruby/csharp/matlab/shell script/c/c++/. I write but hate Java. I like ocaml but never write much in it.
What project(s) are you interested in (these can be in the same or different organizations)?: Debsources improvements
Who is a possible mentor for the project you are most interested in?: Stefano Zacchiroli and Matthieu Caneill
Please describe the details and the timeline of the work you plan to accomplish on the project you are most interested in (discuss these first with the mentor of the project):: I've spent about a week to get familiar with the source codes of Debsources, and submitted several patches (already merged to branch) to solve the open bugs. There is still a lot to do to optimize the current source code and enhance user experience. Specifically, I'd like to warm up through fixing bugs related to UI, and than add new features to improve the usability of Debsources. Finally, I'm planning to refactor and clean up the modules that I have crystal clear understanding during the first two steps. The tentative timeline of my work is listed below. Of course, the actual timeline is fully subject to the mentors' arrangements as I'm more concerned in participating in this project.
Oct 22 - Dec 9 (before the internship starts)
- Be more familiar with the Debsources development workflow and Debian BTS.
- Read the documentation and source codes to understand the underlying implementation of Debsources.
Dec 10 - Mar 9 (official internship period)
Dec 10 - Jan 9 (First month): focus on improving user interface and experience. First I'm planning to make pie charts and trend charts more readable. More specifically, we need to re-select the necessary information that should be displayed on the charts to avoid overlap and misunderstanding. As I use matplotlib a lot, the major job is to filter information and dynamically expand/collapse data view. Besides, I'd like to add the "total" information to all the rendered tables and add the disk usage trends.
Jan 10 - Feb 9 (Second month): maximize test coverage and add navigation functionality. I'll spend about one week to add test cases and improve test coverage first, and then move on to per-suite/release navigation. There's still a lot of desired features missing from Debsources, such as suite-based navigation/redirection, support for multiple archives, multiple popup msgs, etc. I'll start from the simple features (e.g., enable redirects to package versions based on codename/suite).
Feb 10 - Mar 9 (Third month): after fixing normal bugs and adding features, I'll work on refactoring and porting. I'll try to move queries out of models.py, into separate modules. The desired result is to move static methods to a query module. In addition, porting Debsources to Python 3.x is meaningful yet time-consuming, I'm planning to work on this if time permits. Finally, I'll work on documentation of the fixed bugs/added features and code cleanups.
Post OPW period: code maintenance and bug (if any) fixing
Will you have any other time commitments, such as school work, another job, planned vacation, etc., between December 10, 2013 and March 10, 2014?: The schedule related to school work is very loose as I have finished all the required courses and there is no conference/project deadline in the internship period. There is no job commitment, either. So I can essentially work as a full-time intern for this project.
Due to the enthusiasm for beautiful and elegant things, I'm also interested in web design, especially the webpage styles, themes and structures. I'm currently working on constructing and embellishing a personal site using SASS and Pelican. I've build website using Foundation and Bootstrap. I prefer Foundation since its website is more attractive and informative than the Bootstrap homepage :). Life is short, we need Python. Especially when I was annoyed by the pointers and memory leakage problem in C, I was astonished by the conciseness and readability of Python, let alone all those powerful modules and libraries. Starting writing Python is simple, but writing good Python is much more complicated. It calls for reading more sources and docs to really understand its mechanism and its beauty. I'm working on this currently.
Why Debian? Why are you choosing Debian? What attracts you about Debian? : Debian is one of the most stable and elegant system I've ever used. It is simple and straightforward enough for a beginner to experience the *nix environment. Meanwhile, it is also powerful and extensible enough for a developer to experiment bleeding edge functionalities. Like I mentioned previously, it is the common efforts from all the users and developers that make Debian enhance its performance and feature continuously. As a loyal Debian user, it's both my pleasure and obligation to join the community and make my own contribution. I believe it would be a mutual benefit process in the sense that I can help improve the Debian ecosystem, and the mentors and other developers can help me improve my development skills.
Are you applying for other projects in OPW? Note that letting us know about this does not impact your chances of acceptance or rejection with us; we ask this because it helps us to resolve deduplications wherein an applicant is accepted for multiple projects.: Nope. I've only applied for the Debsources improvements project.