Tuesday, May 13, 2008

FOSS - What's in it for me?

This philosophy of FOSS results in tremendous benefits to users. These include:

• Reduced Cost - The cost of FOSS software remains fixed even when the number of users increases. For example, if you use GNU/Linux as your operating system, in your office, the same CD can be duplicated and distributed to all users. However, if you opt for a “licensed” Microsoft Operating System, it would have to be purchased for each user’s desktop.

• Reliability/ Stability - Free software is the combined result of the experience and the intelligence of all the participants. Its reliability increases as time passes, with all the corrections which are made.

• Portability - This quality is not intrinsic to free software, but is very often seen in free software. If software meets success, it will necessarily be adapted to other environments than those initially considered.

• Performance - Resulting from a lot of examinations, the use of algorithms coming from advanced research works, as well as tested by various usages, free software have good performance characteristics by nature.

• Interoperability - The support in Linux, for example, of a lot of network protocols, file system formats, and even binary compatibility modes assures a good interoperability.

• Reactivity - Rapid solution of corrections to a given problem.

• Security – Transparency of source code results in faster identification and fixing of bugs and security loopholes.

FOSS is relevant and important in education institutions because access to the source code of the programs allows students to explore internals of complex systems and hence acquire a deeper understanding of what they study. For example, students learn about operating system concepts by checking out the code which implements similar functionalities in Linux. Today, most educational programs require access to a lot of computing software resources, e.g., Matlab, circuit simulators, drawing packages, etc. Mostly proprietary solutions are used by institutions, costing lakhs of Rupees in license fee. FOSS solutions are available in many areas, with the commonly used licensing terms for distribution and modification, and in almost all cases, at zero cost.There is no dearth of FOSS software. FOSS systems and tools include - Linux and BSD Operating Systems, OpenOffice Writer for word processing, Open Office Math for mathematical equations, Moodle for a Learning Management System, audacity for audio editing, blender for 3-D animation/ rendering, gimp for photo editing, Scilab for Scientific Applications, Beowulf, Mosix for distributed computing, the list goes on and on.

Sunday, May 11, 2008

What is image compression?

Image compression is defined as minimizing the size in bytes of a graphics file without degrading the quality of the image to an unacceptable level. Image compression allows more images to be stored in a given amount of disk or memory space. It is therefore common to apply compression to bitmapped images, in order to reduce the amount of storage they require. Image compression also reduces the time required for images to be sent over the Internet or downloaded from Web pages.
The effectiveness of an algorithm in compressing a file is measured by the compression ratio it achieves, so an algorithm that managed to squeeze a 4 by 3 inch image down to 9kb would have achieved a compression ratio of just over 20. Compression algorithms are broadly divided into two categories:
Lossless Compression
Lossy Compression

Lossless Compression: Lossless compression algorithms reduce the amount of information by rearranging the data, representing it more efficiently and removing redundancy. However there is no loss of data. All the bits of data that were present in the original image are recovered when the image is decompressed. These algorithms have higher compression ratios but may introduce some distortion in the compressed image. Lossless Compression is preferred for text or spreadsheet files where loss of data could pose problems.
Lossless algorithms rearrange the data, representing it in a more efficient way and removing redundancy, but they do not discard any data. Although lossless compression algorithms can be applied to data of any sort, including images, but the degree of compression that can be achieved losslessly is limited. With lossless compression, every single bit of data that was originally in the file remains after the file is uncompressed. All of the information is completely restored. This is generally the technique of choice for text or spreadsheet files, where losing words or financial data could pose a problem.
The Graphics Interchange File (GIF) and the zip convention used in programs like WinZip are some image formats used on the Web that provide lossless compression.
GIF is a popular format for Web images. It uses the lossless Lempel Ziv Welch (LZW) algorithm. GIF format is suitable for compression of images with large areas of the same color, like company logos, line drawings like charts and icons. It is also good for animation files.The Portable Network Graphic (PNG) is another lossless format that supports a more efficient compression algorithm than GIF and has a better compression ratio. PNG is good for images with blended, transparent backgrounds.
Lossy Compression: Lossy compression algorithms achieve higher compression ratios by throwing away the relatively unimportant data that is not well perceived by the human eye. Lossy compression reduces a file by permanently eliminating certain information. When the file is uncompressed, only a part of the original information is still there. However, the loss is such that it will not be perceived by the human eye. Lossy compression is generally used for continuous color images, video and sound.
The compression ratios achievable through lossy compression are much better than those achieved with lossless compression algorithms.
The Joint Photographic Experts Group (JPEG) format commonly used for photographs and other complex still images on the Web uses a lossy compression algorithm. Using JPEG compression, the creator can decide how much loss to introduce and make a trade-off between file size and image quality.
The Moving Pictures Experts Group (MPEG) format for video files and the MPEG Layer 3 (MP3) format for audio files also use lossy compression algorithms to achieve compression.

