Cameron Harris' Blog

This blog covers the rants, ponderings, considerations, experiences and life of Cameron Harris.

Tuesday, 18 May 2010

My Cunning Copyright Plan

Copyright is not an intrinsic right. The idea of copyright didn't even exist before the 18th century, and it has become significantly more oppressive since it's introduction. The first copyright laws provided publishers between 6 and 14 years of exclusive rights over a work, and only when explicitly requested from the authorities. The original reasoning behind copyright was that if authors were granted exclusive rights to sell a work, they'd have more incentive to create and it would still end up in public domain and become a part of free culture within a reasonable timeframe. This is a good idea, and it works well. Unfortunately, in the last 300 years, industries have successfully lobbied for massive, draconian extensions to copyright law that benefit no-one except themselves.

US Copyright law is as follows..
  • Term for authors: Life + 70 years
  • Term for publishers: 95 years from publication / 120 years from creation (whichever is shorter)
  • You are not allowed to circumvent technological copyright protection (also known as DRM) even for personal usage, and even when not violating copyright. If you are exempt from this restriction, you are still not allowed to release information about how to circumvent it (DMCA).
  • Anyone can send a DMCA takedown notice to a media host, and if the site does not comply, they may face legal action, even if there is no way for them to verify the claim. This is widely abused.
This is clearly insane. If the purpose of copyright is to grant a temporary exclusive monopoly for economic gain, what possible reason is there that something should not be in the public domain after 100 years?

Copyright is also now considered an automatic right, meaning you don't even need to put a notice that a work is copyrighted -- if there is no notice, you have to assume the author reserves all rights for 70 years after their death. Consider how that applies to the user generated content world of the internet.

I think it's time for a change. My cunning copyright plan is as follows:
  • Reinstate a copyright registry and make registration mandatory for all copyright.
  • Technology should make this easier than ever, now that people could submit all relevant information to the authorities online. Every copyright registration could be given a unique identifier.
  • Require that all reasonable raw components for a copyright work are submitted with registration, to be released into public domain upon expiration so that someone could rebuild your work for a new format if needed, and use elements that may be useful in producing new creative works. This would be source code for computer software, raw recordings and mix data for audio/video. Text is pretty much WYSIWYG, but should be made available in an easily consumable format (text/plain or something).
  • If a copyrighted work is exhibited or released, a prominent and descriptive copyright notice that references the work's unique identifier must be placed within reasonable reach of the work (bottom of the website, printed on raw materials, radio station website, etc.). Work will be considered to be released into public domain if it can be shown that the author didn't display the copyright notice.
  • Reduce the default copyright term to 5 years. Most earnings from a creative work tend to be within a year or two after release.
  • At the end of the default term, allow copyright to be extended by 5 years to a maximum of 20 years, each time for a relatively small but significant fee (perhaps 500 Y2K USD). This will allow people to maintain exclusive control for longer, but force them to consider releasing it to public domain if it's not worth much to them any more. For most works the earning potential is practically nil after 20 years, and for those that are still relevant, they have probably made a massive ROI in the first 20 years of exclusive monopoly.
  • If someone wants to send a takedown notice to remove a copyrighted work, they must send their copyright registration identifier with the notice so that the claim can be independently verified.
  • Full fair usage in the context of a sale (as opposed to a lease agreement). Copyright law would only apply to distribution/exhibition of a work, and a public performance would only be considered exhibition in fairly limited circumstances (perhaps >10 people or for a profit). Anything involving time-shifting, format-shifting, chopping it apart for personal usage, modding and so on is fair game.
  • Strict adherence to the idea of exhaustion of rights. If you buy something, you have the right to sell it under the same context you purchased it. All rights to free downloadable content and online play are transferred with the sale. If something is advertised as a sale, purchase, these rights must be conveyed. If the intention is for a temporary rental, this may be implemented as a purchase with the promise to return the property and all associated rights, but again, all rights would be available to the temporary owner for the duration of their lease.
  • If the intention is for example streaming to browser (such as Hulu), this would be considered public exhibition as opposed to temporary ownership, unless the user was granted full rights for a period of time, and Hulu would need to have an agreement with the content producer that explicitly allowed such a thing.
  • Data created by the user, using copyrighted software as a tool would not be considered a derived work. This would prevent for example restricting the distribution of savegames and such under copyright laws.
  • Consider the potential for harmonising the patent and trademark systems with the copyright system as much as possible.
