layout: article title: “Free/open source programming for the JISC”

date: 2004-05-01 author: Stuart Yeates and Sebastian Rahtz permalink: jiscoss.html firstpub: 2004-05-01 reviewed: status: live —Free/open source programming for the JISCStuart YeatesSebastian Rahtz JISC Open Source Software Advisory ServiceMay 2004

Our programme today

Let’s talk about:

The real programme for the afternoon

We want to:

Depending on your viewpoint

Open source is

What was that about OSS Watch?

We are here to advise UK HE/FE about issues around open source software:

What OSS Watch does

What OSS Watch does notdo

Conference: Support and training

A one day conference to be held on June 3rd in London, to look at institutional commitment to open source software in the back office

Study: Interoperability and migration

A workshop to be held in September, with the aim of writing a road map for deployment

Conference: the OSS Watch institutional briefing

A conference to be held in December at which we plan to discuss institutional IT strategies and how they may be impacted by government and international developments.

Questions we might answer today

What is Free/Open Source Software?

Software for which:

Virtues of free and open source software?

Open Source — The Bad News

Open Source — The Good News

Clearing up misunderstandings

An open source guidance framework

Some of the areas in which JISC needs to provide guidance:

1. IPR Ownership

Copyright ownership of software documentation, manuals, user interface and source code must be recorded, may be vested with a JISC-appointed body and should be released under an OSI-compliant open source licence. It must be licenced and publicly available at zero financial cost throughout UK higher and further education.

The ownership of code developed in joint projects must be established before work begins.

Software is property. In law, property belongs to your employer unless your contract explicitly says not. The documentation for your software is part of its design, and is property too.

Why divest yourself of IPR?

There are three good reasons for giving copyright to a neutral third party:

2. Licensing

The three basic license models:
GPL
If you extend a GPL program, or create a composite with it, you cannot release your work except under the GPL and must release offer the source code to the full program to everyone you give the program to
LGPL
If you extend an LGPL program, as with GPL. If you create composites with LGPL code you must offer the source code of the LGPL portion, but may retain the source code to your portions
BSD
You must continue to display the copyright notice on any derived work

If a system is built of two parts communicating via SOAP, they’re considered separate programs.

Some software history

In the beginning (well, 30 years ago):

…and then we had the PC revolution…

Well, almost

Red herrings

We had a curious interregnum where:

Typical licensing issues

The GNU license question

50-80% of OSS uses the GNU General Public License.

The GPL does not require you to release your modified version.

GPL urban myths exploded

Does the GPL limit you?

It limits you if plan to make money selling modified versions of GPL programs, or incorporate them into your own.

But many people make a living from GPLed software.

Companies mixing OSS with business

What about dual licensing?

Some companies offer their software under more than one license. MySQL is a good example. They are a reasonable-sized company with three main sources of revenue:

License conclusion

Use a simple, well-understood license. Unless you have a free lawyer, don’t try to write your own. We believe that the LGPL license is the best for toolkits, primarily because it involves an ongoing relationship between the original authors and the subsequent developer community.

The BSD-like licenses are more one-sided, allowing for unlimited use by everyone, but less protection for the community.

Do not try to limit your license to the UK educational community. You will cut yourself off from distributions and developers. You will not be open source.

3. Trademarks

The JISC will make no claim to trademarks. Projects are encouraged to trademark their brands to build their reputations, and provide a route to exploitation of their knowledge.

4. Dependencies

Projects must maintain an IPR register, listing all contributors to their software, who owns the copyright on contributions (differs between contractors and employees).

Projects must state what build-time and run-time dependencies software has, dependencies include the operating systems, compilers, development enviroments, web servers and similar software needed to build and or run the software. Projects should state which specific versions of the dependencies are required, the range tested against and the licences applicable to these dependencies.

5. Storage

All electronic software outputs must be archived in a repository with a written preservation stragegy. Source code should be stored in a version control system; where a version control system is not used the institution will provide an alternative method of performing due diligence on the source code.

6. Quality assurance

Projects which develop software are must have appropiate testing systems in place. Automated testing should be used. Implemented standards mustbe tested against. Peer evaluation and demonstrator contexts are necessary parts of testing.

7. Version Control

Version control must be used. Projects with more than 3 contributors or 2 institutions must use a version control system that identifies who made each change. The full change history must be contained and it must be archived as above.

8. Sustainability and communities

Projects must state whether they foresee the project continuing beyond the timespan of the funding and if so whom they see participating in the project. Projects are should engage with end users and other parties to encourage and build self-sustaining communities.

A Sense of Community

The cathedral and the bazaar

F/OSS projects tend to be classified into two extreme camps:

cf http://www.oreilly.com/catalog/cathbazpaper/(Eric Raymond’s The Cathedral and the Bazaar)

Example 1: Apache

A charitable consortium which

Example 2: Exim

An individual employed at Cambridge to do good stuff. He

Example 3: MySQL

The classic dual-licensing system. The MySQL company

