Thursday, 7 October 2010

Book Update

I can't believe how busy it's been on the book front recently.

We have a new site live for it: http://bit.ly/a7H67J and Martijn and I have recently been looking at some possible cover designs (will post as soon as they're finalized and we can share).

There's also been a slight title change - we're now working on "The Well-Grounded Java Developer" (with "Covers Java 7" as the subtitle). The reason for that is we want to emphasize that the book is about more than just the Java 7 syntax changes - we're talking about a lot of the other shifts in the Java landscape, about multi-language, and lots of other things.

The links to our first "Green Paper" and other new content should go live soon, and after that - Early Access. It's all quite exciting.

Sunday, 5 September 2010

Forthcoming Book

I'm very pleased to announce that my new book "The Well-Grounded Java 7 Developer" will be published by Manning, for release in Spring 2011.

My co-author is Martijn Verburg - his announcement post is here - and we'll be making further posts as we develop this project. It's a concept that we've been developing together since late last year, and we're both really excited about it.

The next big step forward will be when our drafts hit the Manning Early Access Program (MEAP), which should be in a few weeks time - I'll be sure to update with links when we're live.

Now, back to writing chapter 7.

Saturday, 15 May 2010

Thoughts on Diaspora / Distributed Social Networks

This post, by Matt Asay, decries Diaspora (the forthcoming Open Source Distributed Social network which seeks to disintermediate FB and other centralised social networks in favour of personal 'seeds' - services which directly connect to each other and aggregate content from services, essentially externalizing the social graph into links between seeds).

He makes some good points, largely that this is a geek toy for geeks (although he misses the obvious corollary that in this game, that's how everything starts, but if Gibson's to be believed, the street finds its own uses for things. Isn't that what happened with Twitter?) and that the technical nous required to set up a seed is going to be too high (which is a problem the scene can solve).

His fundamental fallacy, though, is that ordinary people just don't care about the privacy and safety aspects of their data, and that they value the aggregation of "everything in one place" ie FB.

This simply isn't true. It's not just that survey after survey is coming out showing that the so-called digital native generation do care about their privacy, they just feel that they have no option but to use FB. It's not just that Zuckerpunched has entered the lexicon, to mean being tricked into revealing more information than you intended to.

The basic fallacy "ordinary people value aggregation over privacy" is disproved by looking at people's plans for their birthday (and it's mine next week - send me cake :) ). Most people will have two or three (or even more) separate celebrations for their birthday - there'll be drinks with colleagues after work one evening, there'll be a family meal and a gathering for friends.

Those partitions of the social graph exist for ordinary people, and they represent groups in which ordinary people may well display different aspects of themselves, and it's that which Matt's missing, and it's that which is a huge stumbling block for FB. They don't segregate your data into sets which accurately represent your aspects and groups of connections. They don't, because they can't. I don't mean technically, because of course they could with enough engineering resource. They can't, because they're a slave to the needle now, baby. Monetizing your info is the only thing that's going to keep their VC investors happy, and by now, everyone has such high expectations (4sq turned down 100M - and if that's not the dictionary definition of delusional, I don't know what is) that they have to scrabble to get every last cent out of you, and that means mining all of your information.

Perhaps in a few years, we'll come to look back on the idea that the social graph should be monetized separately by many sites, all of which seek to lock up and treat as proprietary the connections between human beings - perhaps we'll come to see this as a strange passing fancy from which a mature market awakened. One thing seems certain, however - the current situation in which the social graph is replicated imperfectly across dozens or hundreds of sites is incredibly inefficient, and with the 800-pound Facebook gorilla failing to provide a functionality which the overwhelming majority of people want (the ability to manage multiple aspects of your personal graph), then the situation is ripe for upset.

Wednesday, 3 March 2010

Introduction to OSS Event

Announcing an Introduction to Open Source day on April 17th in IBM's flagship offices on the South Bank. Full details are: here. We opened registration to our existing membership base on Friday, and the event is half-full already, so we expect this to fill up fast.

The day will consist of short introductions to our participating projects, then a full day working on real project tasks (fixing bugs, coding new features, improving the test coverage, improving the documents that go along with the project). At the end of the day, we hope everyone's contributions will be finished and will be committed to the project - and they will become an official contributor.

So, if you're a student or relatively recent graduate who has always wanted to try out Open Source development, please think about coming along. It's going to be a really stimulating day, makes a great talking point for your CV / any interviews, and you'll meet not only a very bright group of your peers, but also a number of senior and very experienced software experts.

