Getting Started
A getting started guide on software development with FOSS
DRAFT - work in progress
Getting started
There is a wealth of good resources online from which to get started on "Free/Open Source Software (FOSS)":http://www.iosn.net/foss/foss-general-primer/ This article is meant to put together the steps and resources I went through in learning to be comfortable using and developing FOSS software as an end user, system administrator and developer. It was inspired by "ESR's How to be a Hacker":FIXME but tailored to my experiences of acquring FOSS The amount of knowledge you have access to is immense and can be daunting. I hope that this guide will help ease the learning curve by providing some possible starting points.
A few essential resources:
- Internet connection (broadband is better)
- Contact with a local free/open source software user group
- Printer - printed materials sometimes are easier to follow
Operating System
First thing you need is a "free" and open source operating system, that allows a basic install (no GUI). This is that you can gradually learn, without overwhelming yourself or by having all the basics setup and hidden from you before you get a chance to learn it. I chose FreeBSD because good and easy to understand documentation is important for a new user. FreeBSD comes installed with a very comprehensive handbook_ and companion articles. Another point is that when searching online, the solutions and examples for FreeBSD will usually be identical to what you need for your system. On Linux the different distributions and defaults installed can be confusing for the new developer when searching from online examples. If you want to pick up Linux here (FIXME link to IBM resources), else read on. (FIXME gentoo, ubuntu, fedora documentation resources)
An important note if you come from a proprietary operating system, is to quickly get rid of it. Like cigarettes, it's a bad habit that's hard to break. We want an operating system to learn and gain knowledge from and where learning more about the internals of the OS is not an illegal activity. Additionally If you are learning this at home an don't have access to a printer, you will still need to keep the proprietary system for a bit longer in order to download an installation CD and print out some essential guides before you get started.
Getting Started Checklist
Here are a few things you should have before getting started. An installation CD, printed installation documentation and an internet connection that you will be able to use.
Getting FreeBSD and contact with local community
Grab the FreeBSD 5.3 ISO (FIXME). If you are on a slow connection, get in contact with your local free/open source user group. A helpful person from the community, will usually be able to burn a copy for you. If you are in the Asia-Pacific, UNDP's "Internation Open Source Network":http://www.iosn.net (IOSN) will probably have a link or contact to a local FOSS_ user group.
You should get the full installation (Disk 1). This will contain a lot of built in packages (applications), to get you up to speed quickly.
Local community will also be helpful in giving you pointers and help in case you get stuck. Often times people have said that the FOSS community is not helpful. This is not true, and is often a misundertanding. If you intend to become a system administrator or developer, self initiative towards understanding and overcoming a problem is expected. Soliciting advice for those from the community to assist you with your iniatives will result in a lot of people trying to assist you and share their knowledge.
FreeBSD Handbook
This is available "online":http://www.freebsd.org/handbook, and on your system after installation (/usr/local/share/doc/handbook). You can also find it in pdf or ps format to print the whole book for reference.
You might want to print the installation chapter, as a reference before installing FreeBSD.
- "Installation":http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/install.html
- ppp/pppoe section
vi basics
A lot of FreeBSD and FOSS software uses text based configuration files, and learning how to use the vi editor is an essential skill. You would probably want to have a printed copy of "Introduction to vi":http://www.oreillynet.com/pub/a/bsd/2001/10/25/FreeBSD_Basics.html handy while you're getting started. It might feel a bit non-intuitive at first, but you will soon find out why vi has and is still in use as an editor for over 20 years.Network
Getting online is important. The popularity of FOSS_ many would say coincided with the spread of the internet. Without an internet connection you will lose the benefits of FOSS which is the worldwide sharing, collaboration, contributions and support of thousands, if not millions of other users worldwide. A flat rate connection is more important than speed, so you can search and continously learn from online resources without worrying about cost. Be aware of what kind of internet connection you have, such as dial-up or ADSL. If you are on dialup make sure you do not have a Winmodem (FIXME). If in doubt get an external modem (Non USB) that connects to a serial port. If you have an ADSL service, an ADSL/router is easier to setup and use as you only need to setup DHCP on your FreeBSD system to get connected. Stay away from USB ADSL modems, even on proprietary operating systems with drivers, they can be flakey.
Basics
Once you get the OS running, network connection and GUI running you are already on you way towards learning basic system administration skills. While doing all this from what seems to be a minimalist environment can be daunting, the basic skills you learn by going under the hood will help you quickly pick up more advanced skills in future when you start to explore how to do other tasks and engage the FOSS community.
Installation
Installation would have covered an understanding of the hardware devices you have and also the layout of your hard drive and partitions.
If you opted for an FTP or network installation, you would also started to learn the basics of mass deployments in an enterprise or clustering situation.
For the first time also, you are now introduced to the freedom of installing software that does not require licensing keys, activation codes and other forms restrictions to using/copying the software you use. You have more rights now to using FreeBSD than somebody who paid a lot more for proprietary software.
Learning other editors
"vim":http://www.vim.org is the default editor of a lot of Linux distributions and also has a lot more features. It's worth installing it and running the commind 'vimtutor' to go through the very well written and interactive tutorial.
"emacs" is another powerful editor, which can also be extended with a lot of other functionalities. It might be worth to try this editor also, especially if you are interested in doing software development.
Internet access
While generally safe out of the box, if you followed might want to look also at setting up a NAT/Firewall setup (FIXME - link). This would lead you to understanding basic networking, as well as setting up router/firewall software functionality that is in a lot of embedded internet appliances.Learning how to install software
There is wealth of software available with only a few steps to install and run them. This is covered in the freebsd handbook.
By browsing the ports directory /usr/ports and reading the package descriptions (pkg-desc )
Getting X and Desktop
FixmeAdditional resources
The FreeBSD Handbook as given in previous links, provides a wealth of information to get a variety of tasks done. To get a deeper understanding of some of the basics however, "Dru Lavigne's FreeBSD Basics":http://www.oreillynet.com/pub/ct/15 provide clear and detailed introductions on a variety of FreeBSD topics which are easy to follow.
Community/Project Resources
Mailing lists
Most projects have mailing lists that provide support for users, developers, marketing/advocacy, general discussions as well information such as the latest changes to the source code. In addition to the end user support, one should also look into subscribing to the developer mailing lists also. Browsing these mailing lists each day, will allow you to slowly learn from the questions asked by others, as well as gain insight into how the development process works. You will soon find that, you too will be able to answer some of the questions you were asking just a few months ago.
Before you post questions, however as usual try to search for it, or check the FreeBSD handboook first.
For the FreeBSD project a few mailing lists that you should subscribe to are:
freebsd-questions -- A general friendly support list.
freebsd-gnome -- Help on Gnome desktop environment on FreeBSD
Community mailing lists are also another good resource for support. Examples are:
"MyOSS":FIXME -- Malaysian Open Source Group
"PLUG":FIXME -- Philippines Linux User Group
IRC
IRC is often the prefered choice for live communication by FOSS_ projects. They're public channels and sometimes people can be rude, but generally most channels are self-moderated and you will find most of the irc channels on freenode for FOSS projects are friendly and helpful. There are various irc programs available, XChat (FIXME) is the one I use.
#freebsd-gnome -- FreeBSD Gnome Desktop developer and user support
#myoss -- Malaysian Open Source Group channel
Programming
A lot of people exposed to FOSS, are also interested also learning how to help develop and understand the software that they use, now that the source code is freely available to them.
ESR's `How to be a hacker`_
Provides a lot more general links as advice on how to start hacking (developing).
Python (Dive into python)
Python is good first language to learn, which is useful for a variety of applications from system scripts to GUI applications.
"Python tutorial":FIXME
"Dive into Python":http://diveintopython.org/
Advanced
Development Environment/Jails
Other Resources
Unix Development
- The Art of Unix Programming
This book provides a lot of very insightful insights towards the design of Unix. A lot of very insightful information for both system administrators and developers alike.
System Adminstration
FIXME

