ShashwatAnand

Shashwat Anand

Contact information

Project

  • Project Name: Quickly and QA learning

  • Project Description: Quickly should integrate pylint with a "quickly check" command, with some carefully chosen default options, that will help people learn better Python style. Adding a testsuite to boiler plate code can be a great addition. This can rock on and learn people how to make better programs.

  • If you would be willing and able to do other projects instead, which ones?

    • None
  • Why did you like this idea?

Python design philosophy emphasizes code readability. The code is written once but is read by lot of people. A readable code is a maintainable code. The basic theme of open-source is code sharing and it is beneficial for everybody if it is readable and follow conventions. If the source code is to be shipped in public we need to make sure it is as clean and as well-packaged as it needs to be. That is why there exists code conventions. Ironically this is never taught in any class. University students as well as engineer tends up to write spaghetti code. However python is the most readable language of all and Guido documented the Python style guideline in PEP-8. Languages like C++ do not have a particular writing style but for a language like python which lays much importance over readability ("Readability counts" from 'import this'), it's absolutely necessary that the code follows the python style guide i.e. PEP8

When I was hunting for project ideas the phrase mentioned in project-description sold me out - "that will help people learn better Python style..This can rock on and learn people how to make better programs."

What do I want => To write a great code which is used widely and is appreciated and to serve the community.

What does this project is giving me => Chance to write some great code which will be used by others and they will improve their python skills and write better programs in general. Henceforth this will be my ninja-way of evangelizing Python.

  • Please describe a tentative project architecture or an approach to it:

Quickly is written in python. The data section contains templates - ubuntu-application, ubuntu-cli and ubuntu-pygame. There is also the bash-autocompletion feature. the commandsconfig file contains the commands for the particular templates. There are files like tutorial.py for tutorial and other files configure, create, design, edit, license, package, release, run, save, share and upgrade for the purpose the name suggests. pylint should be added in the 'internals' and a 'check' command will be added in commandconfig file which will be used to run pylint over the project. For incorporating warning switches pylint wil be tweaked a bit to show respective warning levels so that beginner to professional can be benefitted by it. Pylint already have the feature to control verbosity, the feature should be imported as such for warning switches. Similarly pylint can take the user-define configuration from a config file and this feature will be imported in Quickly too. Since I have to read and understand whole of Quickly code-base so I will apply PEP8 standards on each files as I go through them. I had started reading code-base and forked it on my bitbucket https://bitbucket.org/l0nwlf/quickly However for the purpose of soc I'll use launchpad to avoid conflict between bzr and hg. A test-suite will be created in the boilerplates in the core and templates to help user and conduct to them one. Finally as a feature gedit plugin will be made to integrate quickly on fly as a side pane. Also I plan to make Quickly platform-independent by making templates for osx and all but it does not come with the scope of ubuntu so I'll do it plainly from my side. Finally Quickly does not install manually from the setup.py (Issue 519222), so I'll try fixing the bug to make it an standalone awesome tool easy to install, easy to run, fun to use.

  • Give us details about the milestones for this project

There are going to be at 10 milestones for this project:

1. April 9 - May 23, 2010 - Read and understand Quickly code-base.

2. May 24 - June 7, 2010 - Integrate pylint to the template, so as the code is analyzed looking for bugs and signs of poor quality and check if it satisfies proper coding standards.

3. June 8 - June 15, 2010 - Write a gnome-template with integrated pylint.

4. June 16 - June 23, 2010 - Standardized quickly code-base making it compliant with PEP8 standards.

5. June 23 - June 30, 2010 - Create an option switch (like -W/W3 (detailed warnings), -W0 (only rating x/10.0), -W1 (standard warnings), -W2(mildly detailed warnings).

6. July 1 - July 7, 2010 - Provide a config file where user may define its own standards (like say he wants 2 spaces instead of 4 for indentation).

7. July 7 - July 15, 2010 - Create a basic test-suite in the boilerplate in the core and template to help user and conduct them to keep one.

8. July 16 - July 25, 2010 - Make setup.py install manually (i.e. fix bug https://bugs.edge.launchpad.net/quickly/+bug/519222 ).

9. July 26 - August 9, 2010 - Integrate it on fly as a side pane in gedit as a gedit plugin.

10. August 9 – August 23, 2010 - Clean up code, improve documentation, complete any pending job and package any codes, packages or extra files for delivery.

  • Why will your proposal benefit Ubuntu?

Quickly aims towards making programming easy and fun. My proposal upon successful completion will make Quickly a tool which will not only make programmer life easy but will also help him level-up and be a better programmer. With each better programmer and with each line of beautiful code the community will grow and prosper. Just like how Ubuntu taught the world that linux can be used by the masses, it will teach the normal user to write beautiful codes.

Open Source

'Open Source' is not only a term but an ideology. I can write tons of argument here as to why use Open Source but for me the 'selling point' is 'community support'. There are loads of awesome people out there who help you out in understanding the code and at one point you realize that it's time you start giving back the community. It happens with every OSS lover. Sometimes you just know - 'This is awesome, I too want to be a part of it'. I know I'll keep contributing even in job, there are certain things in life you are just sure of. 'Open Source' is one such thing for me - and really high on my priority list.

Availability

  • How long will the project take? When can you begin?

The project will take about 3 months and I will start it on last week of may, when my semester ends.

  • How much time do you expect to dedicate to this project? (weekly)

35 hours a week or more

  • Where will you based during the summer?

Allahabad, India, UTC 05:30 - will be online most of the time

  • Do you have any commitments for the summer? (holidays/work/summer courses)

Have a few internships which I will drop in case of being selected

  • Please designate a back up student (in case you need to withdraw your application)

None

Other

  • Have you ever participated in a previous GSoC? (describe your project)

Yes, GSoC 2009 for Open64 - The project dealt with the study of actual phase-ordering and corresponding documenting the actual phase ordering in Open64 illustrating optimization effects for each major phase with a running example taking specialized examples to make certain points. The emphasis was given on demonstrating the IR before and after optimizations, and explanation of exactly what is happening in the transformation Deliverable: Collection of all the various resources available on the Internet for compilation of the documentation. Reading of the source code of Open64 compiler and fully exploring each phase. Generation of test cases to observe the working of each phase in the compiler. Repeating the above two steps for exploring phase specific optimizations and the Intermediate Representations involved. Noting down of the results obtained. Simultaneous building of the documentation focusing on the correctness and the detail of explanation.

  • Have you applied for any other 2010 Summer of Code projects? If yes, which ones?

Not yet, will apply to PSF most probably.

  • Why did you apply for the Google Summer of Code ?

To write some great python codes and for the gratification that my code will be used by people all over the world.

  • Why did you choose Ubuntu as a mentoring organization?

Ubuntu is the distro which reaches to masses and it had done a great deal popularizing linux. Henceforth, choosing Ubuntu implies that I too will become the part of the revolution Ubuntu created. Beside that the project is quite appealing and my mentor is an awesome person, helpful to the core.

  • Why do you want to participate and why should Ubuntu choose you?

I am an open-source fan, had attended almost all the conference, hackfests and barcamp which happens in the vicinity. Beside that I love reading codes and tweaking my system. I have been using *nix based distros since 5 years. The proposal upon successful completion will benefit Ubuntu and the community in general because it targets simplicity with power which is what Ubuntu aim for.

GSoC/2010/ShashwatAnand (last edited 2010-04-09 14:49:39 by iws4)