Posts Tagged 'software'

Update to AutoDBAdapter for Android Developers

Update to AutoDBAdapter for Android Developers

Trouble with your database code or databasehelper in android?

As I mentioned earlier, I have written a web application which automatically creates a database adapter code in java for your Android application based on a text description of the database schema.   This grew beyond its initial intentions and now spits out java code for a fair bit of stuff.

I have recently updated it.  Version 1.2 gets rid of some annoying bugs (like fields being wrongly declared – oops!),  adds code to allow each table to be automatically initialised from an array in the R.id.arrays, also has code to easily nuke and re-initialise the db (don’t use in production!).

If you’re looking for ready-made DBAdapter  java code which is tailored to your database schema or a java database adapter example please give autoDBAdapter a try.

Advertisements

UniPod for Android

UniPod for Android

Annoyed at Android media players in general I’ve written my own.  The point?  To be able to play long running audio files like university lectures or audio books.  Available for free in the Apps -> Books and Reference section on Android market (or if you’re technically inclined, download the apk yourself).

Features include:

* no playlist, choose a course and go

* no album art, but you do get large text telling you what you’re listening to

* no shuffle to turn on accidentally

* what you are listening to is automatically updated, so even in the worst case if the app crashes it should restart where you were up to.  But in the best case you can always take up your listening from where you left off

* autoreview – it automatically rewinds

* customise these features as you desire.

* never see your music again!  If you want to just see (eg) lectures, you can filter out your music tracks.

* and more!

Known issues:

* some “application taking too long to respond messages”.  Hard to diagnose.

* this is a player only.  You need to get your media onto your phone first.

The Real Story behind Windows 7 Phone Home

The Real Story behind Windows 7 Phone Home

ie: my guesses about it

Lauren Weinstein reports on a new feature of an update to Windows 7 (apparently called KB971033?), which continually checks (once every 90 days) to see whether the installation is authorised/activated/validly licensed.  Some sites have discussed this and made something of the fact that it is voluntary to install, and/or checks to see that the installation is valid even if it has verified the copy as valid and even if the copy has already been authorised.

I tend to think this has not so much to do with piracy per se as solving a couple of Microsoft’s other problems.  The first is the lumpiness of Microsoft’s revenue.  It gets a heap of extra revenue when it releases new versions of whatever.  Microsoft has tried to overcome this by its assurance programs, in which users are asked to sign on to a subscription program.  However, ultimately the subscription programs are dependent upon Microsoft actually releasing new versions from time to time (what a drag!).

The second is the problem of proving losses.  If you make an illegal copy of a Microsoft product and then buy a legitimate copy (or as many legitimate copies as illegal copies you have made), exactly what has Microsoft lost?  Microsoft, for example, gets the same amount of money, it just gets it at a different time.    This is because there is no tying of the license to a particular period of time.   If a person made an illegal copy of Windows98 (say) 10 years ago and buys a legitimate copy today (yes, I know that may not be possible in fact) it is hard to see what Microsoft has actually lost, except the time value of money over the past 10 years (this, unfortunately, might lead to ‘gaming’ of the system, where a person makes illegitimate copies until they are caught, then buys legitimate copies to cover their nefarious activity).   Note: There is nothing specific about Microsoft to this argument, it applies generally to software licenses which are not limited in time.

Both of these problems are solved by tying.  Microsoft began tying a long time ago by tying copies to specific hardware.  This is what the authentication stickers are all about.  Their purpose is not to prevent piracy.  Rather, their purpose is to prevent a legitimate purchaser moving a particular copy from one computer to another.  If they can’t move the copy then, the theory goes, they must buy a new copy.   Moreover, by withdrawing product from the market, Microsoft can force upgrades to new versions of Windows.  If someone could take their legitimate copy of Windows XP from their old computer (and wiping the old computer and loading it with Linux) and load it onto their new computer, would they have bought Vista?

