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.
Your Name: David Fifield Email Address: email@example.com Instant messenger name and protocol (if any):
Feature Creepers and Bug Wranglers
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.
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.
I have not done much development on Windows. Mostly my experience has been porting my Unix programs using MinGW or something similar.
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.
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.
None. (Although I've compiled it from source and seen the cool ASCII dragon!)
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.
Metropolitan State College of Denver.
Computer science and mathematics (double major).
Denver, Colorado, USA.
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.
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).
I plan to apply to the Vim and Xiph.org projects.
My personal web site: http://www.bamsoftware.com/
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.
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.