This will give people who produce a work a choice of three things to do with it (using the example of a software company):
  1. Release it as copyrighted work and have it and its source code become public domain after the copyright term ends
  2. Don't use any copyright and make the software freely distributable in the public domain, but not be forced to give up your source code.
  3. Don't distribute it, and instead keep it internal as a trade secret.
I don't ever think this will happen in the real world, but it's nice to think about it.

Wednesday, 4 November 2009

What Linux Should Have To Succeed..

It's late so I'm not going to think too hard about my wording.

Integrated authentication, consistent, easy domain support
Just like Windows, you should be able to install a Linux server and very simply configure it as a domain server.

The framework is already there:
- there are plenty of capable LDAP directory servers
- NFS and SMB support for file sharing
- Kerberos for authentication
- plenty of amazing filesystems for distrubted servers
- gconf for configuration policies
- SSH and X for remote management, thin clients
- KVM for virtualisation, live migration, etc.
- apt for distributing updates
- Sabayon and other admin tools
- ... and of course, all the standard network services like DNS, DHCP are there.

In many places, there is far better stuff on there than there is on Windows. Where Linux lacks is support for all this out of the box with minimal hacking and configuration. Canonical could really solve this with their simultaneous Ubuntu and Ubuntu Server releases. I'm sure this is their long term goal.

This should be integrated from both the server side and client side to provide interop with Windows and Mac OS X.

Windows application support

This is a pretty large topic but there are three main ways to achieve it, which could be mixed together: WINE, Mono (.NET), Virtualisation. Mono P/Invoke calls should fall-back on WINE libs if there isn't a native lib on the system, and this should work just as it does in Windows. WINE should use the native Windows libraries if there isn't a WINE implementation present. Virtualised applications should be managed by the window manager, like Parallels Coherence, should support drag and drop and transparently work with the Linux file-system.

Of course some of these features would only be possible if you have installed Windows onto the system too, but the UI should prompt for a Windows installation if required and one isn't present, to get the virtualisation, native WINE libraries to work. The UI should also scan the hard drive for bootable Windows installations and provide Boot Camp like methods for installing a side-by-side Windows that can also be launched from within Linux.

Linux needs native support for the latest DirectX, and there needs to be an effort to write Windows application "profiles" that will recognise an application and select the appropriate WINE version, .NET libraries, virtualisation and configuration to run the application. The end goal should be that 80% of Windows applications will work well when you put them in the disk and install them, 99.9% will work if you install Windows virtually.

One True Theme
The Linux community would probably give me a lot of flack for this, but GTK3 should drop multiple theme/theme engine support and put all it's resources behind a single, fast, usable customizable [to an extent, via CSS] theme or theme set. This means that application developers could rely on certain things looking and functioning the same way, with the rest defined in a standard, simple format. Speaking as a developer, this would drastically simplify application development and particularly anything that involves custom UI controls. Currently, building custom UI controls is a nightmare because you need to support looking normal on potentially thousands of themes. Consequently, most "custom controls" are very basic combinations of existing controls rather than something more intuitive and better suited to the task at hand. See iTunes for some good examples of why custom controls can be good for usability, and try to imagine implementing them in a widget toolkit where the widgets could literally look like anything under the sun. You could see this mismatch when Vista was first introduced, and some applications still looked distinctly non-Aero. Now it's often the other way around.

From a Linux standpoint, it means that effort could be more intensely centred around a single set of themes, and theme-breaking regressions are less likely to occur. Most of the effective codebase would be stored in the one location. Naturally, since this is open source, I'm not saying people can't implement their own themes, just that it should be done in third party patches. I don't know anyone who changes their theme beyond a few slight colour customisations. Most people stick to the OS default, typically because it's the best.

