The Path to Total Freedom - a thought experiment

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
User avatar
Synapse
Posts: 6
Joined: Tue Sep 08, 2015 6:53 pm

The Path to Total Freedom - a thought experiment

Post by Synapse »

What one osdevver need to do, to create a truly free OS?
By free, I don't just mean money, but legal obligations. We all know those free licenses, MIT, GPL, Apache, but by using them, you inherit some legal obligations, as in some derivatives should be free too.
In the real world, it's logical, useful, and we're all grateful for those licenses, and the people who create programming material, and share them under those licenses. But a thought experiment came up to my mind: What should I do, to achieve true freedom?

To be hundred percent sure, that you've achieved total freedom from money and legal obligations, you should
1. Create your own programming language, using another one.
2. Write your own compiler for it.
3. Rewrite your compiler using your own language.
4. Develop your OS using that language.

Note: This came up to my mind, when I started to develop some PIC handling in Rust. Someone more adequate to that task wrote one, and it's under GPL, but basically it would be illogical to write a different one, because PIC, and Interrupt handling doesn't give much space to that, that's how it works. So does the "General Public" owns all PIC-related stuff in Rust from now onto forever, can the license apply to such a thing? That's what lead me to this true freedom question.

Discuss.
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: The Path to Total Freedom - a thought experiment

Post by iansjack »

Why stop there? Why not develop your own processor and peripherals too.

That makes as much sense as creating your own programming language and compiler. Using C and GCC (for example) places no legal or monetary restrictions upon your program. The same goes for Rust or any other GPL compiler.
User avatar
max
Member
Member
Posts: 616
Joined: Mon Mar 05, 2012 11:23 am
Libera.chat IRC: maxdev
Location: Germany
Contact:

Re: The Path to Total Freedom - a thought experiment

Post by max »

iansjack wrote:Using C and GCC (for example) places no legal or monetary restrictions upon your program. [...] or any other GPL compiler.
^ This. See for example the LGPL appendix of GCC license.

I would for example say that the core of my OS has barely any legal restrictions. Only thing is musls math library that I use as a part of my C library.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: The Path to Total Freedom - a thought experiment

Post by Brendan »

Hi,
Synapse wrote:What one osdevver need to do, to create a truly free OS?
By free, I don't just mean money, but legal obligations. We all know those free licenses, MIT, GPL, Apache, but by using them, you inherit some legal obligations, as in some derivatives should be free too.
In the real world, it's logical, useful, and we're all grateful for those licenses, and the people who create programming material, and share them under those licenses. But a thought experiment came up to my mind: What should I do, to achieve true freedom?
In my opinion; the obligations imposed by some licenses (e.g. BSD, MIT, Apache) are relatively insignificant; and obligations imposed by compatibility are far more significant.

