The open source campaign has been a great and very successful technological movement. Its interesting to see the words technology and movement together, because they usually belong to completely different spheres of human activity. Because of the efforts of pioneers like Richard Stallman and Linus Torvalds who worked against the odds and firmly established legal, technological and, most importantly, the cultural foundations of the open source movement, we are fortunate to enjoy the fruits of the hard work of thousands of hackers, free of cost. The Linux operating system is a fine testament to what can be achieved by volunteers working in a spirit of cooperation and sharing knowledge freely. Free and open source software (FOSS) is now firmly established in the sense that it is no longer battling for survival, but for improvement, and there are loyal communities of hackers and users around the world who keep the FOSS world running.
Practising openness beyond software
If we look closely, this is not just a technological phenomenon, but something much more than that. It is very much like a social movement involving the fight for freedom, justice and equality. It is also a cultural movement that practices and encourages questioning, creativity and volunteer participation. Because of this tremendous success, the FOSS movement started having a significant impact on other spheres. The first and obvious impact was on software businesses, with many companies changing their business models in which production was no longer in the hands of just a few in the company. Because electronics and computer science are very closely related, there has also been an open hardware movement, with many successful projects like Arduino. Other initiatives include making some government data public under the open data policy by many governments around the world, so that researchers, social activists, the public and software developers can use the data in their own way. We even have an Open Source Drug Discovery project. So where else can we apply this idea of open source? Can we solve the urban transportation problem, for example?
The urban transportation problem
The urban transportation problem is something that almost every one of us experiences. Particularly in cities like Bengaluru, just visiting three or four places in different parts of the city can consume a whole day. Apart from the waste of time for an individual, imagine the amount of productive time lost for so many in the city. Its immaterial whether you own a private vehicle or depend on the public transportation productive working hours are unnecessarily lost.
Many government and private players are trying to solve the problem in their own way, and often, these efforts are not coordinated. For example, we may have a metro but many people won’t use it for the simple reason that it doesn’t provide an end-to-end solution. That is, if it takes more than a few minutes to walk to the metro station from your house, you may have to depend on other transportation methods and this complicates the problem. Though city buses are very convenient in terms of an end-to-end solution, they consume too much time.
And then we have the problem of air pollution. Electric vehicles can solve this problem, but we have two critical problemsthe limited range of the vehicle and the time needed for a commute.
In such a context, can we apply or use ideas from the FOSS movement to solve urban transportation problems? What would be the key activities? What contribution can we expect from the volunteers? How can the open source movement actually help in such a traditional industry involving automobiles and transportation?
Project Vidyut: A platform for electric vehicles
Project Vidyut is a not-for-profit initiative that aims to solve the transportation problem. It is greatly inspired by the ideals of the FOSS movement. Its focus is on electric vehicles. And there are two specific approaches:
1. Designing and building electric vehicles and improving key parameters like range and charge duration.
2. Designing intelligent systems whereby we can use existing electric vehicle technology.
In the first approach, we’ll have to design electric vehicles (whether two-wheeled or four-wheeled), do all the engineering analysis, and coordinate the efforts of different research/engineering teams to solve critical battery problems.
In the second approach, we will not try to improve the design of vehicles, but attempt to design a system that uses vehicles with existing technology. Basically, the idea is to build an intelligent system that uses a combination of different modes of transportation, according to the situation, availability and cost. This will not be another system designed in isolation, but more like stitching things together in real-time.
The SharedVehicles Project
The idea behind SharedVehicles is to build a system thats very dynamic, can respond to changes in demand and is cost effective for every one; it has to be a shared system. Of course, owned vehicles will still be a part of the system, but they cant take you far if weve to make the system fast and responsive beyond a point. Consider the following hypothetical situation.
Lets suppose you’ve got to go from A to D, with the route being A-B-C-D. Imagine that there is a mass transportation system or metro available from B-to-C. If you’re at A, to go to B, you can take a shared electric bike, which will be available at A. Then you drop the bike at B, take the metro to C, and you take another electric bike parked at C, to reach D, and leave it there for someone else to pick up.
Of course, in reality, things will be much more complicated than this, and here, I’m simply suggesting one possibility.
If we’ve to implement such a system, one problem we would face is understanding the requirements of users and the corresponding behaviour of the system. As the system becomes too complex, we may have to employ some powerful concepts from the world of simulation. In such a situation, we can employ agent based modelling and simulation. So what exactly is agent based modelling? How is it useful for urban transportation? And how is it related to the open source movement?
Agent based modelling
All of us have attended physics classes in high school (and for many, in college, too), where the physics teacher started the discussion saying, Consider a body of mass…. For a physicist, the object of study was a body. Similarly, when an artificial intelligence researcher is trying to simulate the behaviour of a person or an intelligent being, he will call either of them an agent. But note that the agent need not be as intelligent as a humanity can be very elementary in terms of behaviour or level of intelligence. Usually, agents have a set of rules governing them, and they behave according to those rules to achieve some objective. Typically, we study the behaviour of an agent in relation to its surroundings or an environment. Sometimes, the agent will be alone, while most of the time agents interact with other agents, and such a setting is called multi-agent simulation.
There are many frameworks available to implement such agent based modelling. Many of them are written in Java. For example: Mason – https://cs.gmu.edu/~eclab/projects/mason/, Jade: http://jade.tilab.com/, etc.
Mason is easy to get started with, to understand, and of course, to manipulate. It is a single-process, discrete event simulation library according to official documentation. It also comes with a visualisation library. Simulation can be run without visualisation, but the latter often helps us to understand simulation better, and can be intelligently adopted to a particular simulation.
Examples of simulation provided in the Mason framework demonstrate the capability of agent based modelling. In one simulation called Ant foraging, the behaviour of ants is modelled. Each ant is an agent that acts on its own; however, it is governed by some rules. Ants discover food, and establish a food trail between the source and the nest. In another simulation called Virus Infection we can see the spread of a virus. There are infected individuals or agents, and uninfected individuals or agents, and the simulation studies how the virus spreads. There is also the famous example John Conways Game of Life.
It’s easy to run Mason. Just run the command java -jar mason.19.jar once youve downloaded Mason from the site mentioned above. Mason has very good documentation in terms of a manual – https://cs.gmu.edu/~eclab/projects/mason/manual.pdf. The best way to learn Mason is through the examples and tutorials that are provided.
Simulation and the SharedVehicles Project
Now that weve understood the concept of agent based modelling and its possible applications, we can look at how to use it in the SharedVehicles Project. Here passengers, vehicles, buses, the metro, taxis and private vehicles are all movable. There can be a movable interface or a class. Then we can implement/extend it to give behaviours specific to buses, passengers, metros, etc. We can then go one crucial step further by adding parameters like costs, charge for the electric battery, locations of charging stations, etc, and try to obtain the cost for each person and the profit/loss for different operators. When we reach a point at which we can show that for a specific arrangement, the cost of transportation is much less than what passengers are paying today, and where profits for the operators can be substantial, then we would have achieved a breakthrough. That would create an incentive for the government/entrepreneurs to implement such a system.
To put it in a different way anybody can contribute ideas in terms of code. Just like any other FOSS project, this will be available to everyone. When the simulation suggests that there can be a better, faster and more efficient system that can be implemented, which can also become profitable, that system will get implemented by a willing entrepreneur.
The SharedVehicles project is available at https://github.com/project-vidyut/, where you can also find links to the resources needed to implement the project. You can visit Project Vidyut site: http://www.projectvidyut.org/ This is a new experiment in which were trying to solve a burning real-world problem with ideas and experience from the FOSS movement. I request you to contribute in terms of code, ideas, and constructive criticism.