Thinking It Through

Someone emailed me to ask if they could use a modified version of one of my BY-SA images as the icon for their Android application.

After thinking about how icons are used on desktops, in installers, in about boxes, by launchers, and in other ways I decided that BY-SA wouldn’t affect those uses (I am not a lawyer, and I am open to correction), so I wouldn’t cause any problems by confirming that the licence allowed this use.

I emailed back to say that I thought that the licence should cover the creation and use of a derived work as an application icon, and asked if the application was free software. They said no. I had deliberately waited until answering their query before asking this, as I didn’t want to appear to be considering it in my decision.

Sometimes free software and free culture do end up as separate magisteria. They shouldn’t be, but the details of how we support them don’t always ensure that they complement each other in every situation.

Diffable Bitmaps

Is there a bitmap image format that can be diffed for meaningful version control? If not, could one be created?

SVG is a diffable vector image format that can be used in version control systems without them having to know anything about its internals. Ideally a bitmap equivalent would just be diffable as a text file, but if this isn’t practical and if special tools could achieve the same results that might be acceptable.

Imagine an XML (sigh) or YAML-style image format for bitmaps. Uncompressed pixel data takes up a lot of room, but the format could be compressed on disk and the diffs compressed to send over the network. This would require support for the format from VCS tools, or some sort of shadow file for the bitmap created by programs that work with it.

Or imagine an image diff utility that saves diff scripts for arbitrary images and provides this information to the VCS system.

Either way, the result should be meaningful, mergeable diffs for a multi-layered multi-attribute arbitrary-depth modern bitmap format(s).

Use The GPL For 3D Design, Not BY-SA

For a physical object that is the product of an art, craft, product design or engineering project you will need to be able to refer its design, to the plans, designs, instructions or CAD files if you need to study, repair, modify or copy it. Without the design, you cannot easily create repaired, improved or modified versions of the object.

The right to modify a work can be enforced through copyleft. But the copyleft of Creative Commons’s Attribution Share-Alike (BY-SA) licence, which is intended for artistic and design works, applies only to the finished object, not to any preparatory work. This would mean that it would not be an effective copyleft for projects where you need to ensure access to the designs for the finished object.

To create an effective copyleft for a 3D object (where that object is copyrightable), apply the GNU General Public License to the designs for it. Declare the object to be the “binary” and the design to be the “source”. Then anyone who receives a copy of the object can request the designs under the terms of the GPL.

Using the GPL rather than BY-SA ensures that anyone who receives a copy of the object can receive a copy of the designs for it (where the object is covered by copyright) without which the GPL is only as strong as BY-SA. The GPL does mention associated rights, so design rights might also be covered, but these do not apply as globally as copyright. But where a Creative Commons licence might otherwise apply and where access to designs is important (which is probably everywhere), the GPL is a better alternative.

(I am not a lawyer, this is not legal advice.)

Freeing Users Not Copying Innovation

A complaint I read occasionally in opinion pieces is that Open Source (sic) software tends to just be copies of innovative new commercial software (sic).

This is another example of how “Open Source” leads people’s thinking astray.

Free Software is not motivated by the desire to copy software of any kind. It is concerned with the freedom of individuals to use that software. If an “innovative” new piece of software is released that does not respect the freedom of its users and if that software becomes popular then it becomes important to produce an alternative that does respect users’ freedom.

This is not copying software because Open Source can’t innovate, it is producing a Free Software alternative because “innovators” don’t respect freedom often enough.

Rather than demanding that Open Source software “innovate”, demand that “innovators” produce Free Software and respect their users’ rights.

Old Illustrations

Until I move them to a local gallery, here’s a flicker set of scans of illustrations from the old (pre-1923) National Encylopaedia –

http://www.flickr.com/photos/robmyers/sets/72157614306272022/

Rob’s git repositories

Rob’s git repositories

Click above or here for my new project repository hosted on this server.

