Friday, May 15, 2009

Home made FOSS

This blog is focused on starting a simple FOSS (Free and Open Source Software) project on your own based on the free resources from the Internet.
Let's look at the basic resources associated with an open source project.

Basic requiremnets for a open source project
Source code repository
Source code repository is used to store the whole collection of source code used to build a particular component or an application. Typically, the source code includes only human-written source code files, and not, e.g., source code files generated by other tools or binary library files. However, it generally does include configuration and property files. A source code repository becomes handy when the project is developed by many people around the world, which is a normal scenario for large open source projects. Source code repository enables the developers to work together on the project as well people who are interested in the project can go through the source code.
- There are many project hosting sites you can use for your project. All most all of them support for source code hosting. Some of them are as follows.
  • Google-code
  • Source-Forge
You can get more details about project hosting sites here.

There are other project hosting sites such as which provide project hosting services for projects under specific requirements. You can find more details on those project hosting sites here.

- The following snapshot is from Google code where the initial project creation take place.

Google code create project page
- Here you can choose the source code license based on you choise. This source code license determines how others can use your code. Read more informations on the open source licenses on Open Source Initiative.

Executable binaries
- The executable binary is created by converting written human readable programs (called "source code" or simply "source" or "code") into machine language in a process that is called "compiling". Source code can be read and modified (if you know the language), which means, if you had unfettered access to it, you can also alter it to suite your needs. So normally executable binaries are released based on the operating platform.
eg -
  • Zipped (.zip) archives for Windows platform (for each version of the product)
  • Tar balls (.tar.gz) for Linux platform (for each version of the product)
- Documentations are also very important for a FOSS project as it either explains how it operates or how to use it, and may mean different things to people in different roles. Types of the documentation are,

  • Requirements - Statements that identify attributes, capabilities, characteristics, or qualities of a system. This is the foundation for what shall be or has been implemented.
  • Architecture/Design - Overview of software. Includes relations to an environment and construction principles to be used in design of software components.
  • Technical - Documentation of code, algorithms, interfaces, and APIs.
  • End User - Manuals for the end-user, system administrators and support staff.
  • Marketing - How to market the product and analysis of the market demand.
Here is a snapshot of the project's downloads page in Google code. You can see there are executable binaries and some documentations as well.

Google code downloads page
Nightly build downloads
- This means creating daily builds from the source code. Nightly builds may be used for testing purposes. Sometimes these builds may be used by the users. Ultimately these builds helps to track whether the source code is stable or not up-to the build date.

Project mailing list
- Normally all most all the discussions related to an open source projects are happened via mailing lists. Anybody interested in a particular FOSS project can join to the public mailing lists hosted for that particular FOSS project. Normally there are two public mailing lists knows as Developer mailing list and User mailing list for a project.
Developer mailing list is used for discussions related to project development. User mailing list is used for discussions from user perspective. Some times there may be private mailing lists related to internal discussions.

Project wiki
- Project wiki is a set of wiki pages related to the project details. People can edit create new pages, edit them. So project wiki is some kind of a collaborative thing rather than documentation which is produced by a particular set of people. Here is a snapshot of a project wiki page on Google code.

Google code project wiki
Issue tracking systems
- For a software project an issue tracking system is an essential resource. It manages and maintains the list of issues related to project. People can create, update, comment, resolve, close etc. the issues regarding the project. Here you can find more details regarding the features of issue tracking systems. Here is a snapshot on project issue tracker page on Google code.

Google code project issue tracker
- On-line forums are also used on discussions regarding the project. Logically forums are organized into a finite set of generic topics (usually with one main topic) driven and updated by a group known as members, and governed by a group known as moderators.

To commence a FOSS project there are many project hosting sites like Google-code, Source-Forge etc. Google-code is one of the most easiest and the flexible project hosting service you can rely on. You can also try others as well.
Google-code provide basic resources required for a basic FOSS project. Here are some other snapshots of the project site hosted on Google-code.

  • Project home page

Google code project home page
  • Project source code details
Google code project source details page

No comments: