It started with the Sinclair ZX Spectrum on which my father introduced me to programming in BASIC and Z80 assembler, and even a little Forth, and to the joy of plugging the telephone handset into an acoustic coupler modem and being greeted by a remote login prompt from his mainframe computer at work.
I progressed to an Amstrad CPC6128 with a disk drive and became delighted by the Unix-like CP/M operating system, software done properly at last with modules and documented APIs. I learnt C although the available compiler was a clunky beast. Combining assembler, C, and BASIC, I wrote a disk copying and format conversion program, a cache for the floppy disk driver, a snake game, and simple CAD and 3D maze and flight-sim programs.
I built peripheral plug-in cards to add an RS232 serial port, a real-time clock, a PCM sound card, and eventually a SCSI hard disk. By this point the CPC was fast becoming obsolete and I was at University with access to proper Unix machines, but I continued using it to write and print much of my coursework.
While I had used Linux and open source software, my first introduction to contributing to it came in 1999 after a trial flight in a microlight aircraft. The club enthusiasts were building a flight simulator with a real cockpit seat and yoke and three monitors driven by three separate PCs. They were mainly running Microsoft Flight Sim but trying other software too. Intrigued by the possibilities, I discovered the open source flight simulator FlightGear, and its community of developers warmly welcomed me to join and contribute to it. I remember the first thing I did on running the sim was to try to adjust the altimeter to read height above ground level (known as QFE) instead of above mean seal level (QNH). But nothing happened because the altimeter setting knob was just a passive bitmap image, so my first contribution was the code and graphics needed to make this work.
Then in 2003 someone mentioned Subversion. The need for a better version control system had become very apparent to me at both at work and at home, and the Subversion developers were very welcoming too. Initially I contributed tiny fixes and improvements. Eventually I was offered a full time job working on Subversion and was able to address larger issues.