Like anything in the world, custom controls can be horribly abused. I'm not supporting this, but custom controls have definite advantages that cannot be ignored.

Draw window borders inside the client window
Window borders should no longer be the realm of a separate application. Like the above, there should be One True Window Border as part of the GTK theme, but GTK should draw it itself, and applications should be able to 'overload' this window border with their own functionality. It sounds like a usability nightmare, but it's being used very effectively in Mac OS X and Windows by applications such as Microsoft Office and Google Chrome.

Due to the history of Linux, it should be possible to disable this feature and go back to the old fashioned window manager provided borders, and the default window manager should still provide support for drawing window borders using GTK for clients that want window borders.

Bling
Users like bling. 'nuff said.

Okay, not exactly the greatest reason, but bling can definitely add usability and create opportunities in UI design that weren't there in the past. Again, see Mac OS X for an example of a UI that wouldn't be possible without composited, accelerated graphics.

Get the basics working perfectly, all of the time, absolutely guaranteed
We should never be in a situation where Linux does not work with the graphics hardware, or sound. If there is even a small chance it won't work, the installer disk should tell you before you get to the end.

When I install an operating system, I don't expect to look for drivers or to run things at the command line to get it working. A basic installation should work with the following:
  • Hardware accelerated graphics rendering, with support for all the effects on reasonably recent video cards, and default to native resolution of attached devices

  • Audio should work out of the box. All useful sliders and options should be present and presented intuitively. Software mixing should work with all applications.

  • You should be able to play videos and games without any screen tearing, audio sync issues.

  • Flash should be installed by default and work perfectly for all the major sites for HD video (dailymotion, youtube, iPlayer and any other popular video sharing sites that users might want to access..)

  • If you have accelerated video decoding hardware, it should be used by the media players and flash (be it VDPAU, XvBA, VA API or even an OpenCL based system)

  • Networking should work flawlessly, without kernel panics and sporadic disconnects. All of the following should work and should be configurable in the UI in as intuitive as a way possible: WiFi a/b/g/n, Ethernet, Bluetooth, all common VPN protocols

  • 'Evil' protocols should be licensed and installed by default. An Ubuntu installation should support playing DVDs, BluRays, h.264 videos.

If anyone who can do anything about it reads this post, I think it's important we remember to focus on the present. Ideally in the future, Flash support, reading .docx files, running Windows apps and so on won't be an issue. For corporate installations, more specific problems like accessing SharePoint sites and running more esoteric apps are bound to come up. Unfortunately, at the moment these issues are of critical importance and can be the deal breaker for someone considering a migration to Linux. We can't expect potential users to change everything they're used to overnight for something that might not stick.

The easiest way to get people to move will to be reduce the cost of their investment in a new operating system, even those nominally it's price may be free. This includes releasing our beloved open source software for Windows so they can switch over bit by bit. However, some people fear that this means that Windows users won't have any Killer App incentive to switch to Linux, but that's not what we need to beat it. To beat Windows, Linux only needs to be able to do everything that Windows does and yet still be cheaper, and not tied to a specific vendor. Everything else is a bonus, and most users probably won't care about them when trying to evaluate a decision to migrate.

That's it for now.

Sunday, 1 November 2009

Windows 7 Problems

Windows 7 has been hailed as a kind of Vista done right. So far my experience with it has been rather poor... worse than Vista, in fact. Today my hard drive failed. So I got it replaced and put my shiny new Windows 7 Pro disk in. After an unexpectedly long install of 45 minutes, I was up and running with Windows 7. The first thing that appeared when I logged in for the first time (before I had even clicked anything) was an error. Great start!

1 update failed to install Code 80070103: Windows Update encountered an unknown error

Okay well, I'll ignore that for now, bigger fish to fry. It was displaying my graphics (plugged in via HDMI) with low quality text and an under-scan black border, and it wasn't outputting sound. I got the latest drivers for my ATi card and rebooted. All working, sound playing. I adjusted my under-scan with the Catalyst Control Center and changed the colour profile to RGB Full. I set my interface size to medium as I'm using it on a TV, which is a nice additional feature, logged out/back in and now it was usable! Time to get onto the other problems..

