Funny thing about the Free Software movement -- while many of us care about Free Culture as well, it's taken ages for the FSF to recognise its legitimacy.
"While rms has given some support to free licenses for other works (game assets for free games being one example) this division is sometimes considered less important by advocates of free culture."Code describes computer instructions -- and other works do not. While rms has given some support to free licenses for other works (game assets for free games being one example) this division is sometimes considered less important by advocates of free culture.
My own opinion -- and this is quite sincere, because I think some might interpret it as sarcasm or being cynical -- is that the brain is a sophisticated, self-rewiring biological computer, and culture helps to alter our programming as much as psychotropic drugs or traumatic experiences do. This idea that "culture is software too" isn't something I invented, but it's the way I've felt for many years.
There are simple programming languages and there are esoteric programming languages, but just today I wrote a simple -- rhetorical programming language to make this point:
# % turn on/off printing # @ quit program # a, A cycle colour backwards # b, B cycle colour # c, C copy next variable value to following character variable # d, D move down most recent variable value # e, E toggle print default upper/lower (starts lower) # f, F move to 1, 1 # g, G get next character variable value # h, H append next variable value to following character variable # i, I set next variable to empty string # j, J fi # k, K if most recent variable value is true, do the following # l, L move left most recent variable value # m, M convert most recent value to uppercase # n, N convert most recent value to lowercase # o, O set next variable to 0 # p, P print most recent variable value # q, Q exit loop early (limited) # r, R move right most recent variable value # s, S turn off print default case # t, T set next variable to random number 0 to 99 # u, U move up most recent variable value # v, V set next letter to following character # w, W loop most recent variable value times # x, X mark end of loop # y, Y wait next value seconds # z, Z clear screen
"Not that I expect this language to catch on."Diogenes compiles verbatim-copying-only essays by Richard Stallman into non-free software. The only thing that makes this software non-free, is that the source code (the essays) are non-free. Therefore if the essays were free, the resulting program code would be as well. I know this isn't really very clever, but I did start laughing when I had coded most of the functions.
I like Logo, and I like languages inspired by Logo, so I wanted Diogenes to have some very basic Logo functionality. You can move up, down, left, right -- it draws as you move, you can cycle forwards or backwards with 8 colours including black, you can write a Hello World program, set, clear and append variables, and it has a conditional, loop and limited loop breaking function.
"%" toggles print output, "@" quits the program, and the rest of the commands are single letters. So for example, if we want to create a nice Hello World program, VAH sets the Variable A to H, and P prints the most recent variable set:
vahp
%bbvahpbvaepbvalpbvalpbvaopibap vawpbvaopbvarpbvalpbbvadp
if locolour < 0: locolour = 7 colour(locolour, 0) xy(locx, locy, locolour) for loop747 in range(figure('r', vars, 'n')): if locx > 0: locx -= 1 xy(locx, locy, locolour) locolour -= 1 if locolour < 0: locolour = 7 colour(locolour, 0) vars['r'] = '' lutog = 0 colour(7, 0)
"The line between written work and program code is probably thinner than most free software advocates would like to admit."Stallman's essays were not written for a computer to run, but for a person to put in their mind -- what they do with it is largely up to the person. On the other hand, POW camps have used forced written and forced spoken confessions in part to get the prisoners to convince themselves that they are guilty of the crimes they are accused of. The line between written work and program code is probably thinner than most free software advocates would like to admit.
Like with "real" software, you can "scan" this writing and it may not "run" in your own mind. You may find it is simply incompatible with your environment and setup. I've written plenty of things that did not convince the audience of anything at all. Maybe it was just too much work to "port" to their platform, or they decided to reject part of it and put the rest in mental quarantine.
All the same, these essays will compile to program code. If you have ever created a programming language specification before coding the actual language, then you've already written code for a language that doesn't exist yet. If we are all doing that, hopefully these programs can be released under a free license before they are turned into code -- or at least after someone turns them into code.
"If you have ever created a programming language specification before coding the actual language, then you've already written code for a language that doesn't exist yet."How would that work?
Some of the arguments made here are a little bit silly, though they are still inspired by a serious argument -- our culture needs to be free-as-in-freedom.
YOU WILL NOW CONCEDE THAT WORKS OF OPINION ARE ACTUALLY PROGRAM SOURCE AND SHOULD BE FREE.
Hey, it was worth a try.
Long live rms, and appthis = vars['a'] \n vars['p'] = app(vars['p'], appthis) \n if togprint: print lu(vars['p'], lutog) \n sleep(figure('h', vars, 'n')) \n locolour -= 1 \n if locolour < 0: locolour = 7 \n colour(locolour, 0) \n copythis = vars['k'] \n vars['i'] = copythis \n if type(vars['i']) == str: vars['i'] = vars['i'].lower()
⬆
Licence: Creative Commons CC0 1.0 (public domain)