If you want to check out a project, type (e.g.):

git clone https://robmyers.wpengine.com/git/canto.git

replacing canto.git with the name of the project’s git repository. Which you can find on the page linked to at the top of this post.

If you want to know more about git, click here.

Turning Software Inside Out

A review of FLOSS+Art (the new book I have an essay in):

As our familiarity with software deepens, the question of its cultural understanding looms. Here Tony Sampson reviews FLOSS+Art and Software Studies: A Lexicon, two recent books which attempt to open up the black box to a wider audience

see Mute magazine – Culture and politics after the net.

Free Software, Free Society Plucker eBook

Here’s a Plucker format version of the collected essays of Richard Stallman in Plucker format, as generated by the script from a previous post.

The formatiing isn’t ideal, but its handy for a PDA.

Click here to download:

rms-essays

clipfix

#!/usr/bin/env ruby

################################################################################
# clipfix – Destructively change clip styles to properties in svg files in cwd.
# Copyright 2009 Rob Myers <[email protected]>
# Licensed under the GNU GPL Version 3 or, at your option, any later version.
################################################################################

################################################################################
# Requires
################################################################################

require ‘ftools’
require ‘find’

################################################################################
# Functions
################################################################################

# Destructively move the clip-path tag from the style to its own property
#   as Inkscape doesn’t like it as a style element.

def clipfix_file(filename)
output = File.open(“#{filename}.new”, ‘w’)
input = File.open(filename)

input.each do |line|
# Assumes each sytle property begins and ends on the same line
#   which seems to be the case for Inkscape.
output.puts(line.gsub(/style=”(.*)clip-path:(.+?);(.*)”/,
‘clip-path=”\2″ style=”\1\3″‘))
end

input.close()
output.close()

#File.move(filename, “#{filename}.old”)
File.move(“#{filename}.new”, filename)
end

################################################################################
# Main flow of control
################################################################################

# Make sure the user really wants to do this

puts(“Really destructively move clip-path from style to property in all svg files in this directory? [y/N]”)
answer=gets().chomp()
unless(answer.casecmp(“y”) == 0)
puts(“Not converting.”)
exit(0)
end

# Destructively convert all svg files in the current working directory

Dir.glob(“./*.svg”) do |filename|
puts(“clipfixing #{filename}”)
clipfix_file(filename)
end

Script to Convert rms-essays to Plucker Format
#!/bin/bash

# Copyright 2009 Rob Myers <[email protected]>
# Licenced under the GPL 3 or, at your option, any later version.

# Produce a Plucker version of Free Software, Free Society
# Some texinfo errors not fixed

# Convert eps images to GIFs

convert images/clib.eps images/clib.gif
convert images/code.eps images/code.gif
convert images/flex.eps images/flex.gif
convert images/free_software_song.eps images/free_software_song.gif
convert images/headMain.eps images/headMain.gif
convert images/party.eps images/party.gif
convert images/richard.eps images/richard.gif
convert images/philosophical-gnu.eps images/philosophical-gnu.gif

# Fix texinfo problems

perl -pe 's/@heading\{(.*)\}/@heading $1/' -i fs_for_freedom.texi

perl -pe 's/^\\input texinfo_times.tex//' \
-i rms-essays.texi

echo "\
@ifnottex
@alias unnumberedfootnote = footnote
@end ifnottex

@ifnottex
@macro sp1
@sp 1
@end macro
@end ifnottex

@include rms-essays.texi
" > rms-essays-html.texi

# Convert to plucker

makeinfo --html --no-headers --no-split --force -o rms-essays.html \
rms-essays-html.texi

perl -pe 's/^(<a href="#.+)$/$1<br \/>/' \
-i rms-essays.html

plucker-build --zlib-compression --stayonhost --bpp=1 --maxwidth=320 -p . \
-f rms-essays -N "Free Software,Free Society" file://`pwd`/rms-essays.html