Random Thoughts..
Saturday, May 10, 2003
The Open Source community is distinguished by the fact that the projects handled by the developer teams are usually based on the concept of distributed development. Distributed and globalised development strategies are one of the major reasons for project agility. Yet such distributed paradigm requires some rigorous methods to be followed. This article proposes to lay down some basic rules (ground rules) that can be implemented by the teams involved in such projects.
1. Specify the objective - a whole host of projects suffer from generalisation of the stated goals. The aim and objectives of the project must be explicitly stated and quantified.
2. Lay down the law - the first step to a distributed development effort is getting the project team in place. Choose the lead developers, the early adopters and the evangelists (you'll need a good number of them). But most importantly choose a Project Lead. This has to be the person who will take the critical decisions as to project systems implementation, technology adoption and adaptation and product releases. Once chosen, unless relinquished, fix this in concrete.
3. Put a number to those stages - project/product development passes through a number of stages. Depending on the Systems Development Life Cycle methodology involved, these can be linear or cyclical (iterative) or even cascading. The important point is to put a number to those stages. In the later stages of the game, after innumerable fixes and patches, it helps to hyperlink back to the stage in question.
4. Weighing the progress - far too often good projects fail to realise the necessity of putting a weightage to the progress of the project. A progress bar looks good on eye-candy, but numbers help hard-sell the project. Put a number to the progress made, either in percentage terms or in terms of files (or anything that suggests the amount of work done/effort put in). And then provide each and every member involved with a monthly update - progress motivates volunteers like nothing else in this world.
5. Blow the trumpet - nothing said is nothing heard. This adage is even more imortant for group development projects. Set up the mailing lists keeping in mind the different members that form part of the project. There should be a 'discuss', a 'core', an 'announce' and a 'bugtrack' atleast to handle the different type of topic. A properly conceived write-up on the project detailing the aims and objectives along with strategies help push the project along.
6. Write that idea down - great software but where's the documentation ? how often has one come across such situations ? it is a sad fact that given the mad rush to go through the development cycles, documentation always falls a step (and sometimes more) behind. Each project should have a dedicated documentation expert keeping tab on the development process so as to ensure that these two aspects remain in sync. A collaborative book and/or a WiKi helps in creating a global scratchpad from which ideas and thought processes can be collected and collated. Begin the process from Day 0 and perhaps the strain of keeping pace will be a bit eased.
7. Release small, release steady - small iterative releases beginning with a working prototype that mirrors the project functionality ensures that the project concept can be provided a tangible shape. Iterative releases help incorporate bug fixes faster than monolithic version revisions. Functionally scoping the project leads to greater understanding of the end-user requirements and this in turn leads to the project keeping itself sheltered from ' scope creep and feature creep '.
8. Set up the channels - distributed project development requires as a primary resource properly setup communication channels. Getting these in place at the functional level is a major step ahead.
9. Be agile, be nimble - technological hindrances and hurdles will require to be addressed by practical decision making ability and decisive action. Adoption of technology, creation and implementation of standards require agility and the ability to be flexible. Yet suppleness should not be a cause of chaos.
10. Lower entropy, push progress - chaos though sometimes facilitating creative output, more often than not contributes in the reverse. Get a grip on the chaos and disorder through delegation of authority and allocation of responsibility. Hand out roles and motivate people to stick to them at the same time contributing on a niche basis on different project aspects.
The ten points above are not the entire spectrum of group/community-based development strategies. However, they are a step in a direction that leads to proper project layout and meeting project deliverable schedules. Adhering to projected time-frame enhances the credibility as well as conveys an image of a well controlled development shop. Every Open Source project differs from the other by means of the uniqueness of the goal. As such some of the points may or may not be applicable in the other cases. The project teams are advised to keep in mind their unique locales and adapt to the situation. Yet one thing is common to all community based projects - hope for the best and prepare for the worst, commitment and delivery on promises means greater recognition.
Sankarshan Mukhopadhyay is a Free Software enthusiast and a member of iLUG-Kolkata. His blog 'Random Thoughts' can be found here, he can be reached at sankarshanm@softhome.net
Introduction
The past two years (2001-2003) have been one of rollercoaster events for the Free Software community in India. Media spotlight was never lacking for community based software development efforts like this, what was lacking however was the critical mass of public opinion. In these 2 years the philosophy of Free and Open Source Software has managed to attain that much needed momentum, and currently can be proud to have initiated greater number of empathisers as well as enthusiasts.
A few definitions
Some definitions need to be put in place before the context and content of Freedom is discussed. These are based on the Webster's Seventh New Collegiate Dictionary , however I am certain that they appear as the same in any dictionary.
- Free - not dependent on others, self reliant
- Freedom - the absence of coercion or constraint in choice or action
- Choice - opportunity or privilege of selecting freely
What I propose to discuss is the relation of the concepts of 'freedom' as held out by Free and Open Source technologies in the light of the socio-political setup and the cultural milieu of a developing (pardon my non-usage of the 'third world' term here) nation like India.
Cultural Freedom
The concept of 'Culture and Computing' is not a recent phenomenon. It has been studied for quite an extended period of time, and a number of empirical studies reveal that the two are intermeshed. The cultural setting of the target audience/user base, the locale and the linguistic nuances play a pivotal role in furthering the benefits of ICT (information and communication technologies). At the grassroots level, the power of technology can be best observed when the medium of interaction is the local language. Free and open source software provides such a platform. As has been mentioned by Prof. Venkatesh Hariharan at his address at GNUnify 2003, the benefits in developing software and application suites based on such a platform ensures that localisation can be done in a manner that is 'far more culturally sensitive'. Addressing cultural issues at the level of software makes it possible to adapt the technology to reflect the reality of the social matrix. A case that is clearly not easily achieved when using and utilising closed source proprietary software and Operating Systems.
Political Freedom
The driving force of the current economy is technology. More precisely it can be identified as knowledge. Knowledge is a political currency in the sense that globalisation has ensured that competition is on to harness and filter such knowledge. ICT based knowledge initiatives are liable to be 'censored' and controlled by a central authority in case of a solution based on proprietary software. Free software based applications ensure that such shackles are broken and sovereign interests are looked into. The cultural freedom provided by Free software has direct effect on the political freedom obtained through it.
Economic Freedom
A major driving force for adoption of free software has been the cost of ownership. The economic benefits that can be accrued by such implementation are one of the plus points for the movement. Proprietary software prices do not reflect the true purchasing power of developing nations. Prohibitive and sometimes artificially high prices are one of the reasons why widespread adoption of technology meets with hurdles. Free software, especially GNU/Linux extends the freedom of cost. The economic freedom thus availed translates into social upliftment.
Social Freedom
A fallout of the cultural and economic freedom is the bridging of the 'digital divide'. Social studies have highlighted the gap between the techno haves and the have-nots, and models exist to predict the skewed social matrix. This disparate nature of the social matrix leads to a drain on the national knowledge base. Adoption of free software models to develop solutions provide a window of opportunity to such 'deprived' strata to gather knowledge. Harnessing the power of ICT based on free software ensures that social inequality (with regards to access to knowledge) is addressed.
In conclusion
Free software movement has within its ideals, the power to empower social strata as well as individuals. The reasons outlined above are compelling enough to ensure that localisation projects utilise free software toolsets to ensure greater adaptivity to ground realities. The aim of knowledge and technology in the end is to empower people to take the right decision, to make the correct choices. The impact of choosing free software and developing applications and solutions are long-term. A steady social revolution can be initiated with such efforts.
About the title
It has been an oft heard complaint that most of the titles chosen by me remain a bit cryptic. For this one, I propose to make it clear. The four directions represent the totality of our spatial surroundings. Together they make up the universe the way we perceive it to be, and are an intrinsic part of our daily existence. In much the same way, the freedoms imparted by Free Software movement become a driving force of any society, acting as omnipresent enablers of progress and equality.
Sitewatch :
Sankarshan Mukhopadhyay is a Free Software enthusiast and a member of iLUG-Kolkata. His blog 'Random Thoughts' can be found here. Sankarshan can be reached at sankarshanm@softhome.net