For one of many examples; poor ancient language design (e.g. how awkward it is to return multiple values from a function in C) paves the way for poor work-arounds (e.g. having "errno" because it's too awkward to return the cause of an error from a function directly) which leads to even worse work-arounds (abusing thread local storage as a hack to make "errno" usable for multi-threaded software); where to actually fix the problem and create a clean programming environment that isn't crippled by "historical idiocy" you have to replace the language, its library, and all software that used either.
Synapse wrote:To be hundred percent sure, that you've achieved total freedom from money and legal obligations, you should
1. Create your own programming language, using another one.
2. Write your own compiler for it.
3. Rewrite your compiler using your own language.
4. Develop your OS using that language.
In my case (where "plain text as source code file format" is part of the historical idiocy I'm trying to fix) this isn't enough.

I tried to design and create my own source code file format, but to avoid writing a full IDE for another OS (a huge amount of work that would've been useless/discarded later) I started with a "pre-translator" to convert plain text into my source code file format. What I discovered is that my mind is cursed - even when deliberately trying to avoid obligations imposed by "plain text as source code file format" I still made design decisions (in both the language and in my source code file format) that were tainted by "plain text".

Mostly what I'm getting at here is that (in addition to the obvious problems of replacing languages and all software) there's a less obvious problem, which could be described as "breaking through a mental barrier of preconceived ideas originating from existing software".

Note that if you write your own code in your own language without ever even seeing anyone else's code, then you still have to worry about infringing patents. For this reason I'd be tempted to say "true freedom" is unobtainable.


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
onlyonemac
Member
Member
Posts: 1146
Joined: Sat Mar 01, 2014 2:59 pm

Re: The Path to Total Freedom - a thought experiment

Post by onlyonemac »

Sometimes for me I think about developing a computing platform that is completely independent of all other platforms. So that means, designing my own CPU, writing my own operating system for it, defining my own filesystems, file formats, networking protocols, and so on. I don't intend on doing this, but sometimes I think about it when I get frustrated at "big names" driving people to upgrade or change their computing systems in some way just because they feel like it (as an extreme example, Microsoft "forcing" people to upgrade their operating systems, and by implication their hardware, or being "forced" to upgrade one's web browser regularly because of rapidly-changing web standards).
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.

Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: The Path to Total Freedom - a thought experiment

Post by iansjack »

Nobody can force you to upgrade. If you think your computer and software are good today they are just as good tomorrow. So if you don't want the improvements provided by new hardware and new software, just stick with the old stuff. A 5250 is as powerful today as when it was first made.
onlyonemac
Member
Member
Posts: 1146
Joined: Sat Mar 01, 2014 2:59 pm

Re: The Path to Total Freedom - a thought experiment

Post by onlyonemac »

iansjack wrote:Nobody can force you to upgrade. If you think your computer and software are good today they are just as good tomorrow. So if you don't want the improvements provided by new hardware and new software, just stick with the old stuff. A 5250 is as powerful today as when it was first made.
I can't say I appreciate your sarcasm. One is forced to upgrade simply because the rest of the world moves forward (driven mostly by "big name" companies) and one needs to keep up with it. I still can't get my head around the fact that I installed an *up to date* Linux system a year ago, and today the supplied browser renders about 10% of pages incorrectly. That's in one year, and already I've had to upgrade my browser. I hate having to upgrade my browser every three months, bringing with it subtle but significant interface changes, just because Google can't decide what version of CSS they want to use for their Android developer website (it's not like they even changed the layout, just "updated" the code because basing responsive style sheets on standards more than three months old is just so uncool for someone as big as Google). And we had to buy a whole new computer a few years ago because the Windows XP computer didn't have enough RAM to run Windows 7, and Windows XP didn't support a newer version of Internet Explorer and there were so many pages that displayed badly that we had to upgrade the entire operating system, and thus the entire computer, just to be able to read a news article.
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.

Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: The Path to Total Freedom - a thought experiment

Post by iansjack »

No sarcasm was intended. Please don't be so over-sensitive as to suppose that if someone presents an alternative point of view they are being sarcastic.

I was simply stating my belief that people upgrade not because they are forced to but because they want more out of their computers. But if you are happy to stick with what you have got, then do so. I haven't upgraded my computer hardware significantly for at least 5 years (although I did buy an SSD because I wanted better performance - a deliberate choice, not something foisted upon me) and the only updates that I have done to software have been free ones.

The browser problem is something else entirely - and designing your own computer and writing your own OS is only going to make it more of a problem. Again, it is not forced upon us by big business but is in response to user demand; we want more capable web pages. But I've not had to upgrade my hardware, or pay for new software, to take advantage of newer web standards.
User avatar
TightCoderEx
Member
Member
Posts: 90
Joined: Sun Jan 13, 2013 6:24 pm
Location: Grande Prairie AB

Re: The Path to Total Freedom - a thought experiment

Post by TightCoderEx »

Synapse wrote: What should I do, to achieve true freedom?
Digress from all known methodologies and development paradigms. This means not using ELF, FAT or anything that is GPL'd, or has any sort of licencing component. Maybe even replace BIOS and/or UEFI.

This is my focus of attention and therefore there is only one program in my toot box, NASM and all I do is produce flat binary files. Will there be some means by which to link or utilize a relocating loader, maybe, but it will be of my own design. Is it my intention to be unique amongst developers, no, it is just simply a hobby for me and algorithm design and learning the instruction set and architecture is.

The point I'm making here is that when I sit back and think about it, there will be zero licencing restrictions of my work as from my perspective it will be unique. I'm sure from others points of view the first word they'd think of is unorthodox, maybe even bizarre.

Maybe that's the Achilles' heel in developing an operating system that has some sort of compatibility with M$ or Nix. From what I understand, Microsoft owns fat.
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: The Path to Total Freedom - a thought experiment

Post by iansjack »

Microsoft holds patents on some aspects of FAT only; all relate to long file names. So don't avoid FAT because of licensing concerns. Avoid it because it is a poor file system.
willedwards
Member
Member
Posts: 96
Joined: Sat Mar 15, 2014 3:49 pm

Re: The Path to Total Freedom - a thought experiment

Post by willedwards »

Synapse wrote:What one osdevver need to do, to create a truly free OS?
By free, I don't just mean money, but legal obligations. We all know those free licenses, MIT, GPL, Apache, but by using them, you inherit some legal obligations, as in some derivatives should be free too.
In the real world, it's logical, useful, and we're all grateful for those licenses, and the people who create programming material, and share them under those licenses. But a thought experiment came up to my mind: What should I do, to achieve true freedom?
We must have very different definitions of 'freedom'. See http://www.gnu.org/philosophy/free-sw.en.html

We must also have very different understandings of licenses such as MIT and Apache as these are examples of licenses that don't specify that derivatives should be free too.

In fact, not specifying a license is one way to ensure that it is in no sense 'free'. See http://choosealicense.com/
User avatar
Synapse
Posts: 6
Joined: Tue Sep 08, 2015 6:53 pm

Re: The Path to Total Freedom - a thought experiment

Post by Synapse »

MIT: "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."

Apache: "You must give any other recipients of the Work or Derivative Works a copy of this License;"

If I want to sell my OS (it does nothing important yet, just boots the machine up, and check the memory) I would actually have more characters in redistributed licenses, than in the code itself, because I followed some tutorials, and tried some example codes. If I ever got to fire up a working shell, filesystem, and whatnot, it could increase exponentially. While the question remains a theoretical one, and I think nobody ever checked these hobby OS-es for patent infringement (notable exception's being the ReactOS) somehow I prefer to use clean reimplementations because of this phantom legal wieght on my shoulders.

Your answers are enlightening and discouraging at the same time, but what can a hobby OS developer do? What would be the steps to at least reduce this legal weight?
onlyonemac
Member
Member
Posts: 1146
Joined: Sat Mar 01, 2014 2:59 pm

Re: The Path to Total Freedom - a thought experiment

Post by onlyonemac »

Synapse wrote:Your answers are enlightening and discouraging at the same time, but what can a hobby OS developer do? What would be the steps to at least reduce this legal weight?
Just have fun, write your own code where you're not comfortable reusing someone else's, and don't worry so much about legal issues. If you're copying someone else's code for your own personal project, and they've made their code freely available under their choice of licence, there's probably nothing to worry about. If you're writing your own code to implement something that's covered by patents or is non-open (e.g. NTFS), there's again probably nothing to worry about - ntfs3g has been around for years and so far Microsoft haven't managed to stop it (and it's perfectly legal, too, due to being a "clean room" reverse-engineer; if it was based on leaked documents from Microsoft and disassembles of the Windows kernel then that would be a different matter). Your project's probably not going to be so big that people start worrying about legal issues - there are more issues surrounding the code in various parts of a typical Linux operating system that a lot of people just turn a blind eye to anyway.
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.

Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: The Path to Total Freedom - a thought experiment

Post by iansjack »

Synapse wrote: Your answers are enlightening and discouraging at the same time, but what can a hobby OS developer do? What would be the steps to at least reduce this legal weight?
If you want to port or redistribute programs with your OS then of course you need to attribute them. But if you just want to use an editor, a language, and a compiler to produce your OS then there are no such requirements.
intx13
Member
Member
Posts: 112
Joined: Wed Sep 07, 2011 3:34 pm

Re: The Path to Total Freedom - a thought experiment

Post by intx13 »

"If you wish to make an apple pie from scratch, you must first invent the universe." And Sagan didn't even have to think about writing drivers for closed source hardware!
Post Reply