Guess what? That's bunk. They haven't infected me. I'm merely using a library function in the way that library functions are meant to be used: they're an API, and you link to them. It is of no consequence whether it's statically linked at link/load-time, dynamically linked at start-up, or accessed at run-time during execution via any one of myriad forms of RPC. It's API only, not material inclusion. APIs aren't viral.
–Tom Christiansen, from an Ask Slashdot forum.
I'm not sure how I come down on this issue. The basic one seems to be that some people feel the GNU GPL is too viral, too restrictive of an Open Source license. Others feel that the Artistic License is too liberal, allowing one to appropriate code and resell it in a proprietary product. And who knows how these things interact.
I had a similar problem when I released my first Open Source package, mod_litbook, which is an Apache module, with its own license. I wrote to the FSF asking about this, but never did hear back from them, because I did want to release it under the GPL, but didn't know how it would work with the Apache License. I went ahead anyway.
Basically, I would like for a license to read (my own comments [appear as such]):
I, Sean Conner, own the copyright to this program [assuming I wrote the program of course] but you are free to fold, spindle or mutilate this program for your own use.
You are free to redistribute your changes as long as your changes also fall under this license. [I don't want to restrict anyone from using the code, improving upon it, and giving back. Or even using for their own uses]
If you wish to incorporate this program or parts thereof into a commercial software package, let's talk. I want a piece of the action. [but let's face it—if you are going to make money off my code, I want my fair share. I gotta eat too you know]
I suppose you could say I want my cake and eat it too, but at heart, the idea that someone can come along, use what I created to make obscene amounts of money of which I don't get anything, does make me pause.
Since I seem to be quoting quite a bit from the Slashdot discussion, just read it.
I'm going to have to work on more details of this if I'm going to to this. The internal anchor names will have to change. Since I'm currently using SSI for this, I just realized it's not going to work. Also, while I have an idea for how I want to store the data, the main problem is one of creating the daily update page.
I like the format for weblogs where a few days worth of entries exist on the main page, but the storing of each day's entry is leading me more towards a journal like layout. If I didn't want to have several days worth of entries on the main page, then there wouldn't be a problem.
Also, doing this weblog/journal experiment is making me wish there was a better way of doing styles than there is currently. It would be nice if all browsers (including Lynx) supported CSS, or XML and XCSS or whatever it's called. I suppose that's what PHP is for. And in that limited case, PHP might be a good compromise. But I still don't like PHP all that much. Can't say why, other than a case of Not Invented Here Syndrome.
Besides, I feel that the work I did on the Electric King James is relavent here—namely a better way of referencing content.
A few years ago I identified why I dislike WEB, and it came down to it failed my “1 am scenario.” Namely, that I'm a maintenance programmer, it's 1 am and I have this bug I have to fix yesturday and I'm staring at this huge mess of a file. It came down to a mixing of What (an interface or data description), why (the documentation) and how (the actual code). Very ugly. I solved that problem (at least for me) by separating all three out (what are the header files, how are the source files, and why is the documentation written).
But a week or two ago, I realized that what I've been trying to achieve with web-based programs can be solved by a similar separation—only in this case, it's not what, how or why, but data, definition and display (or substance, structure and style). HTML is an ad-hoc mixture of definition and display with data. I can't comment on SGML, not knowing it well enough, but XML seems to be a strict data and definition mixture with display being left out (or left to the style sheets). That's okay, but it still makes transclusion difficult. That's not saying it can't be done; it has, to some degree. But if the data and definition were separated, it might make transclusion easier.
Although some might say too easy.
Anyway, the reason I'm going on about the separation of data, definition and display is to help me at least, organize what is amounting to, a large amount of random data. And in a way, my mod_litbook is related. Certainly, the data, definition and display are separated, but it still isn't a generalized solution yet. But I'm getting there. I think I'm on the right track here.
I'm also going to have to deal with META tags and whatnot.
More on V2_OS. I wrote to them yesturday telling them the problems I encountered. I got the following reply:
V2_OS currently assumes a hard disk eventhough it doesn't do anything with it (it only looks at it to find partitions). This is a thing that should be removed…
It is completely harmless to run it on any PC, ant [sic] won't touch your HD's. The only commands you should not use is format and syscopy.
Even the Linux bootloader doesn't check for the existance of a harddrive!
I noticed they had a newer version of the disk image, so I downloaded that and tried it. Same result as two days ago. So I figure, “Hey! I know assembly. This is written in Assemly. I can takle this. I can crack this! Or rather, fix this!”
I can say, yes, it's written in Assembly. Not very good Assembly. Or rather, it looks like it was written by someone under the mistaken notion that the 80x86 line is RISC-like in nature. There are many sequences like:
Jcc somewhere NOP NOP
On several RISC CPUs (like the MIPS) the instruction following a jump of control is executed; it's called the branch delay slot. The author here (and I'm not quite finished with the bootsector!) seems to think the 80x86 has a branch delay slot. Then there is:
MOV AL,[var] INC AL MOV [var],AL CMP AL,somevalue
Grating. Come on … it should be:
INC byte ptr [var] CMP byte ptr [var],somevalue
But there are a lot of sequences where data is loaded into a register, manipulated (simply) and stored back out to memory. Again, this is something common on RISC like CPUs, but the 80x86 line can manipulate memory directly, without having to load into registers.
Now, this thing claims to be the fastest OS for the 80386 and higher. I'd like to see it go against something like QNX.
UPDATE: The code is so convoluted and poorly structured that I'm giving up. It's not at the point where it's worth my time to fool around with this, but if the harddrive check is removed, I'll take a look at it again.
Some restaurants still use spindles. They're the nasty looking sharp metal spike next to the cash register they use to stick the register receipts or checks to store them until closing. To “spindle” refers to this action.
WEB does not refer to the World Wide Web, but instead to a way of writing software developed by Donald Knuth. It allows one to mix source code and documentation into one file, at the same time allowing the programmer to write the program in an arbitrary order. There are two auxillary programs used, one to extract the source code in the order required by the compiler, and another one to product hard copy output (at least, that was the original intent).