Language Selection

English French German Italian Portuguese Spanish

M$ Announces DRM-Oriented Programming Language

Filed under

No programming language is complete without its own set of paradigm-enriched buzzwords, and that's exactly what Microsoft has promised with its latest gift to the programming world, code-named Freedom Unencumbered (or FU for short).

Some of the innovative buzzwords to be introduced by FU include "rights-oriented programming", "freedom-unencumbered development", "need-to-know-basis code reuse", "plug-and-pay interfaces", and "license-centered software distribution."

As these phrases suggest, FU is built from the ground up around cutting-edge DRM (Digital Restrictions Management) techniques to prevent unauthorized code reuse and idea theft.

Boasted a Microsoft product manager, "Just as C# brought object-oriented programming to the masses, FU will deliver rights-oriented methods to everyone. At a fundamental level, programming is all about balancing copyrights, licenses, freedoms, restrictions, royalties, and rights. FU makes it easy to handle all of these issues."

While the programming language is still in Beta (translation: Vaporware), Microsoft has made preliminary documentation available under its standard you-must-sell-your-soul-first license agreement (patent pending). Not wanting to agree to these terms, the Humorix Vast Spy Network(tm) was still able to obtain some whitepapers using our standard digging-through-trash-barrels-behind-the-Microsoft-campus method (patent not pending).

From what we can gather, every block of FU code must include a DRM class that spells out all of the copyrights, patents, and trademarks that the owner asserts over the code. It also states exactly what the end-user can and can't do (with emphasis on the "can't" part).

The language itself is mostly a collection of keywords and syntactical sugar that handle all of the DRM aspects. For everything else that involves actual programming work, the run-time engine merely outsources it to the Windows system libraries -- but only if all of the relevant DRM restrictions are met.

Here's the obligatory example of a Hello World program in FU:


drm class HelloWorldEndUserLicenseAgreement {
copyright {
covers: everything;
owner: "Bob R. Schmuckley, 313 Adam Smith St.,
Redmond, Washington";
all-rights-reserved-by-default: yes;
eula {
allow-redistribution: no;
allow-benchmarks: no;
allow-backup-copies: no;
total-allowed-installations-per-license: 1
agreement-method: click-wrap-license;
automatically-generate-license-text: yes;
warranty {
provided-as-is: yes;
warranty-of-fitness-for-a-particular-purpose: none;
warranty-of-merchantability: none;
warranty-of-title: none;
user-must-waive-all-rights-to-sue: yes;
enforcement {
reserve-right-to-hold-unannounced-audits: yes;
output {
restrictions-on-program-output: none;
// We'll be generous here
fees {
payment-scheme: pay-per-use;
charge: 0.10;
currency-accepted: us-dollars;
payment-methods-accepted: credit-card;
require-user-to-prepay: yes;


include "helloworld.h"
require HelloWorldEndUserLicenseAgreement;

not-public static void Main() {
System.Console.WriteLine("Hello, World!");

Ordinarily, most Hello World programs spit out their payload and then successfuly exit. But with FU, it's a little more complicated. Here's the process followed by the run-time engine:


More in Tux Machines

Android Leftovers

Slackware Live Edition – Beta 2

  • Slackware Live Edition – Beta 2
    Thanks for all the valuable feedback on the first public beta of my Slackware Live Edition. It allowed me to fix quite a few bugs in the Live scripts (thanks again!), add new functionality (requested by you or from my own TODO) and I took the opportunity to fix the packages in my Plasma 5 repository so that its Live Edition should actually work now.
  • Updated multilib packages for -current
  • (Hopefully) final recompilations for KDE 5_15.11
    There was still some work to do about my Plasma 5 package repository. The recent updates in slackware-current broke several packages that were still linking to older (and no longer present) libraries which were part of the icu4c and udev packages.

Leftovers: Software

  • Resuming work on Yokadi
    A few weeks ago we started working again on Yokadi, our command-line oriented, todo list. We are now finally ready to release version 1.0. This new version fixes a few bugs but does not bring new features. This lack of new features is actually a conscious decision: we wanted to make changes under the hood, and doing changes under the hood at the same time as adding new features is often a recipe for disaster.
  • remctl 3.10
    remctl is a simple and secure remote command execution protocol using GSS-API. Essentially, it's the thinnest and simplest possible way to deploy remote network APIs for commands using Kerberos authentication and encryption.
  • rra-c-util 5.9
    A minor release of my C utility library, including some changes required for the previous release of pam-afs-session and the upcoming release of remctl.
  • Feeding Emacs
    For the past fifteen years, I have been tweaking my ~/.emacs continously, most recently by switching to Spacemacs. With that switch done, I started to migrate a few more things to Emacs, an Atom/RSS reader being one that's been in the queue for years - ever since Google Reader shut down. Since March 2013, I have been a Feedly user, but I wanted to migrate to something better for a long time. I wanted to use Free Software, for one.
  • ELKI 0.7.0 on Maven and GitHub
    Version 0.7.0 of our data mining toolkit ELKI is now available on the project homepage, GitHub and Maven.

Leftovers: KDE

  • Br-Print3D inside KDE:FINALLY
    Well, after a few issues, i finally push the Br-Print3D code to the git on KDE Playground.
  • Kubuntu: Ubuntu: The vote for UCC is in. I won?!?!
  • Kubuntu: KDE: Munich Hackathon KDE CI work and Kubuntu workflow
  • Going Wild With Animation
    We knew the animation plugin was something artists all over the world were really waiting for… What we hadn’t expected was the flood of cool little animations that suddenly appeared everywhere! Let’s take a look at a selection of them! And in another way, the release also helped find some issues. First: if onion skinning doesn’t work for you, check that you’re not trying to onion skin a completely opaque layer. Yes — white is also opaque! The best setup: create a white background layer, but paint on a transparent layer above that. That’s Krita’s default setup in any case. For some people with some combinations of graphics cards and drivers, the Instant Preview doesn’t work. There’s not much we can do about that, but we do need your reports! And finally, a couple of real bugs surfaced, and we’ll look at that next.
  • KTorrent KF5 port
  • KTorrent Ported To KDE Frameworks 5
    It's been a year and a half since the original KDE Frameworks 5 release and more KDE applications continue to be ported over to this modern framework alongside Qt5. The latest to be ported over is KTorrent.
  • Qt Creator 3.6 Up to RC State, Brings Lots of Goodness for Qt Developers
    On Thanksgiving Day, Eike Ziller of Qt writes about the first RC (Release Candidate) version of the upcoming Qt Creator open-source and cross-platform IDE (Integrated Development Environment) designed for the needs of Qt developers.