The next form of tying is to time.  The point of having the check being performed once every 90 days is to allow for the prospect of quarterly licensing.  You pay a fee each quarter in order to have continued access to your data.  The 90 day phone home is just the latest piece in the puzzle.  Others are things such as the time limited trial installations of office that OEMs force onto people.   In a year or two you will no doubt see Microsoft offering (initially) optional, low priced time limited licenses, with a view to moving the market over to the new licensing scheme over time.   Time limited licensing may also alleviate (although maybe not solve?) a problem that Microsoft faces with the Netbook form factor – that is, it is too expensive to pay any significant amount for a windows licence on a $300 (or cheaper) machine.  However, if you have a time based license, the first three (or six) months might be given away free or charged at a low amount.  This would allow hardware manufacturers to legitimately sell Windows loaded machines at the same price point as a Linux loaded alternative.

Just follow the bouncing ball…

See also: computerworld article, someone’s blog, someone else’s blog,

Taste of Vista, Sillyness of EULA Laws

A relative bought a new computer last week and I went around to set it up.  It was my first experience of Vista (in theory I have a copy of Vista on my home machine, but I haven’t (re)connected the hard drive since I had to remove it to install my Linux set up).   I spent most of my time setting up the hardware, rather than looking at Vista, but it seems nice enough.  I can understand why the user access controls are annoying people.  I was only on the machine for 5 minutes and was already getting annoyed at it.

Interesting from my point of view was that the machine booted straight into the desktop – no EULA was presented.  I also noticed that the 7 day anti-virus trial only had 2 days left to run.  Presumably the store had set up the machine?  The machine is a name brand (Medion, produced by Aldi).  It has an authorisation sticker on the side.  The machine comes with minimal documentation and no printed EULA.

The $64 question is – is my relative licensed to use the software?  If so, what are the licence terms?

Community Must Value All Open Source Contributions

Brendan Scott, September 2008

Mary Gardiner has written a blog post about how to get females involved in projects.  I want to emphasise one of the points she makes:

Don’t discount what women do [‘what women do’ here used as ‘community management, documentation and similar activities’, via Geek chicks: second thoughts]

I believe there is a blind spot here for everyone in the open source community.  It is nothing for an open source company to fund development effort, and hire x coders (for some non-trivial x) but to suggest that any other contribution to the community be made is to cross the line on acceptable suggestions.  But the community does not rely on coders alone.  The best code in the world is useless if no one knows of it, or if it is hidden behind a terrible user interface, or can’t be licensed because lawmakers have outlawed it (eg  encryption code).  I have hinted at this problem in my post on FLOSS best practices.  This is what I am referring to by the references to KPIs in that post.

Because numbers are relatively easy to come by, it is comparatively easy to criticise companies for not submitting enough code to one project or another but, there are other things that a contribution to the community should be measured against. Unfortunately, the word which has filtered back to me is that managers are not assessed against these soft contributions.  It should therefore come as no surprise that companies are not committing to them.

It would be nice to see the community demand that organisations support the whole breadth of the open source community.  In this way, a more rounded view of what makes a good open source corporate citizen could be created.  This would include things such as supporting marketing, documentation or communication efforts, the making of submissions to governments or courts (or supporting compliance initiatives) and the myriad of other things which are essential to a functional community associated with either a project or with open source generally.

Thanks Readerware

One of my pet hates about closed source software is registration codes.   In order to install software that you’ve legitimately bought, you need to find the relevant registration codes.  If you’ve misplaced them (eg you’ve moved house, or you have kids) then you can kiss goodbye to  however many hundreds of dollars you spent on the thing.   Even if you haven’t lost the codes it can take anything from 5 minutes to hours to actually find them again.  Several years ago this was such a hassle for me when upgrading or changing my system that I decided to foreswear closed source apps to the extent I could.

I made one exception, when we moved house a couple of years ago.  I bought a program called Readerware* to catalogue our books before we moved  – a vain and thankless task but, now it’s done, I thought I might update it with the books we’ve acquired since.  So I dug up my old version of readerware from one of the backups to find that it didn’t seem to work on my current system (which has evolved a bit since then, particularly in May this year – I think it is looking for a 32 bit version of glibc).   I even had the CD – and the registration code.

On a whim I downloaded the most recent version of the product and entered my registration code – it worked.   I had to pay for neither the move to 64 bits nor the new version of the product.  How nice (there is no fee for upgrades within major releases 1, 2, 3 etc – the current version is 2.984).  Thanks Readerware.

I now face the task of identifying what files I need to copy to restore the database… (done) and find what box I put the neat bit of the dot bomb (see below) in.