What is a Web safe color palette

Color can be used effectively in Web design to enhance a Web site’s usability, including its visual presentation, structure, functionality and accessibility. The colors used in designing Web pages are known as Web colors.
Each color is represented in the computer by a number and the set of colors contained in an image is called its color palette. In the Red Green Blue (RGB) color model, colors can be specified as a RGB triplet. The colors RGB are known as additive primary colors because any color can be produced by combining red, blue and green light in varying proportions. A color is represented as a triplet of three numerical values, each of which specifies the amount of red, green and blue colors respectively that make up the given color. The numerical value is a number between 0 and 255, which can fit into a single byte, resulting in 24 bits for each color. For example, red would be given as (255, 0, 0). Dark emerald green which is made up of a 71% green component and a 21% blue component is represented as (0, 71, 29).
Having 24 bits for each color means that 16.7 million possible colors can be represented. However, not all images use that many colors.

Computers use values in the range 0 to 255, each of which will fit into a single byte. A simple expedient known as indexed color is often used to reduce the space required by images, so that they can be transmitted over networks more efficiently. Indexed color images may be displayed with the assistance of hardware: the color table stored in the image is loaded into an associative memory, known as a color lookup table (CLUT), so that colors can be looked up rapidly.
To reduce the space required to store each color, indexed colors are used. In this scheme, if the image has less than 256 colors, then a single byte is sufficient for representing each color. A color mapping table is used to translate from this smaller number to the actual 24-bit color value. Indexed color images may be displayed with the assistance of hardware: the color table stored in the image is loaded into an associative memory, known as a color lookup table (CLUT), so that colors can be looked up rapidly.

The set of colors contained in an image is called its color palette. If it is vital that the display of indexed color images is correct, it is better to restrict the choice of Web colors to the Web safe color palette of 216 colors which are common to the system palettes of the major operating systems. This set of colors is called the Web-safe palette. Programs, like Adobe Photoshop, used for preparing images for the Web will allow you to select the Web-safe palette when exporting your image to one of the Web file formats. If an image uses non safe colors, a system capable of handling only 256 colors, may resort to replacement of similar hue colors with one color resulting in posterization or dithering of the image.

How to conduct user tests on a Web site

There are many methods to conduct user testing. Some of these are:

1. Expert Evaluation – The expert tests the site and based on experience of design principles identifies potential usability problems.
2. Usability walk-through – Test users are observed by a facilitator who records the users’ experience, comments and problems faced. These help in identifying usability issues.
3. Heuristic Review – The usability of the site is assessed against a set of usability design principles and results are used to improve the usability.
4. Survey – A set of written questions is given to a large sample of target users who evaluate the site and give their feedback. Feedback acts as a source for further improvement or to rectify problems.
5. Monitoring software – These are programs that generate log files to tell which pages users are commonly interested in, which pages users are leaving from, links being followed to get to the site, what kind of browsers are being used. For example, if a large number of users are leaving from a purchase order page, then there is a problem and the site needs to be adjusted.

