If the below is a reply to the wrong question I would like you to clarify some things. Are you just new to changing Freeciv or are you new to programming in general? If you are new to programming in general: Is your prime motivation to change Freeciv or to learn how to program? If you are new to changing Freeciv: Are you aware that parts of Freeciv, like most rule set files, are in the section (".ini") file format? Do you wish to do things that require C programming or are Lua programming or section file changes interesting too?
One possible reply. Assumptions: You are new to changing Freeciv or has modifying it as your primary goal. You are aware that Freeciv, unlike the toy problems most programmers starts with, is big and has a lot of stuff that interacts with each other. You are interested in changing stuff that can't be changed in a rule set. You know enough to compile Freeciv from source code. You know how to read source code. You know what a version control system is. Let me know were I was wrong.
bradltl wrote:I'm wondering if your ideal dev environments and tools. I'm not a well seasoned developer, so I don't have any real bias one way or the other. I have Windows, Mac, and Linux computers already resident on my desk... so where should I start?
If you are going to modify the Freeciv C source code using GNU/Linux will probably be the easiest option. (If it isn't Android it's probably GNU/Linux) What specific tools you will find easiest may be different from what I find easiest. I may also be unaware of some superior option.
Personally I use Debian testing when I develop Freeciv. In Debian (and Debian derivatives like Ubuntu) the command
will download and install all that is required to compile the Freeciv version that comes with the distribution. You may need to install other things to build trunk (the most recent Freeciv version). If you send us a patch it should be against trunk. At the moment Freeciv trunk is Freeciv 2.6. The stable version is Freeciv 2.4.
A good text editor will highlight the source code so it is easier to understand. It will also reveal simple mistakes. An integrated development environment (IDE) will do that and more. Examples are pointing out more complicated mistakes, take you to a symbol's definition and list all places it is used. Personally I use an IDE called QtCreator when I program in C or C++. It doesn't understand that a Freeciv specific macro will turn our specenums into enums so it won't take you to their definition. Its normal text search will have to do in those cases.
A good version control system (like Git (a bit complicated in the beginning), Bazaar (practically dead) and Mercurial (I don't know it)) will let you have more than one change locally. I used Bazaar until its Svn support broke. Now I use Git. If you don't have a good version control system viewer installed locally there is one at
http://repo.or.cz/w/freeciv.git. It is a git mirror of the latest version of the Freeciv source code. You can use it to search for and view previous changes. That makes it easy to find changes similar to what you are trying to achieve. That helps you understand what systems you may need to touch. It also let you find the history of each line in a source code file so you can understand why it is there.