PS:  I even got a neat bit of the dot bomb at no extra cost when I bought the package.

* At the time Alexandria was a no-goer, although it seems to have come along since then…

Linux Kernel Drivers – AU Law on Interoperability

For those of you who haven’t seen it, some of the Linux Kernel developers have issued a statement on the use of closed source drivers in conjunction with the kernel (summary – it’s a Bad Thing ™).  My suggestion on this is that the interface for drivers should prohibit non-GPL drivers unless the driver’s author positively  asserts that the driver is not a derivative work.

This announcement has triggered off some discussions in mailing lists about how to determine whether or not something is a derivative work of the kernel.   Someone mentioned that derivative works should be functionally based, citing Linus Torvalds here.  I intended to chime in saying that the Australian High Court had actually said something like that some time ago, but then the short email got out of hand.  So now I’ve done a blog post on…

Some Observations on the Australian Law on Interoperability

Summary

Some time ago, the highest Australian court endorsed a functional analysis when identifying infringement of computer programs (ie if something is copied and is essential to the operation of a copyright program, then it’s an infringement), although it appears to have stepped back from this position more recently.

The current authorities still hold that the reproduction of a data set, even for the purpose of interoperability, will be an infringement if there is copyright in the data set.  Moreover, the courts have simply looked for a causal connection between the original work and the reproduction.  The re-implementation of a work by piecing it together from observation may still result in an infringement.

The legislature has introduced an interoperability exception but it seems to be worded in a way limited to reproductions for the purpose of gaining information – and therefore doesn’t seem to be a lot of help in practice.

The Australian position for the makers of device drivers is not clear.  There are particular problems when an implementation requires the reproduction (albeit indirectly and notwithstanding that it may be necessary for interoperability) of part of the kernel in which copyright subsists.  In this case there is a risk that the requirement to GPL may be invoked by virtue of clause 2(b).

Autodesk v Dyason

There is an interesting case in Australia called Autodesk Inc v Dyason [1] which held that copying 127 bits (yes, bits)[2] from a multi-kilobyte program (I have quoted 32Kb in the past, but now cannot find the reference – if you know please tell me where to find it) constituted a reproduction of a “substantial portion” of the larger program and was therefore a copyright infringement.

The 127 bits were in part of a chip in a dongle included by Autodesk in the package with their software.  The defendants observed the operation of the chip through an oscilloscope and used this information to produce their own dongle which mimicked the operation of the Autodesk dongle.  These bits were said to infringe the copyright in the program (called widget c) which queried the dongle.

Some interesting aspects of the case are –

  • this is a case about primary infringement of the reproduction right;
  • the dongle was a hardware implementation.  In response to queries by Widget C, it responded in a certain way based on the electrical operation of the various hardware gates in the dongle.  In effect it operated as a look up table, but there was no look up table “stored” in the device;
  • the relevant defendant had no access to and did not analyse the Widget C program.  They only analysed the dongle (see para 85 of the judgment at first instance);
  • there are in fact two decisions by the High Court, with the second on procedural issues.

The important part of the decision is that the court expressly took into account the fact that the key/bytes were essential to the function of the computer program. From McKeogh, Stewart and Griffith Intellectual Property in Australia third edition at para 8.6 (who, incidentally, criticise the decision):

“However, the emphasis on the function of a computer program as determining what is a ‘substantial part’ was maintained by the majority [of the court in Autodesk No 2 -see below], who emphasised that the [127 bits] was ‘essential’ or ‘critical’ to the operation of Widget C.”

This is a decision of the High Court – the ultimate court of appeal here equivalent to the US Supreme Court.

The defendants sought leave to the High Court to have the issue reheard (this is very unusual), the High Court gave judgement on whether or not to look at the issue again (ie, they were determining an issue of procedure, they were not re-examining the substance of the appeal) the following year.[2]   The defendants were unsuccessful (3-2) although the then-Chief Justice (in dissent) indicated reservations about applying a functional analysis when determining substantiality for the infringement of computer programs.  His reasoning was later to be cited with approval in …

Data Access v Powerflex

In Data Access v Powerflex the court unanimously stepped back from the “essential to the operation” analysis in the Autodesk v Dyason Case (only one of the Autodesk judges remained on the bench by that time – see her short concurring judgment at the end) saying this at paragraphs 84ff:

