Proposal

Abstract

This is a project to fix many small bugs and implement many small features in Nmap. Each one is anticipated to take only a few days to handle, so many can be completed over the summer. The specific bugs to be fixed and features to be implemented are not known in advance.

This project will involve becoming familiar with the Nmap code and existing bug reports and feature requests. Work will proceed in several short iterations, with bug fixes and features as deliverables. It will require working in many different parts of the Nmap codebase, rather than one subsystem.

Proposal

Your Name: David Fifield Email Address: david@bamsoftware.com Instant messenger name and protocol (if any):

Top Project Choice (If choosing one from the Nmap ideas page):

Feature Creepers and Bug Wranglers

Are you willing and able to do other projects instead?

Yes.

Please describe in a few lines your C/C++ knowledge or experience (if any):

I am an expert C programmer, with more than eight years of experience. C is my favorite programming language. I am very familiar with typical C idioms. I tend to use a fairly object-oriented style, with structs representing objects and consistently named functions that operate on them. I like the K&R brace style. I have used C for applications and low-level embedded development. I read and worked all the exercises in the book The C Programming Language (http://www.bamsoftware.com/computers/tcpl-answers.html). I can write excellent C code with confidence.

I have done some work with C++ and the Standard Template Library as part of schoolwork, but not for a real project. I don't have trouble reading C++, but I don't have familiarity with C++ idioms.

Please describe any Perl, Python, LUA, or other scripting language knowledge/experience:

I used to know a bit of Perl, but I stopped using it after I learned Python. Python is my second-favorite programming language, and my first choice for new projects. I have written real programs (not just scripts) in Python, but I am not an expert.

I have not used Lua.

Please describe any Windows development experience:

I have not done much development on Windows. Mostly my experience has been porting my Unix programs using MinGW or something similar.

Please describe any UNIX development experience:

Almost all my work during the past five years has been on Unix, specifically GNU/Linux. I'm comfortable using the shell and other standard Unix facilities (my classmates tease me because they see me working in a terminal window most of the time). I created by own build-from-source GNU/Linux distribution (http://www.bamsoftware.com/software/gusto/index.html), but it has not been maintained for a couple of years.

Please describe any previous Nmap usage experience:

I first used Nmap in a computer security class at school. I haven't used it in any advanced way; just things like OS detection and finding out what hosts are up on a network. My use of Nmap (and all my computer activities) has been strictly white-hat.

Please describe any previous Nmap development experience:

None. (Although I've compiled it from source and seen the cool ASCII dragon!)

Please describe any previous Open Source development experience:

I believe in software freedom. I use GNU/Linux for my day-to-day work and software development.

I have contributed only trivial patches to public free software projects (LNX-BBC, pydance, Xbox-Linux). I have released some of my own software (http://www.bamsoftware.com/software/index.html). Sad to say, most of it has not been used or worked on by other people. The only exception is Gusto, my GNU/Linux distribution, which attracted another developer who worked with me for a while.

I have adequate experience with distributed development. I'm used to mailing lists, patches, revision control, etc. I know how to use CVS and Bazaar, and I'm willing to learn other systems.

In building my GNU/Linux distribution, I gained a lot of experience in packaging and maintaining other people's software.

What school do you attend?

Metropolitan State College of Denver.

What is your specialty/major at the school?

Computer science and mathematics (double major).

How many years have you attended there?

Three.

What city/country will you be spending this summer in?

Denver, Colorado, USA.

How much time do you expect to have for this project?

I can make it my primary task during the summer. I'd like to work somewhat less than full time, maybe 30 hours per week.

Please list jobs, summer classes, and/or vacations that you'll need to work around:

I will take a few days off around the weekend of June 9 and 10.

I will be leading a leadership training camp July 13-21.

I may have a vacation July 29-August 4 (this hasn't been decided yet).

Did you participate in a 2005 or 2006 Summer of Code project? If so (and it wasn't Nmap), please describe your project and experience:

No.

Have you applied for any other 2007 Summer of Code projects? If so, which ones?

I plan to apply to the Vim and Xiph.org projects.

If you have a URL for your resume/CV, please list it here:

http://www.bamsoftware.com/david/resume/index.html

If you wish to list any personal/blog URLs, do so here:

My personal web site: http://www.bamsoftware.com/

Please describe your proposed project in detail, including deliverables and expected timeline with milestones (this is the long answer):

As stated in the description of the Feature Creeper/Bug Wrangler project, there are many small projects that are not specified yet. Therefore, I cannot give an exact description of how the project will run. However, I can describe general characteristics the project as I would like it to proceed:

The project will start by my reading descriptions of existing bugs and feature requests. Because my work will be in many parts of the software, another early activity will be becoming familiar with the Nmap code. By June 7 I will submit a report of what bugs and feature requests I can begin work on immediately. The report will include bugs and features that can't be started immediately because they need clarification, design decisions, or other work. These projects will be candidates for later iterations of development. Any larger projects requiring more familiarity with the code will begin on July 11, near the mid-term.

I would like the work to proceed in many small iterations. A rough deadline for each bug fix or feature will be decided on between me and the mentor. Deliverables in the form of bug fixes and new features will be submitted as they are completed. If a sub-project can't be completed before the deadline, I will submit an explanation of the reason.

All new code will be properly documented according to the project's conventions.

The project description says I should say which tasks are a good fit for me. I like to analyze and fix bugs. It makes me happy to make code work better. I have some experience with socket programming. The task involving identification of application protocols appeals to me.

Why are you well suited to perform this project?

I'm very bright and I learn quickly. I want to make projects succeed. I act professionally and I take my work seriously. I'm good at working in a team. I have the necessary programming skills.

I'm really excited to help out a widely used free software project. I want to start to repay the hackers worldwide who have done so much for me. I would love to be able to say I worked on Nmap.

Page last modified on May 23, 2007, at 05:58 PM