OpenForge: Indian Government’s Platform for Collaborative Software Development

Author: Arvind Padmanabhan

An introduction and an opinion


Governments are typically not recognized as enablers of software creation. If at all e-governance is embraced, it’s through tenders for which private entities will bid, deliver and maintain. Government departments are also notorious for being isolated from one another, which means that there’s no possibility of sharing information, reusing code or coordinating actions. Systems operate in silos and often use different technologies. There’s lack of standardization or guidelines for best practices. To solve some of these, the government has released OpenForge, a platform for developers to collaborate on open source software. The platform received coverage on news websites this week but it has been going through internal testing since last year.

Open source means that source code is open. Anyone can view the source code, file bug reports, improve the code and redistribute it. Of course, there are variations of this depending on the exact license that’s used by the development team. For the moment, OpenForge does not seem to provide much information about what sort of license should be used.

The government lists three national policies:

  1. Source Open Policy
    For collaborative software development and this is what OpenForge enables.
  2. Open Source Policy
    For promoting open source software in government agencies and departments.
  3. Open API Policy
    API-oriented architecture so that applications can exchange data and inter-operate.

Then there are two models of collaboration on OpenForge:

  1. Government to Community (G2C)
    Open to all.
  2. Government to Government (G2G)
    Open to only government agencies and approved members.

We expect software enthusiasts to start contributing in the G2C model. The real question is why developers would use OpenForge when they can put their code on GitHub for a worldwide readership. One possible answer is that GitHub is a generic platform while OpenForge is meant for software and its components that are suited for e-governance applications. Of course, many software components are agnostic of applications and their developers might choose GitHub instead. OpenForge claims, “Any project (applications, frameworks, libraries, SDKs, APIs, datasets, components, plugins etc) which deals with governance or civic areas is welcome. Applications without any apparent governance overlap are not allowed on the platform.”

We look forward to the day when government-controlled data is exposed via well-defined APIs that anyone can use. Useful insights, predictive analysis and creative visualizations on this data are just some things that people can do. The use of APIs will be a game changer: no more downloads of PDFs, CSVs and JSONs that are hard to discover and consume. The flip side of the argument is that governments have not been great, so far at least, at protecting private or sensitive data. If they do expose APIs, they should be secure and allow only non-sensitive and anonymized data for public access.

The licensing aspect is not quite clear. The policy document on collaboration states that, “the Government receives the source code and unlimited rights of custom-built application development.” Yes, the government is allowed to study the source code and make modifications for its own purposes. But if the license is GPL V3.0 or equivalent, government must release their changes back to the upstream repository.

This brings us to a related question. Does the government have a software team to customize and integrate software into systems that are not visible to the public? Will this team be participating in the collaborative development process? In any case, there has to be a team to oversee the operations of OpenForge. Without some housekeeping, the platform is likely to be littered with projects consisting of bad code, poor documentation and low collaboration. Government should arbitrate, though not enforce, what projects are most useful to its operations. For developers, there has to be incentives, without which we may not see much traction.

I logged into the platform yesterday. The site is better designed that most other government websites, though it’s not responsive. When I created my account I received “DB error” in the top-left corner. Account activation email came about 30 minutes later. Once activated, I was able to customize my avatar image. Although I used a fancy username, I discovered that my real name is publicly visible. As soon as I log in, a banner message shows when I last logged in; but this is set to the current session, which makes it rather useless. There are about 20 projects that I could see but none of them had good documentation. Most repositories had no commits, no files, no wiki pages or mailing list set up. The platform allows for both SVN and Git, although I think Git would have been enough.

But these are early days. If OpenForge succeeds, we expect the government to have the right tools to function more effectively and efficiently. We hope that this will be in the interest of the common man.

Author: Arvind Padmanabhan

Arvind Padmanabhan

Arvind Padmanabhan graduated from the National University of Singapore with a master’s degree in electrical engineering. With more than fifteen years of experience, he has worked extensively on various wireless technologies including DECT, WCDMA, HSPA, WiMAX and LTE. He is passionate about tech blogging, training and supporting early stage Indian start-ups. He is a founder member of two non-profit community platforms: IEDF and Devopedia. In 2013, he published a book on the history of digital technology:

Linked In

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s