Looked at the Windows Update again, saw that it was trying to install a couple week old ATI driver (that was what caused the error on first boot), so I unticked it and ran the rest of the updates... and my network stopped working. Windows Update had installed a 3 year old (!) NIC driver that apparently wasn't compatible with either Windows 7 or my hardware! I installed the correct NIC driver using USB pen, rebooted again. Okay, it all seemed to be working now.

I set it on installing some stuff and went to watch TV.... but I heard the system turn off a short while later. It had put itself to sleep. Annoying. I went to turn it back on and rather than turning on, it died. First BSOD! A new record, I think. I've only had Windows 7 installed for a few hours and it's cocked-up twice and crashed once. Not a great start, to be honest.


Problem signature:
Problem Event Name: BlueScreen
OS Version: 6.1.7600.2.0.0.256.48
Locale ID: 2057

Additional information about the problem:
BCCode: 7a
BCP1: 0000000000000020
BCP2: FFFFFFFFC000009D
BCP3: FFFFFA8006333078
BCP4: 0000000000000000
OS Version: 6_1_7600
Service Pack: 0_0
Product: 256_1

Saturday, 28 February 2009

What I believe [controversial?]

I'm entirely atheist and I don't believe in human souls or absolute morality. I consider meta-physics to be an oxymoron. I think any religious belief is harmful in the modern world, no matter how nice and harmless it appears on the surface. I reject free will, beyond uncontrollable randomness, and I think of humans as merely a special type of computer. I'm a strong 'believer' in scientific method as a general process for working out the nature of the universe, at least as far as I believe that what I think I'm observing is an appropriate representation of reality.

I hate human beings, physically. Our bodies are terrible devices and should be supplemented with as much medication and technology as possible, until we can move our brains entirely as software onto an intelligently designed and crafted piece of technology.

I'm pro-choice at any stage of pregnancy. I support euthanasia. I support completely unrestricted freedom of speech. I support the right to speak anonymously. I am against censorship of any kind except in special cases of national security, where otherwise people's lives would be threatened, and even then, it must be declassified as soon as possible. I support full legalisation of gambling, prostitution, drugs and other vices, but with government oversight to ensure it's performed responsibility. I am against complete bans on being able to generally acquire guns, knives, lockpicks, chemicals, radioactive materials, needles, etc. and I think that all prescription drugs should be available over the counter, subject to similar oversight as currently illegal drugs. Whether you are a woman, man, gay or straight should not be a direct basis for discrimination. Religion should be entirely seperate from the government and laws. The school curriculum should not be directly influenced by government, religion or commercial entities. Health care should not be controlled by commercial entities.

I don't think the government should give you money or housing if you don't work, even if you have children, unless you're disabled to the point you simply cannot work. Instead, if you can't find work, I think the government should give you money to do voluntary work or fund a company to put you in an apprentiship scheme. In these cases, child care could be provided by the government. If you can't look after your kids even with all this help, you should lose your children as you're a bad parent. Begging should be illegal.

I support some form of direct democracy, and think that technology should be used to facilitate maximum government transparency. I support enhancement of consumer protection laws. I think that we should strive to recycle as much as possible, and use as little energy as possible, where it doesn't impact significantly on our lifestyle. Distributed power generation would be cool, as would vertical farming and self-sufficient communities and housing.

I don't think anyone should thank someone who doesn't deserve it.

Over the last few years, I've taken a lot of flak for my fairly unusual, and sometimes extreme, views. I'm not going to defend my view here, but my views do evolve over time and are subject to change in the future if it is brought to my attention in some way that my 'model' has some problems. If you think I'm evil, it's perfectly okay to tell me so via email or comments, and I'd probably not disagree (but I wouldn't agree either).

Monday, 2 February 2009

Network security counter-attack