Testing is an iterative process and more often the site is evaluated, the better it will perform.

Web usability and accessibility

Web usability is the ease with which users of a Web site are able to navigate it, perform a desired action and find the information they are seeking.
One important feature of the usability of a Web site is its accessibility. A Web site should be accessible by everybody irrespective of any physical or mental limitations, browser, screen resolution or personal settings. The Web Accessibility Initiative (WAI) of the World Wide Web Consortium (W3C) has issued guidelines to ensure that disabled users have equal access to the Internet. Besides, many countries have legal requirements to make Web sites accessible. It becomes a designer’s responsibility to adhere to these guidelines.
Users with visual impairment, hearing impairment, repetitive strain injury, and age-related conditions can use assistive technologies to interact with computers. These technologies include screen readers and refreshable Braille displays for visually disabled users and screen magnifiers for people with poor eyesight. A Web site should include text descriptions of images; for any audio components and text description or images. A Web site page layout should be designed to accommodate changes in font size and so on.
Accessibility must also take into account users other than those with disabilities, For example, users with mobile Internet connectivity, users with low literacy level and users in noisy environments.

Friday, February 8, 2008

HIDDEN SMILIES IN YAHOO MESSENGER

Try these…

Green alien: =:)
Rose: @};-
Skull: 8-X
Man: <):)
Smily -throw up: :-&
Smily -shhhhh: :-$
Pig: :@)
Monkey: :()
Smily -pouting: [-(
Light bulb: *-:)
American flag: **==

GLOBAL WARMING – DO WE NEED TO CARE?

How many of us hear the words global warming, climate change, etc but choose to ignore them, thinking that they do not affect us? Is this burying your head in the sand kind of behaviour right? Most of the youngsters that I talk to do know what global warming is, they do know that it is causing climate changes...but most often the thinking is that – “why should I care, it’s not going to effect me in my life time!”. Well, here’s a wakeup call - It’s not one day that climate change will happen, it is happening right here and right now. Do not believe me, well then, take a look for yourself at these facts and decide for yourself.

Drowning Polar Bears
Polar Bears have been found drowned in the arctic as receding ice defeats their swimming skills. Summer ice has shrunk by more than a quarter in the past fifty years thus reducing the polar bears’ habitat. Some researchers studying the animals have even reported that the polar bears may be eating each other for a lack of their usual diet of seals.

Bears in Spain
Bears in Spain have stopped hibernating for the winter — and the cause could be climate change. Many of the 130 bears in Spain's northern mountains who usually sleep through the cold season are still active because milder weather means they have enough nuts and berries to survive.

Genetic Changes in flies
Global warming is leading to widespread genetic changes in some species of flies. A very small change in temperature, about ½ degrees centigrade, which seems very trivial, is not trivial to the flies.

Migrating Fishes and Insects
A warm water Atlantic triple fin fish has, for the first time been caught, off the coast of Britain, in another sign of species migrating North. Recent high temperatures have drawn a number of exotic moth species to the UK and butterfly experts predict further migration as part of a permanent trend brought on by global warming.

Barn Owls in the Arctic
Barn Owls, robins, hornets and other temperate species are arriving in the Arctic for the first time.

Snows of Mount Kilimanjaro
More than eighty percent of the snow on Mount Kilimanjaro has melted away.

This is just an indication of what's to come. Climate change is impacting on the natural world. “Hitherto the warming seemed to be happening fastest at the Poles — now we're getting examples of it happening further south."




In India, this July, 400 Open-Bill Storks built nests, paired, mated. And in August because of shortage of rainfall, all nests were abandoned. This is no freak incident. With the weather increasingly playing spoilsport in many parts of the country, the flora and fauna seem to be bearing the brunt. Last year mango trees in Andhra Pradesh flowered three months early because of rising heat. A few years ago, bees in the Himalayas were impacted by similar erratic flowering patterns, leading to a big drop in the honey supply. Locals have also reported a marked decline in the population of Swallows in Srinagar valley. In fact, rising temperatures in Delhi have even resulted in the near disappearance of some species of birds. Certain frog species are perhaps the most vulnerable to weather changes. With rainfall and temperature built into their lifecycle, erratic rainfall disrupts their breeding pattern.
Scientists have reason to believe that all of the above unnatural changes have been brought about as a direct consequence of, hold your breath.., GLOBAL WARMING. But how many of us know what it is, what causes it and what can we do to reduce the effect?
Well, Global Warming is a significant increase in the Earth’s climatic temperature over a relatively short period of time as a result of the activities of human beings. The greenhouse effect happens because of certain naturally occurring substances in the atmosphere. Sine the Industrial Revolution, humans have been pouring huge amount of these substances like Carbon Dioxide, Methane, Nitrous Oxide, etc. into the air. Power plants, Cattle and Cars are the major contributors of greenhouse gases such as carbon dioxide and methane.
As responsible citizens there are some simple things each of us can do to help decrease greenhouse gas emissions. Some of these include:
· Turn lights and other appliances off when you are not using them. Even though a light bulb does not generate greenhouse gas, the power plant that generates the electricity does (especially in India where we still rely on fossil fuels to generate electricity).
· Switch from incandescent light bulbs to fluorescent bulbs, which use less energy and last longer.
· Walk or ride to work if possible. Vehicles burn fossil fuel, so less use reduces carbon dioxide emissions.
· Recycle. Garbage that doesn’t get recycled ends up in a landfill generating methane. Also, recycled goods also require less energy to produce than products made from scratch.
· Plant trees and other plants where you can as they take carbon dioxide out of the air and release oxygen.
· Do not burn garbage. This releases carbon dioxide and hydrocarbons into the atmosphere.

Lets not forget that – “We have not inherited the earth from our parents; we have borrowed it from our children”.
Think of your planet as a person you love, Remember, the earth is a living being. Treat it as one and bring about a greener, healthier world for yourself and to secure your future generations.

Monday, February 4, 2008

Ontologies in the Semantic Web

In order for information from different sources to be integrated, there needs to be a shared understanding of the relevant domain. Knowledge representation formalisms provide structures for organizing this knowledge, but provide no mechanisms for sharing it.
An ontology defines a common vocabulary for researchers who need to share information in a domain. It includes machine-interpretable definitions of basic concepts in the domain and relations among them. An ontology is a formal explicit description of concepts in a domain of discourse (classes (sometimes called concepts)), properties of each concept describing various features and attributes of the concept (slots (sometimes called roles or properties)), and restrictions on slots (facets (sometimes called role restrictions)). An ontology together with a set of individual instances of classes constitutes a knowledge base.

In practical terms, developing an ontology includes:
- defining classes in the ontology,
- arranging the classes in a taxonomic (subclass–superclass) hierarchy,
- defining slots and describing allowed values for these slots,
- filling in the values for slots for instances.
According to Gruber’s definition an ontology is “a formal specification of a conceptualization”. A conceptualisation being a simplified, abstract way of perceiving a segment of the world (a piece of
reality), for which we agree to recognize the existence of a set of objects and their interrelations, as well as the terms we use to refer to them and their agreed meanings and properties.
Some of the reasons to develop an ontology are:
· To share common understanding of the structure of information among software agents
· To enable reuse of domain knowledge
· To make domain assumptions explicit
· To separate domain knowledge from the operational knowledge
· To analyze domain knowledge

What is the Semantic Web?

The World Wide Web has emerged as an important part of our everyday lives in the last decade. People use the web to share information; companies use it to advertise their products; government organizations use it to make everyday submission of taxes and bill easier; people use e-groups to facilitate information exchange within their community and educational institutions use the web to deliver teaching material and online training.
This has resulted in widespread popularity of the web and as a result, the number of pages available in the global information space has grown exponentially. This makes it extremely difficult for users to locate and access information that they require. When one needs to search the Web for some specific information, it results in a large number of hits in the form of search results that have to be scanned and filtered manually to get at the desired information. The number of matches is so large that the specific information required may even be missed.
Since the meaning, i.e. - the semantics of the information is not understood by machines, it is difficult for machines to extract information of relevance for human use from weakly structured HTML documents. Besides this, data can be shared between applications only via cut and paste because the way in which data is stored in web pages, the semantics of the data is lost; the web pages do not carry any semantic information along with the data.
Therefore, in recent years, the awareness to these problems has resulted in a need for information in the web to be structured in such a way that the semantics of the data be accessible to machines. The information must be semantically annotated so that software agents and desktop applications can directly access and process it. In other words, the current web needs to be augmented so that the semantics of the Web pages is machine-process able.
Tim Berners-Lee the originator of the Web sees the Semantic Web as an extension of the current web in which information is given well defined meaning, better enabling computers and people to work in cooperation. The meaning of the information on a Web page is formalized using semantic meta-data that is based on concepts defined in ontologies.
The Semantic Web is the future of the World Wide Web. It is a cooperative effort to build an architecture for the World Wide Web by formatting the content in terms of metadata so that it can be understood by a software agent. The web as it stands now contains vast amounts of information, all of which has been structured for human consumption. The idea behind the semantic web is to provide structure to this information so that it can be read and interpreted by a computer. An agent can visit a page which has been extended with metadata and understand the kind of data contained in that page and then use it to make inferences or decisions about what to do with that data. It enables the agent to respond to unforeseen situations.
Users often want to use the Web to do more than just locate a document, they want to perform some task. For example, a user might want to find the best price on a desktop computer, plan and book a family vacation to a distant city, or make reservations at a moderately-priced Indian restaurant within five kilometers of the movie they plan to see that evening. Completing these tasks often involves visiting a series of pages, integrating their content and reasoning about them in some way. This is far beyond the capabilities of contemporary directories and search engines.
The main obstacle is the fact that the Web was not designed to be processed by machines. Although, web pages include special information that tells a computer how to display a particular piece of text or where to go when a link is clicked, they do not provide any information that helps the machine to determine what the text means. Thus, to process a web page intelligently, a computer must understand the text, but natural language understanding is known to be an extremely difficult and unsolved problem. Some researchers and web developers have proposed that we augment the Web with languages that make the meaning of web pages explicit. Tim Berners-Lee, inventor of the Web, has coined the term Semantic Web to describe this approach. The Semantic Web is not a separate Web but an extension of the current one, in which information is given well-defined meaning, better enabling computers and people to work in cooperation.

What are the advantages of Multi Agent Systems?

A MAS has several advantages as opposed to a single agent system. Some of them are elaborated upon below:

  • A MAS is decentralized, that is, there no one single point of control. The agents constituting the MAS perform their tasks independently but are able to achieve goals because they communicate and collaborate amongst themselves. Being a distributed system, all problems related to resource limitation, performance bottlenecks, critical failures are avoided.
  • If the sources of information are geographically distributed, a MAS is able to retrieve, selectively extract and globally coordinate information from distributed sources.
  • The system performance is enhanced because a MAS is more reliable, maintainable, flexible, reusable, robust and extensible as compared to a single agent system.

What is a Multi Agent System (MAS)?

A multi-agent system (MAS) is a loosely coupled network of software agents that interact to solve problems that are beyond the individual capacities or knowledge of each problem solver.
Multi-Agent systems are open information systems that contain multiple autonomous agents or agents acting on behalf of autonomous users or entities. Complex problems require the services of multiple agents with diverse capabilities and needs e.g., the mediator based approach to information systems.
A Multi-Agent System (MAS) is a system composed of a population of autonomous agents, which cooperate with each other to reach common objectives, while simultaneously each agent pursues Individual objectives.
A Multi-Agent system is able to solve tasks; the agents must communicate amongst themselves and coordinate their activities. If a MAS lacks communication and coordination, the end result is going to be chaos.
There are several reasons why multiple agents need to be coordinated :
- Prevent chaos. No agent possesses a global view of the entire agency to which it belongs, as this is simply not feasible in any community of reasonable complexity. Consequently, agents have only local views, goals and knowledge that may interfere with rather than support other agents' actions. Coordination is vital to prevent chaos during conflicts.
- Meet global constraints. Agents performing network management may have to respond to certain failures within seconds and others within hours. Coordinating agents; Behavior is therefore essential to meet such a goal.
- Agents in MAS possess different capabilities and expertise. Therefore, agents need to be coordinated in just the same way that different medical specialists, including anesthetists, surgeons, ambulance personnel, nurses, etc., need to coordinate their capabilities to treat a patient.

The characteristics of MAS are that
1. Each agent has incomplete information or capabilities for solving the problem and, thus, has a limited viewpoint
2. There is no system global control
3. Data are decentralized
4. Computation is asynchronous

What Is an Agent?

An Agent is a software entity or a logical model that acts autonomously, without any user intervention. It has the ability to react to its environment and make decisions. Agents are not activated per se but they activate themselves as and when the need arises. Agents carry further the concept behind Object Oriented Development. Objects are defined by their data and their methods. Agents are used in Component Oriented development and are defined by their behavior.
An Agent has the following characteristics:
  • Purposeful : is goal driven and pro active
  • Reactive : as opposed to deliberative; performs tasks in response to actions
  • Autonomous : does not need human intervention for decision making or achievement of goals
  • Communication Ability : capability of coordination with other agents in the neighborhood to work towards solution of a problem
  • Collaborative : works collectively to achieve a goal; as in Multi-agent systems
  • Adaptability : perceive the context in which they operate and react to it appropriately
  • Learning Ability: ability to learn from past experiences and make intelligent decisions based on that
  • Evolvable: ability to alter behavior in response to environment

Various agents in literature have been developed to perform the following tasks:
· Personal information assistants
· Data Mining
· Mail Filtering
· Travel Planning
· Interface provider
· Meeting Scheduler
· Information Broker


Wednesday, January 16, 2008

What is a cluster?

WHAT IS A CLUSTER?
A cluster is a group of two or more loosely coupled computers that cooperate in such a way that they behave like a single computer. The idea is to take advantage of the high performance processing power of personal computers. By many measures including, computational speed, size of main memory, available disk space and bandwidth, the PC of today is more powerful than the supercomputers of the past. By harnessing the power of multiple such low cost processing elements, we can create a powerful supercomputer.
A cluster is made up of nodes, each with one or more processors, shared memory and peripheral devices (such as disks) connected by a network that allows data to move between the nodes. A cluster is a pretty powerful setup even if old computers are used.
Clusters can be
- DIY (assembled by the user out of COTs –commercial off the shelf components)
- Prepackaged (assembled by a vendor)

WHY IS A CLUSTER USED?
A cluster is can be used for
1. Parallel Processing – to make applications run faster by running parallel processes; such clusters are called High Performance Clusters.
Applications that require greater performance than that available through a single processor can utilize the power of these clusters. The reasons that an application desires higher computational power include
– Real time constraints: computation must be finished within a certain period of time (e.g. – weather forecasting)
- Need for a higher throughput: when a single processor would require days or even years to complete a calculation. e.g. – Google uses over 15,000 commodity PCs with fault tolerant software to provide a high performance web search service.
- Larger Memory requirements – application needs to handle huge amounts of data.

2. Fault Tolerance – such clusters operate by having redundant nodes, which can continue to provide service when system components fail; also called High-Availability Clusters. The failure of a single component would only reduce the cluster’s power. If the primary node in a high-availability cluster fails, it is replaced by a secondary node that has been waiting for that moment. That secondary node is usually a mirror image of the primary node, so that when it does replace the primary, it can completely take over its identity and thus keep the system environment consistent from the user's point of view. Such clusters are good choices for environments that require guarantees of high processing power, such as Web servers. e.g.- Linux HA project

3. Load Balancing – A front end load balancer distributes workload to back end platforms. Load-balancing clusters provide a more practical system for business needs. As the name implies, this system entails sharing the processing load as evenly as possible across a cluster of computers. The load could be in the form of an application processing load or a network traffic load that needs to be balanced. Such a system is perfectly suited for large numbers of users running the same set of applications. E.g.- Linux Virtual Server project


WHAT ARE BEOWULF CLUSTERS?

The best-known type of Linux-based cluster is the Beowulf cluster. A Beowulf cluster consists of multiple machines on a local area network that pool resources to solve computing tasks. In order for this cooperation to take place, special cluster-enabled software applications must be written using clustering libraries. The most popular clustering libraries are Parallel Virtual Machine (PVM) and Message Passing Interface (MPI), and they are both very mature and work very well. By using PVM or MPI, programmers can create cluster-enabled applications that are able to take advantage of an entire cluster's computing resources, rather than being bound to a single machine.

WHAT ARE MOSIX CLUSTERS?
This kind of clustering technology is easy to set up and can provide an immediate benefit. MOSIX works in a fundamentally different way from PVM or MPI, extending the kernel so that any standard Linux process can take advantage of a cluster's resources. By using special adaptive load-balancing techniques, processes running on one node in the cluster can be transparently "migrated" to another node where they may execute faster. Because MOSIX is transparent, the process that's migrated doesn't even "know" (or need to know) that it is running on a remote system. As far as that remote process and other processes running on the original node (called the "home node") are concerned, the process is running locally.
Because MOSIX is completely transparent, no special programming is required to take advantage of MOSIX's load-balancing technology. In fact, a default MOSIX installation will automatically migrate processes to the "best" node without any user intervention. For example, if an application is designed to fork() many child processes which perform work, then MOSIX will be able to migrate each one these processes as needed. So, if you wanted to compress 13 digital audio tracks simultaneously (as separate processes), then MOSIX will allow you to immediately benefit from the power of your cluster. If, however, you were to run the 13 encoding processes linearly (one after another), then you wouldn't see any speedup at all.

WHAT IS OSCAR?

Open Source Cluster Application Resource software package allows installation of a HPC cluster and is easier to install than Beowulf.

Friday, January 11, 2008

FOSS - Benefits for users

This philosophy of FOSS results in tremendous benefits to users. These include:
• Reduced Cost - The cost of FOSS software remains fixed even when the number of users increases. For example, if you use GNU/Linux as your operating system, in your office, the same CD can be duplicated and distributed to all users. However, if you opt for a “licensed” Microsoft Operating System, it would have to be purchased for each user’s desktop.
• Reliability/ Stability - Free software is the combined result of the experience and the intelligence of all the participants. Its reliability increases as time passes, with all the corrections which are made.
• Portability - This quality is not intrinsic to free software, but is very often seen in free software. If software meets success, it will necessarily be adapted to other environments than those initially considered.
• Performance - Resulting from a lot of examinations, the use of algorithms coming from advanced research works, as well as tested by various usages, free software have good performance characteristics by nature.
• Interoperability - The support in Linux, for example, of a lot of network protocols, file system formats, and even binary compatibility modes assures a good interoperability.
• Reactivity - Rapid solution of corrections to a given problem.
• Security – Transparency of source code results in faster identification and fixing of bugs and security loopholes.

FOSS is relevant and important in education institutions because access to the source code of the programs allows students to explore internals of complex systems and hence acquire a deeper understanding of what they study. For example, students learn about operating system concepts by checking out the code which implements similar functionalities in Linux. Today, most educational programs require access to a lot of computing software resources, e.g., Matlab, circuit simulators, drawing packages, etc. Mostly proprietary solutions are used by institutions, costing lakhs of Rupees in license fee. FOSS solutions are available in many areas, with the commonly used licensing terms for distribution and modification, and in almost all cases, at zero cost.

There is no dearth of FOSS software. FOSS systems and tools include - Linux and BSD Operating Systems, OpenOffice Writer for word processing, Open Office Math for mathematical equations, Moodle for a Learning Management System, audacity for audio editing, blender for 3-D animation/ rendering, gimp for photo editing, Scilab for Scientific Applications, Beowulf, Mosix for distributed computing, the list goes on and on.

“To FLOSS, or not to FLOSS - that is the question”

Hey, don’t get me wrong. I am not about to launch into an essay on dental hygiene. Instead, let’s get introduced to “Free/ Libre Open Source Software” – also abbreviated as FLOSS. In the computer world, FLOSS or FOSS (Free Open Source Software) is software whose license give users the freedom to run the program for any purpose, to study and modify the source code, and to redistribute copies of either the original or modified program– all legally, without paying any royalty to previous developers!!
Source Code is the human readable language in which a computer program is written. The packaged and installed source code on your computer exists as a “binary” or an “executable” form. Conventional, proprietary software just gives you the binary and keeps the source code a secret, lest anybody else learn something from it! This means that the software comes to you like a black box. Its internals – the nuts and bolts that make it are hidden from users. It’s as if you are sold a car that you can drive, but one where you can’t look under the hood. With FOSS software, the source code is distributed along with the binary. Not only are you encouraged to look at the engine that runs the software, you are free to customize it according to your needs. This is what is meant by “open source”.
The free part of FOSS does not necessarily mean “free of charge”. FOSS applications are free in the sense that they do not charge a licensing fee for usage. Most software is usually free to download or available at nominal costs, much cheaper than similar proprietary software.
So why FOSS? What are the benefits of FOSS? Innovations are often created by combining pre-existing components in novel ways, which generally requires that users be able to modify those components. FOSS software gives innovators this freedom to experiment without spending time on reinventing the wheel from scratch. FOSS software gives you freedom – freedom to run it as you wish, freedom to make changes to it and freedom to help your community, so that others can benefit from your work.
The FOSS movement is spearheaded by Richard Stallman and the Free Software Foundation (FSF). Stallman’s ideas about FOSS took birth when the MIT Artificial Intelligence Lab (AI Lab) where he was working was not able to customize a Xerox printer to suit his needs because Xerox refused to share their precious source code with him. Here’s how he gives an interesting analogy to put forth his thoughts about proprietary work.
Imagine what it would be like if recipes were hoarded in the same fashion as software. You might say, “How do I change this recipe to take out the salt?” and the great chef would respond, “How dare you insult my recipe, the child of my brain and my palate, by trying to tamper with it? You don't have the judgment to change my recipe and make it work right!”
“But my doctor says I'm not supposed to eat salt! What can I do? Will you take out the salt for me?”
“I would be glad to do that; my fee is only $50,000.” Since the owner has a monopoly on changes, the fee tends to be large. “However, right now I don't have time. I am busy with a commission to design a new recipe for ship's biscuit for the Navy Department. I might get around to you in about two years.”
His experience with Xerox prompted Richard Stallman to propose the following for software:
• Liberty - every user should be free to copy, diffuse, modify a program, either to share it with others, or to adapt it to his own needs.
• Equality - every person should have the same rights on the software.
• Fraternity - the whole computing community should be encouraged to cooperate and thus to produce software that is more reliable and useful to all.
• Source code access – that should allow the understanding, adaptation, correction, distribution, improvement of the software.