Sunday, 28 February 2010

Thoughts on Free / Open Source Software

This post is intended to provide a basic introduction to some of the concepts and motivations of Free / Open Source Software (F/OSS). The intended audience is students who are on the path to becoming professional developers - either final year undergrads or recent graduates beginning their first job.

A Definition of Open Source
Open Source software is software which meets these criteria:
  • Everyone can download and use the software as-is for any purpose they like, without any royalty or license payments.
  • Everyone can study the source code and make changes if they like
  • Everyone can give the software to anyone they like - with or without changes (but you can't take credit for things you didn't write, and you have to provide source code and the same rights as you received)
Notice that the above definition leads to a situation where for practical purposes, Open Source software is made available without charge - because even if the original developer asked for money (eg to cover the cost of bandwidth) then anyone who downloaded it, could redistribute it free of charge.

Free Software and Open Source Software
There are two major points of view regarding what is the most important aspect of this movement in the software world. One viewpoint is that the access to the source code, and the availability of the software without charge are the most important aspects. This view is usually the one in which businesses are most interested in when they consider Open Source.

However, the other viewpoint chooses to emphasise the user’s intellectual freedoms to use and modify the software as they see fit. Many people in this part of the movement prefer the term ‘Free Software’ to ‘Open Source’ for this reason.

"When we call software 'free', we mean that it respects the users' essential freedoms: the freedom to run it, to study and change it, and to redistribute copies with or without changes. This is a matter of freedom, not price, so think of 'free speech', not 'free beer'." - Richard Stallman

The term "Free Software" view holds that it's not simply the access to the source code and lack of a price tag on the code which matters - the freedoms of the user of the software are seen as a major point of principle and central to the entire development practice.

Free Software and Open Source Software are two schools of thought which share many common goals, but which have different philosophies and emphasis. Despite these difference in approaches, however, virtually all software which is Open Source is also Free, and for practical purposes, all Free Software is Open Source.

More importantly, most of the time this distinction does not matter to the majority of people who use and develop Open Source or Free Software. The different philosophical approaches that individual developers take do not usually matter in terms of their ability and willingness to work together - people with very different views on the underlying philosophy can and do work very effectively on the same project, to the same goals.

How does this fit into the modern software industry?
These days virtually all companies will use F/OSS for at least some of their software needs, and F/OSS is contained in a very large number of consumer devices, such as wireless routers and HD televisions from major manufacturers.

F/OSS has become a major presence in the software world and is now widely used in all sectors of the industry, particularly to provide infrastructure solutions or libraries to build upon.

What are some examples of Open Source / Free Software?
The Linux operating system. The Apache web server. Java (eg OpenJDK or Apache Harmony). The PHP web programming language.

The important thing to note here is that when F/OSS provides a platform on which to run other code (the business applications), then the source code for the business applications does not usually need to be released. For example, just because PHP is Free Software, does not mean that the source code to Facebook (and every other web application which uses PHP) needs to be available.

How does Open Source / Free Development work?
The source code is usually made available at all stages of development after the initial announcement - quite often through allowing public (read-only) access to the source repository.

In addition to the source code, projects will usually produce official releases, on whatever timescale they deem appropriate.

Individual developers can then join the project, by joining the project forums (eg mailing lists, bug trackers, etc) and getting up to speed and then starting to participate. This participation can take a number of forms - not just coding tasks. For example, developers who can write good tests or lucid project documents are in demand in virtually all large Open Source projects. Discussions about design and direction of the project will take place on the project mailing list, and people are welcome to contribute - although as with most projects a developer’s experience and standing in the community will be a factor in how seriously their views are taken.

Developers will usually tackle the tasks which interest them the most, although this can lead to duplication of effort, as several people may choose to stat attacking the same interesting-seeming problem. Sometimes developers who are new to the project will ask experienced devs what would be good starter tasks - and this can be a good way to get into a new project.

These open and decentralised approaches to development make it a very different environment from that found in many commercial workplaces. This is to be expected as the typical Open Source developer is not directly compensated (in material terms) for the work they do.

The primary reasons that developers have for being involved in Free or Open Software are very varied - but common motivations include:
  • Recognition by one’s peers
  • Satisfaction of scratching a personal “development itch”
  • Learning a new language / technology area
  • Contributing to one’s community