Apparently, it's against computer security laws to perform counter-attacks on people who try to attack your network. I think that, not only should it be legal, it should be considered a moral imperative, within certain limitations. We should apply similar laws to counter-attacks that we do to defending one's self in the physical world; use of excessive force like wiping their hard drive is illegal, but a counterattack to merely disable/disinfect the computer is okay.

The fact that we can't do anything to counter-attack botnets only facilitates extreme growth and increase in power and resources available to their operators. If every computer on an ISP was watching out for damaged computers and would immediately attack them to remove their ability to spread the virus, it'd be a lot more difficult for viruses to spread.

Although given botnet authors determination, perhaps we'd end up with the computer equivelant of a superbug ... like iMRSA or something, and be unable to kill it. :)

Sunday, 14 December 2008

Used Video Games

Used video-game sales have recently been causing quite a controversy throghout the industry.

http://kotaku.com/5109646/recession-used-games-prices-and-choices

Personally, I think it's stupid to put restrictions on the used market. The right to resell something you own is a very important part, not just of the video game market, but of all intellectual property and physical property markets. The ability to sell something you purchase adds a large amount of value to the product in the first place. If you had to buy everything you own and couldn't sell it, not only would you have less money to spend, and consequently buy fewer products, you would also have less incentive to spend money on that product in the first place. You might decide that it's better value to go to the cinema instead. Note that this rant/argument is coming from someone who doesn't sell their used video-games. I naturally horde them for some reason. Nor do I ever buy used games.

One thing that bugs me is that everyone has to deal with used sales, not just game manufacturers. In a lot of ways, the used car market is almost as important as the new car market. Of 15 drivers in my family, 12 have never purchased a new car. Even the three who have purchased a new car have also purchased used cars. Books, consumer electronics, movies, furniture,... all of these have a large second hand market, and to the best of my knowledge, they're not actively fighting it. Cars and many consumer electronics devices, like games, have a huge initial R&D investment compared to individual production cost, yet anyone suggesting to ban used car sales would be laughed away.

Perhaps, rather than fighting used sales from a legal standpoint, they should actually make people not want to sell their games. Putting decent multiplayer in, or producing interesting games with very high replayability value will be enough for most people to hang onto them if they liked them. If they keep patching, adding new content, I wouldn't want to get rid of the game because I know I'll come back to it in the future.

Alternatively, maybe the video game producers should fight Gamestop and other used-game sellers with fire. If they offer to buy video games back from players for more money than Gamestop, or offer new games at a reduced price in exchange for a used game, they would probably begin to successfully fight used video game sales without actually killing alternative methods of offloading your old games (eBay, etc.). Our local Ford dealership will cut like £1000 off the price of a new car if you trade in any functioning car.
Video game produers can moan and whine about Gamestop for eating their profits but I don't see them doing anything to try to combat it other than trying to make it illegal.

I actually support making it a right to be able to re-sell digital licenses. If I buy £20 worth of downloadable content for a game, and sell it, I should be able to sell the downloadable content licenses too. Hell, if I buy a digital movie/game, I should be able to sell it on eBay.

Monday, 24 November 2008

Microsoft are killing PC gaming

The more I think about it, the more I believe Microsoft are intentionally trying to kill PC gaming. I first thought about it when I heard that their Windows successor might be .NET only. As time goes on, I keep finding more evidence toward the idea that Microsoft are intentionally destroying PC gaming.

Let's look at the evidence:
  • .NET released 2002, Xbox 360 released 2001. Microsoft trying to position the 360 to take disaffected PC gamers?
  • Vista is 10% slower than XP on average for video games, .NET for game programming introduces a ~30% performance hit. This translates to a Vista+.NET peformance hit of 37%.
  • Microsoft apparently plan to release a .NET-only operating system as a successor to Windows, and have been implementing lots of .NET-only capabilities on the PC. This means that game developers aren't going to be able to take low level control over the hardware for better performance and flexibility.
  • Microsoft 'XNA', the .NET game programming API they're targetting at indie/student developers only supports 360 features, such as Windows Live, Xbox 360 controllers, DirectX 9. A sign of lockin to come for their general purpose game development APIs? Getting them used to the 360 for when they learn a lower level API?
  • Gears of War 2, Halo 3 are Microsoft platforms biggest titles and they are 360 exclusive.
  • Even Microsoft admit they're not treating PC gaming well.
  • Microsot's "Games for Windows" branding seems to be implying the games should support the Xbox 360 features (controller, Live, etc.) and requires certification. This pushes up the cost of developing PC games to 360 levels, so there isn't even an advantage for AAA game developers.