There is great force in the criticism that the “but for” essentiality test which is effectively invoked by the majority in Autodesk No 2 is not practicable as a test for determining whether something which appears in a computer program is a substantial part of it. For that reason, we prefer Mason CJ’s opinion that, in determining whether something is a reproduction of a substantial part of a computer program, the “essential or material features of [the computer program] should be ascertained by considering the originality of the part allegedly taken”

In order for an item in a particular language to be a computer program, it must intend to express, either directly or indirectly, an algorithmic or logical relationship between the function desired to be performed and the physical capabilities of the “device having digital information processing capabilities”. It follows that the originality of what was allegedly taken from a computer program must be assessed with respect to the originality with which it expresses that algorithmic or logical relationship or part thereof. The structure of what was allegedly taken, its choice of commands, and its combination and sequencing of commands, when compared, at the same level of abstraction, with the original, would all be relevant to this inquiry.

That being so, a person who does no more than reproduce those parts of a program which are “data” or “related information” and which are irrelevant to its structure, choice of commands and combination and sequencing of commands will be unlikely to have reproduced a substantial part of the computer program. We say “unlikely” and not “impossible” because it is conceivable that the data, considered alone, could be sufficiently original to be a substantial part of the computer program.

It follows that we are unable to agree with the approach to determining “substantiality” which the majority took in Autodesk No 1 and Autodesk No 2. Because of the importance of the question, we think that the Court should re-open the question of what constitutes a substantial part of a computer program. To depart from the reasoning in the Autodesk cases does not necessarily mean that the outcomes in those cases were wrong. In our view, the look-up table in Widget C was merely data and was not capable of being a substantial part of the AutoCAD program unless the data itself had its own inherent originality. However, re-opening the reasoning in the Autodesk cases does not require the Court to express a view on whether the look-up table in that case had its own inherent originality.

The Data Access case was about whether the re-implementation of a programming language (called Dataflex) was an infringement of copyright in the reserved words of the language.   Surprisingly, this argument was successful at first instance, but was eventually knocked on the head in principle, but not necessarily in practice in the High Court.   The reason it was not knocked on the head in practice is another look up table used to implement a compression algorithm which was at the centre of the case.

In that case the Dataflex program stored its program files in a compressed form.  A form of compression called “Huffman coding” which implements a lookup table was used to implement the compression.   The lookup table in this compression scheme is created by identifying commonly occurring strings in sample files.  In order to create a competing program which read the compressed files (or to create compressed files for use with the Dataflex program)  then it was necessary to reverse engineer, and re-implement the compression table.  The defendant re-created the table  by creating a number of test files and seeing how the Dataflex program actually compressed them (see paragraph 117).  The court found that the original compression table was a literary work and that re-creating it in the manner described was a reproduction (para 124):

The fact that Dr Bennett used an ingenious method of determining the bit string assigned to each character does not make the output of such a process any less a “reproduction” than if Dr Bennett had sat down with a print-out of the table and copy-typed it …

This comment may raise problems for those wanting to create interoperable programs.  Anyone, it seems, can structure their program in such a way that the reproduction of a copyright work is necessary to interoperate with the program.  I will defer to the programmers out there on whether and how this might apply to drivers accessing the Linux kernel.  The legislature might have addressed this in…

Section 47D of the Copyright Act

Since the Data Access case the legislature has implemented section 47D of the Copyright Act.  It says that reproducing a copyright work that is a computer program (which includes literary works incorporated into a computer program) for interoperability is not an infringement… in certain circumstances.  Those circumstances are:

(1)  Subject to this Division, the copyright in a literary work that is a computer program is not infringed by the making of a reproduction or adaptation of the work if:

(a)  the reproduction or adaptation is made by, or on behalf of, the owner or licensee of the copy of the program (the original program) used for making the reproduction or adaptation; and

(b)  the reproduction or adaptation is made for the purpose of obtaining information necessary to enable the owner or licensee, or a person acting on behalf of the owner or licensee, to make independently another program (the new program), or an article, to connect to and be used together with, or otherwise to interoperate with, the original program or any other program; and

(c)  the reproduction or adaptation is made only to the extent reasonably necessary to obtain the information referred to in paragraph (b); and

