Contributed by Ray Lai on from the my-very-first-time dept.
Hi, I'm Ray. I am a new OpenBSD developer. I wanted to be an OpenBSD developer not for the glory or riches, but for the self-validation. Four months ago I was writing my first large (1000+ lines) C program; today I am a committer. Here is my journey...
I wanted to get code commits; but didn't know where to start, so I cheated. I turned up the warnings on a bunch of utilities and started doing -Wall and lint(1) sweeps. I read style(9) and started cleaning them. Easy! Cleaning the code also helped me to understand the code, and I started finding ways to improve upon them.
After a while, I had enough of being a lint(1) brush. I wanted to prove that I could code - to myself and to the rest of the community. I needed to develop something that could be committed to OpenBSD. I then thought of sdiff(1).
sdiff(1) was simple but lacking in OpenBSD. It parses diff(1) output and splits it into two columns on the screen. I thought it was simple, but I was still a C neophyte and didn't grasp the intricacies. One bug only appeared when I compiled with -O0. I showed the code to my girlfriend, who was appalled by my debugging printf(3)s. She insisted that I use GDB and threatened to delete my code if she catches me using printf(3)s again.
That was how I learned to use GDB.
I was sick of nitpicking at sdiff(1), so I sent the code to misc@. A couple of days later deraadt@ yelled at me for invading the system space with my variable names, using realloc(3) poorly, and just having scary code in general. I was so happy my code wasn't just ignored and left to rot on the mailing list archives. I fixed what I could and rereleased the code. A few days later tedu@ committed my code.
marco@ and otto@ invited me to different chat rooms so they could get to know me better. The tree was locked, so I hung out at the channels and watched marco@ rant.
marco@ has been reverse engineering EST (Enhanced SpeedStep) code via ACPI and needed a good command-line calculator that accepted numbers in different bases. He didn't want to have to deal with specifying input bases and output bases, he just wanted to type numbers in C syntax.
marco@ joked he was going to stop ACPI development and write the calculator instead. I was procrastinating on more important matters, I dropped everything, whipped up a rough calculator in an hour, and sent it to him.
marco@ was sedated temporarily, but wanted more features and bloat. yacc(1) was pointed out to me. I didn't know yacc(1) at the time, but a rant seemed imminent so I Googled yacc(1) tutorials and skimmed bc(1) source code. I managed to create a simple yacc(1) calculator and the rant was held back once more. (My blood, sweat, and tears are in the ports tree under math/moo. If anyone wants to help extend it to different integer sizes or clean up the yacc mess, please contact me!)
The tree unlocked and a few days later I was offered an account. My mentor is otto@; every commit I make has to be okayed by him first. I am expected to commit, and commit often. The pressure is on.
(Comments are closed)