Sure, you might argue that .NET is largely fast and flexible enough for PC gaming, and Microsoft are simply recognising this, but there will always be a subsection of game developers wanting to exploit the hardware's highest capabilities. Hardcore gamers will always a few extra FPS from their expensive hardware investment. Simulation designers will always want low level hardware control for their custom input hardware, as well as every last drop of performance for better physics simulation. Some may even have specific requirements such as real-time processing and memory management garauntees that .NET is almost impossible to provide by design. Also, PC developers as a whole tend to try to avoid platform lock-in, even if they only intend to ever release on one platform. Call it not invented here syndrome or whatever you like, but the fact remains, game developers (indie particularly) on the PC generally have a whole plethora of non-MS, .NET incompatible tools that they use for various reasons, from price to cross platform support.

"But wait.. Hardcore gamers? Simulations? Come on, that's like 2%-5% of the modern gaming market!" True. Though it is a substantial part of the PC gaming mindshare that will never move to a 360. The PC just the only platform that provides them the flexibility they require. I'm sure that Microsoft are aware of this.. I think they just decided to ignore it. They likely assume it's an unimportant sector of the market, and hardcore gamers will probably eventually migrate to the 360 if they don't have a choice any more.

But why would Microsoft want to do this? Of course, it's to lock players and developers alike into their 360 platform, which unlike the PC, is completely under their control, and doesn't support 'communist' interfaces like OpenGL or operating systems like Linux. Microsoft appear to get itchy and nervous whenever they realise there's a market that they don't totally dominate, and release something to break into it with varying levels of success (see Zune). Bill Gates said it best, when he saw a Microsoft computer on every desk in the future. Mirosoft's vision has no room for competition.

Rather than just ranting about the unfairness of it all, I quite frankly can see an upshot. If Microsoft decide that the 360 has taken off well enough and they decide to drop the PC gaming market, it isn't just going to disappear. Linux is a very capable OS, and has already been supported by some of the biggest names in the industry, such as Epic, id, Blizzard. Industry-recognised simulations often already have a Linux version, such as X-Plane. Many have expressed interest in Windows-alternatives, such as EA flirting with the GPL and releasing games for OS X, Blizzard supporting World of Warcraft on OS X, however with the notable exception of Valve who hate anything non-Windows (see Gabe Newell's employment history). Hardware manufacturers such as Asus and Dell are expressing more and more interest in Linux as time goes on, undoubtedly due to the extra customisability an open-source operating system can provide. On the whole, companies do not like being dependent on a huge mega-corporation that could probably hold any dependent company/government hostage at any time they wanted.

When the day comes that Microsoft drop PC gaming, it will not die; it will simply move to alternative operating systems. Indie developers are already reaping the benefits of open-source. World of Goo was developed by a team of 3 at its peak, and used lots of open-source technology. It is now one of the highest rated PC games released, despite being very low budget. While still in beta, they are going to release a Linux version. Windows currently has the highest number of tools for game development, but the open-source community, having a very fast turnaround speed, could rise to the challenge of retooling an ailing PC game market in mere months. Cut down games console operating systems have been the target for hardcore gamers for years, and services.msc has been their blade. Open-source would bring about the capability to create a specialised, low leve gaming system far more easily than with Windows.

The dynamics of the PC game market are changing. Fewer people than ever are buying high-end titles on the PC, and more console hardware is being purchased than any other generation since the dawn of PC gaming. I think it's unlikey that PC gaming will ever have as much momentum as it once had, because consoles are simply far more accessible to general consumers. It may be maturing, but PC gaming will never die.