(d)  to the extent that the new program reproduces or adapts the original program, it does so only to the extent necessary to enable the new program to connect to and be used together with, or otherwise to interoperate with, the original program or the other program; and

(e)  the information referred to in paragraph (b) is not readily available to the owner or licensee from another source when the reproduction or adaptation is made.

(2)  Subsection (1) does not apply to the making of a reproduction or adaptation of a computer program from an infringing copy of the computer program.

McKeogh, Stewart and Griffith cited above argue that s 47D is a complete answer to interoperability questions (see section 8.7) but I don’t see it.  The key words of this are in paragraph (b) and (c) which make it clear that the “reproduction” which is excused by this section is the reproduction for the purposes of getting information (another section, section 47AB gives “computer program” an expansive definition which would probably cover the Huffman table in the Dataflex case).  Paragraph (b) also makes clear that the reproduction in question must occur prior to the making of the interoperating program.   The key point is that it says nothing about whether you can use the information that you obtain in this way, and the reproduction which occurs when this information is actually incorporated in the interoperating software does not appear to be covered by this wording.  Paragraph (d), which you might think covers it, is worded as a qualification on paragraphs (a), (b) and (c).

For example, I can’t see that the outcome of the Data Access case would have been different if s 47D had been in force.   McKeogh et al correctly observe that the compression table in the case would likely be within the extended meaning of computer program in the legislation.  However, the compression table is not the relevant thing being reproduced because a reproduction of it isn’t “made for the purpose of obtaining information…”. On the contrary, it is the information which has been obtained as the result of some other reproduction.

Some thoughts on 47D

In my view section 47D is not drafted in a manner which is of much practical assistance to someone wanting to create an interoperable software program.  Perhaps someone might be able to hang their hat on some Explanatory Memorandum, Hansard (hint: try around 30 November 2006) or a CRC report somewhere to explain its purpose, but to do so seems to require stepping outside the words of the section.   Incidentally, if there is a problem with section 47D, then there is also a problem with the exceptions to circumvention of technological protection measures, since it forms the basis of one of the exceptions.  I made submissions on behalf of OSIA asking for section 47D to be reworded in the course of the AUSFTA negotiations over the past couple of years (because this exception is relevant to the added prohibitions on technological protection measures).  Incidentally, the Senate Committee agreed with me (see recommendation 13 here).  Strangely, it didn’t make it into the final draft of the legislation.

So, while the legislature seems like they intended to address the interoperability issue, it’s not clear they’ve gotten there.

[1] [No 1] (1992) 173 CLR 330.

[2] Actually, the judgment is not clear.  In some places it looks like it is 127 different 127-bit strings in other places it refers to a single 127 bit string – see eg paras 12-14 of Dawson J’s judgment. See also the decision of Northrop J at first instance.

[3] Autodesk Inc v Dyason (No 2) [1993] HCA 6; (1993) 176 CLR 300 (3 March 1993).

[Addition 26 June 2008.  In response to Bruce Wood’s comment here is a more complete quote of paragraph 124/125 of the judgment (my emphasis):

124. In addition, in our opinion the Full Court was correct in holding that the process undertaken by Dr Bennett constituted a “reproduction” of the standard Dataflex Huffman table. The fact that Dr Bennett used an ingenious method of determining the bit string assigned to each character does not make the output of such a process any less a “reproduction” than if Dr Bennett had sat down with a print-out of the table and copy-typed it into the PFXplus program.

125. The finding that the respondents infringed the appellant’s copyright in the Huffman table embedded in the Dataflex program may well have considerable practical consequences. Not only may the finding affect the relations between the parties to these proceedings, it may also have wider ramifications for anyone who seeks to produce a computer program that is compatible with a program produced by others. These are, however, matters that can be resolved only by the legislature reconsidering and, if it thinks it necessary or desirable, rewriting the whole of the provisions that deal with copyright in computer programs. ]

[Addition 27 June 2008.  The Decision on appeal to the Full Federal court describes the table (under the heading Huffman Compression Table) as being 256 lines of source code (presumably one line to assign each character value).]


Blog Stats

  • 240,322 hits

OSWALD Newsletter

If you would like to receive OSWALD, a weekly open source news digest please send an email to oswald (with the subject "subscribe") at opensourcelaw.biz