Example 4: Bodington

The cottage industry example

Example 5: OpenOffice

The classic big brother project

Example 6: Text Encoding Initiative

OSS is not just about programming. The TEI defines guidelines for marking up text.

Example 7: Urchin

The JISC-funded open source project to do RSS aggregation

Example 8: TeX

The story from hell. A very well-respected academic writes a typesetting system. You can do what you like with it, but if you call it TeX it must always produce the same result.

9. Documentation

Projects which use IRC, mailing lists, forums or similar media for coordinating software development, reporting bugs or answering user queries must archive these and should store them in a format readibly accessible to search engines. Documentation must be releaesed in a form free from (DRM) Digital Rights Management restrictions.

10. Open Standards

Projects should use open standards. Projects in fields with widely used or ubiquitous open standards must implement those standards as they apply to the project unless an explicit argument is made in a project bid as to why this is unsuitable.

Open standards and documentation

Open standards are not just for software interchange languages like SOAP or WSRP. They are also for

11. Software Development

Projects should release incremental milestone releases of working but incomplete software. Projects must demonstrate their software working with third party software, data, documents, processes and/or environments, as appropriate. Projects should demonstrate third party software working with their software, data, documents, processes and/or environments, as appropriate. During demonstrations projects must make clear which components have been solely developed by the project, which the project has contributed to and are entirely third party. Demonstrations must be to independent peers, should be accessible on the web and may be freely downloadable or avaliable as live CDs.

Release early, release often, show people.

All open source programs are equal, but some are more open then others

There is no correlation between:

F/OSS groupstyle creation characteristics (1)

Free and open source software tends to have the following positive development characteristics:

F/OSS groupstyle creation characteristics (2)

… and the following negative characteristics:

F/OSS groupstyle creation characteristics (3)

But the following do not necessarily apply:

Software development vocabulary

Sofware methodologies describe

Traditional software development

Relies on sequential phases of development; it makes several dangerous assumptions:

Iterative and incremental development methods

Incremental development:

Lighter methodologies

Over the last 3-4 years, software theorists have tried to deal with issues such as:

A methodology: Extreme Programming

Extreme: the details

  1. The Planning Game: Business and development cooperate to produce the maximum business value as rapidly as possible. The planning game happens at various scales, but the basic rules are always the same:

Extreme: the details (2)

  1. Small Releases: Start with the smallest useful feature set. Release early and often, adding a few features each time.

  2. System Metaphor: Each project has an organizing metaphor, which provides an easy to remember naming convention.

  3. Simple Design: Always use the simplest possible design that gets the job done. The requirements will change tomorrow, so only do what’s needed to meet today’s requirements.

Extreme: the details (3)

  1. Continuous Testing: Before programmers add a feature, they write a test for it. When the suite runs, the job is done. Tests in XP come in two basic flavors.
  1. Refactoring: Refactor out any duplicate code generated in a coding session. You can do this with confidence that you didn’t break anything because you have the tests.

Extreme: the details (4)

  1. Pair Programming: All production code is written by two programmers sitting at one machine. Essentially, all code is reviewed as it is written.

  2. Collective Code Ownership: No single person owns a module. Any developer is expect to be able to work on any part of the codebase at any time.

  3. Continuous Integration: All changes are integrated into the codebase at least daily. The tests have to run 100% both before and after integration.

  4. 40-Hour Work Week: Programmers go home on time. In crunch mode, up to one week of overtime is allowed. But multiple consecutive weeks of overtime are treated as a sign that something is very wrong with the process.

Extreme: the details (5)

  1. On-site Customer: Development team has continuous access to a real live customer, that is, someone who will actually be using the system. For commercial software with lots of customers, a customer proxy (usually the product manager) is used instead.

  2. Coding Standards: Everyone codes to the same standards. Ideally, you shouldn’t be able to tell by looking at it who on the team has touched a specific piece of code.

A movement: Agile

Agile is a conscious revolutionary movement: http://agilemanifesto.org/. It prefers:

Individuals over processes and tools
Working software over full documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Agile software engineering

Traditional engineering | Agile engineering

passive client | active client minimal changes | encourage change process rules | developer rules long iterations | short iterations static process | dynamic process

The Agile Manifesto

The Agile Manifesto (2)

What does open source add to the mix?

Some open source projects make a virtue of:

What does free software add to the mix?

Open standards meets free/open source?

Which is better?

Sociological perspectives on F/OSS

Overlapping areas of interest

So…

Summary

IPR Ownership
Decide now. Not at the end.
Licensing
Use the LGPL if possible
Trademarks
Use your name to establish a presence
Software Dependencies
Know the implications of what you are doing
Storage
Due diligence matters
Quality assurance
Er, test it!
Version Control
Use version control. Always. For everything.
Sustainability
Identify with your community at the start
Documentation
Remember the totality of written material
Open Standards
Use them, that’s what they are there for. And don’t use Word to document things…
Software Development Methodology
Don’t lock your programmer in a glass box