[[http://flosscom.net/templates/xplike.plesk.blue.2/images/logo.jpg]] ~+''' Characteristics of Free / Libre Open Source Software (FLOSS) Software, Projects and Communites '''+~ <> = Introduction = Introduction to the FLOSS Characteristics So...What is FLOSS after all? First of all, the initials stand for Free/Libre/Open Source Software. It is rather obvious that the term refers to both free and open source software. Even if it seems as these two software categories are the same, they are not. But even if they are different categories, there's one basic characteristic which makes them related: both are free! The ambiguity regarding the meaning of the word "free" in the English language makes the following note necessary: the term "free" does not refer to the monetary value of the software but rather to the degrees of liberty (or freedom) that it contains. Thus, when talking about free software, it is best to avoid using confusable terms like "give away" or "for free", because those terms imply that the issue is about price, not freedom as an ethical value. For a piece of software to be labelled as "free" the following rules must apply: * Freedom to run the program for any purpose * Freedom to study the program and change it according to the user's needs. This, of course, means that the source code of the software is accessible * Freedom to redistribute copies (this can be done either gratis or for a fee but not for commercial purposes) * Freedom to modify the software and release the modified version under the same terms. Again, this would mean that access to the source code is open. However, it should be good to state the following too. "Free" software does not mean "non-commercial" software. A free program must be available for commercial use or even for commercial development and commercial distribution. In fact, commercial development of free software is no longer unusual and several supporters of free software believe that such free commercial software is very important. The following sections present the basic characteristics of FLOSS and its development principles and identify how these can be transferred to the contexts of learning and education. = Main Part = What are we talking about? As mentioned above, FLOSS is a term that defines every form of free software. But still, there's an important difference between free and open source software: the code distribution. When the software source is distributed throughout all project members we are talking about open source software. When the source is only at the hands of the initial developer though, we refer to this kind of software as just "free", while it follows the conditions described at the Introduction section upon its release. What are the characteristics in FLOSS that are relevant to learning? Now that we know the basic difference between free and open source software we can move further on to the characteristics of FLOSS. The most vital characteristic for FLOSS communities is the feedback from users. When someone uses the software they will probably come across program faults, commonly referred to as "bugs". They then have the option to report these bugs, so that the coders are aware of them. Also, in most FLOSS projects, the user has the option to request a specific feature, which will improve the program's functionality. When it comes to open source software though, there's a more important characteristic through which learning can be achieved. The source code is available to every single developer, giving the opportunity to fix bugs, add features or otherwise improve the code simply by editing it directly. This is the most challenging thing about FLOSS, which will probably make someone start looking around in forums, chat rooms, etc so that he can edit the code effectively. Another vital characteristic of FLOSS that relates also to learning environments is that the development takes place inside communities (mostly these have large numbers of participants with various roles) and it is a rather collective effort. Several people bring their skills into the different processes, each choosing the part they want to contribute and all forms of information are accessible by all. Thus, a "common pool" of knowledge is gradually formed where everyone contributes their best and this generally promotes learning. No specific obligations and the freedom of each person to choose their own level and domain of contribution based on their interests and preferences proves to be a very strong motivator to get even more involved and finally gain from the process. This could be also true of students that would feel more at ease when they are free to choose their own assignments and the role that they want to have in them. Under these circumstances they get to work on things that are interesting to them and this brings forth a greater dedication to the task and consequently better results and gains in new knowledge. The online environment of FLOSS communities has also the positive characteristic of bringing together a multitude of personalities, cultures and backgrounds and forming a large user base. Some of the world's finest programmers are active members of FLOSS projects, a unique learning opportunity for other participants ("learning from the best"). These are striking differences from other forms of isolated teams working in the more traditional version of software development and such characteristics relate closely to learning and can be adopted as valuable lessons. What are the learning resources you use in FLOSS? Well, to obtain "knowledge" from FLOSS communities there's a wide variety of resources available. Usually people are learning by asking others in these communities, which can be achieved by using fora, chat rooms, blogs and other similar tools, communicating with each other, whether it's instant communication or not. Also, FLOSS projects have a variety of mailing lists, regarding a number of topics, which are archived regularly and work as a large database of issues/problems/questions that have been raised in the past and the way they were addressed. This is a good "quick reference point" before starting to dig deeper for solutions to problems. = Advantages = What works well * FLOSS projects are free of charge, making it possible for everyone to own them. * It is based on user feedback (which on FLOSS is much larger than on commercial software) making it easy for the software to improve. * FLOSS covers almost every software category, making it easy to find the proper software for your needs. * Usually FLOSS projects comes along with many "forks" of them (similar software), giving users the option to choose what's best for them. * FLOSS can be used without restrictions, which usually come with commercial software. Also there is one more advantage, only for the Open Source software: * The code is available to everyone, making error correction and code improvement much faster. * If the initial team abandons the project, the code is available for anyone to evolve it. = Criticism = What does not work that well, what needs to be improved, etc. * When there's a conflict between developers, there's nobody to define what should be done. * Usually when someone downloads Free/Open Source software just uses it without returning any feedback. * There's no motivation for someone to contribute to a FLOSS project. If someone does, he will do it just because he wants it. * Sometimes when someone does something wrong (eg reporting a bug that's already reported, editing code the wrong way, etc.) there might be harsh comments from other members of the community, discouraging further contribution to the project. = Examples = Including practical activities A practical activity that could be used to learn through FLOSS would be an assignment to perform "bug testing" for a FLOSS project. It would be beneficial for students to learn how to form a good and informative report and then examine the FLOSS community's process of trying to fix this particular problem. Doing so, they are also being introduced to the project's hierarchical structure and different roles of people within the community. This way students can participate and learn through FLOSS, even without having any knowledge of software development. A lesson or course could be structured based on FLOSS principles. For example, a presentation could be set up jointly by students to which only a general theme and guidelines could be given. Students can work on the presentation by contributing their knowledge on the subject, developing the slides, editing the content, commenting on the result, or any other piece of work. Based on the FLOSS example this would mean that a teacher would provide the students with an online tool to which everyone would have access in order to manage their joint effort. Additionally, the general subject should be provided. Students could gradually shape up their work by combining the individual contributions (according to preferences and skills) made on the progressing working base. Work, of course, would not be delegated formally but rather each student could decide for themselves. This system would allow them to contribute to whatever part they find more interesting. They could shape up their own level of contribution. Apart from this being a strong motivator to get involved, they would also get the chance to learn through the contributions of others in an informal environment. Better organized, such a system could work also on a more open basis, even globally, and gather an even more extended set of students. This wiki initiative to shape up the “learning the open source way” toolkit is a good example of such an attempt to combine individual contributions and collaborate on a common goal. = How could it work in education? = Translation of FLOSS principles to education FLOSS principles bring a more "practical" way of learning than the "theoretical" that already exists. When someone is participating in a FLOSS community, he is brought "into the scene", whether it's through coding or other activities. Additionally, if he has any questions there's always a way to communicate with other members of the community and there will always be someone that has the answers. To compare FLOSS learning with conventional ways of learning, let's see an example: Someone wants to write a program. Reading a book and then trying to write it would be the conventional way...it's practically impossible though since he's never written a program before! On the contrary, if someone knows the basics, start writing the program instantly, and then go online searching or asking whenever he runs across an obstacle it will be much easier! What appears to be the most important fact when coming to the use of FLOSS in a school environment is the satisfaction that comes through the process of "learning". Free software gives the opportunity to students to learn how software really works. Non-free and non-open source software rejects their thirst for knowledge, giving them the idea that the knowledge they seek is a secret and thus learning is forbidden. That has a very negative impact about the value of learning on a young mind. On the contrary, free software rejects the latter and encourages students of any age and situation to read and examine in depth the source code, learning as much as they want to know. Schools that use free software will enable gifted students in programming to advance onto higher levels, forming the future generation of software designers. = Summary / Resume = What have we learned here? It is useful to have in mind that the development of FLOSS ultimately proves to be a learning process in itself. Participants become better programmers and team members through their experiences with this virtual environment of collaboration and joint effort. Some distinct characteristics of FLOSS that account for its success and could relate to educational and learning environments include the following: * Common and open access to resources and tools * Freedom in use, modification and release * Large user base, collective effort, attraction of highly skilled individuals. This is mainly due to the online environment and open access * Feedback from users which improves quality and functionality * Freedom of choice of level and domain of contribution * "Learning by doing" * Modern version of team formation and collaboration = Questions = Aspects to be answered = See also = Internal and external links to related resources http://eu.conecta.it/paper/Advantages_open_source_soft.html Article on Wikipedia about FLOSS: http://en.wikipedia.org/wiki/FLOSS The Open Source Definition: http://www.opensource.org/docs/osd The Free Software Foundation: http://www.fsf.org/ = Notes and references = Resources used, literature, etc ''' [[flosscom|Back to mainpage]] '''