hey, OP here, figured i'd clarify some things about this project:
1) yes, I realize this is going to be way harder than it seems, but I'm actually going to do my best to hopefully get a good user experience out of this and I'm easily preparing for this to be a multi-year effort, but I'm not going to give up right at the gate
2) Custom HALs were actually an option, up until very recently, since as of Windows 10, version 2004, the HAL is now statically linked into the kernel, meaning that if I wanted to use the AIC natively I'd need to write a patch finder that runs before the Windows kernel loads (This is what EfiGuard does for example to disable PatchGuard)
(Yes this is actually more tenable than it may seem, due to some undocumented policy files Windows is able to use, but I have already decided to hold off on this until after I get Windows working under the thin hypervisor)
3) HAL Extensions (for those unaware they are tiny modules that allow you to extend the Windows HAL with functions for non standard hardware) are not tenable at the moment since they're limited in the APIs they use
4) I am well aware that Windows is going to need a lot more help than just purely the interrupt controller, I'm currently trying to bring up the vGIC first since the distributor and redistributors need to be emulated and I need to bring up Project Mu first
5) as for the GPU, I'm way too far away from that being a concern to figure out the approach lol
if you have any feedback btw, please do feel free to comment it i'll try to address it as best as I can
yes I'll update the website theme soon enough, thanks to the commenter who remarked about readability.
May I suggest you don't license the work in a way that allows it to be commercialized without your explicit permission and handsome compensation to you and any other contributors. You'll need this to be sustainable and it'll be incredibly frustrating if a company de-facto hijacks the development and takes it in a direction you don't expect or want.
Oh but then half of HN will complain about how that's not truly open according to a dictionary definition thus automatically becomes untrustworthy and they won't touch it with a ten foot pole. (/s)
Jokes aside, technically I don't disagree on the "dictionary definition" thing there... but it's interesting how the current landscape has shifted and now more control for the developer starts to become a common interest between "hackers".
The original OSS licenses protected users (as in, final users) from predatory devs; nowadays, small devs and hackers talk in their forums about how to preemptively protect themselves against predatory users (as in, not final users, but other bigger devs that leech on other's work)
It doesn't look like we can say "licenses like AGPL". It's more that AGPL is basically the only one in that vein. Remove the A, if you please, but that's pretty much it in terms of variety.
On the other hand, reading HN over time I also got the idea that *GPL has been tried with the intention of avoiding abuse, and it failed several of those intentions. I now regret not having taken note each time I saw comments in that regard, for quick references.
But there are big cases, not only small comments spread over HN; I guess the stereotypical one is MongoDB, which tried the AGPL path and in the end was not satisfactory enough for them.
The problem is not with the GPL. The GPL is just as enforceable as any other proprietary license. The difference is that these amateur projects often don't have the resources to fight infringement.
I was addressing what seems to be an unfair criticism of the GPL, and not claiming that the license would help. In fact your comment reinforces the point - even a proprietary license wouldn't help with no legal backing.
You have a legal leg to stand on that some lawyer might potentially fight for you, that's still better than just giving up and surrendering your weapons.
You cannot have a "fully open" license which disallows commercial usage. Both the OSI and FSF definitions of "open source" and "free software" licenses would exclude such a license. Of course you can create a proprietary license which disallows commercial usage, but it won't be "fully open".
FSF-compatible licenses absolutely can exclude commercial usage, and software can be made simultaneously available under a separate (paid) commercial license if the authors wish. It's only the OSI that doesn't allow this.
> FSF-compatible licenses absolutely can exclude commercial usage
Can they? The FSF seems pretty strict on saying that commercial usage cannot be excluded.
> “Free software” does not mean “noncommercial.” On the contrary, a free program must be available for commercial use, commercial development, and commercial distribution. This policy is of fundamental importance—without this, free software could not achieve its aims.
> FSF-compatible licenses absolutely can exclude commercial usage
No, they can't, use-restricted licenses are non-free, by the FSF definition.
> software can be made simultaneously available under a separate (paid) commercial license if the authors wish.
This is true, but the Free license cannot be use-restricted, or it ceases to be a Free license (if the copyright owner, owing no obligation to any upstream licensor, does it, they could add the use restriction to a Free license, but it would by that act cease to be a free license; that violates Freedom 0.)
Hence the full circle to my original sarcastic joke. The OS definition serves a purpose of protecting users, even the bad ones, and maybe that worked when the "bad ones" where a minority with small impact.
But nowadays things have changed. The "bad ones" are big fish, and have enormous impact. A growing subset of devs now start looking elsewhere, and a plethora of non-OS licenses start to pop out. People still want to give their work for free, as long as it is not going to help someone else get rich while the original author doesn't see a cent.
One day, maybe, some organization will study the current landscape, and write a new set of definitions that are able to catch the spirit of this new situation. I guess it's just a natural part of how things evolve.
There is the Ethical Source movement, that aims to prevent use of software by bad people. The FLOSS community doesn't even have resources enough to enforce the widespread violations of copyleft licenses, so it seems even more unlikely that Ethical Source folks will be able to enforce their licenses. There are lots of other reasons for the FLOSS approach too.
It didn't really come across as a joke despite the /s, it seemed like an earnestly held opinion that is, TBH quite reasonable, although it isn't something I would agree with.
Read history guys. I even did a master thesis cf the two. The open source is against the free source by deliberating allow commerical software. Down vote you may, you cannot change the history. In fact learn seriously about that part, otherwise you miss the whole point of open source.
Well, whilst down voted let me repeat the thing - some Vp did not invent internet but he did let go of only education institute used that network. Now it allows commercial activities.
The mix is hard. The pure is ease. But without the mix and the complexity dealing with this, you do not have today open word of software and even internet.
And mix is hard. (And pure like free source is so pure it is a cult those days.)
I don't generally like restrictive licenses but in this case we're taking about running closed, commercial software on closed, commercial hardware. It makes sense to use a GPL to prevent one of those companies from taking all of that hard work and incorporating it back into their platforms for free.
Mine was just a lighthearted reflection on the issue, but in general I'm supportive of the copyleft ethos. And yes, in this case it would make a lot of sense.
Actually my first reaction was to think, "Why are Microsoft themselves not doing this job?"
I'll definitely take this into account thanks for bringing it up! Licensing is something I've thought about a bit before starting, right now since m1n1 (the hypervisor I'm iterating on) is MIT licensed for the most part, I'm inheriting that license too for my fork of m1n1 (i'll mainline the changes btw! need to work with marcan once they're done), but as the project goes further I'll definitely consider the question of licensing again.
It'll just be sad to see apps like VMware or Parallels release a new version claiming they made a breakthrough after you've made some milestone release...
IANAL but I'd like a license that goes something like this:
Companies: If you are working for a company/corporation/profit-generating entity, or otherwise intend to sell or use such code derived from this repository for profit-generating purposes, you shall not be permitted to use any of the source code herein until you email me (author email here) and we can come up with the appropriate terms and conditions for your use case.
Everyone else: Have fun!
Obviously it's missing some necessary edge cases and disclaimers, but yeah.
I mean, that's basically what CC-BY-NC is. Any licence that prohibits commercial use does not prohibit an alternative commercial licence being negotiated.
> PolyForm is a project to draft and make freely available plain-language source code licenses with limited rights.
>
> Source code licenses with limited rights? What does that mean?
Many software developers want to make software available under source code licenses that grant some, but not all rights. Some licenses that have been released before include the Commons Clause, Elastic and Confluent licenses, and others. These licenses grant broad rights, including source code access, but reserve some rights to the licensor.
To be clear I'm not just trying to be a pedant and poke holes in your legalese here. I'm trying to show that it is genuinely hard to draw a line between what kinds of profit seeking are morally acceptable and what are not. People generally deserve to seek out prosperity, and I suspect in most cases trying to differentiate between these cases will end up being a game of "people richer than me have to pay, people poorer get it for free" which is way less morally justified than the current situation with software licenses.
> I have already delegated this to after I get Windows working under the thin hypervisor
Not to be 'that guy', but that's an odd use of of the word 'delegated'. 'Relegated' might have been the word for which you were looking.
Edit: I know this will be down voted because I'm critiquing the word usage of OP instead of focusing on how cool their project is. I get that. I'm just pedantic and this sort of thing eats me alive.
Personally, I've learned to talk more precisely from these sorts of comments than anywhere else. In real life, people will rarely correct you. I think the concept of a "meta comment" is interesting, where you could push this sort of thing into a separate parallel thread that would normally be hidden.
That's an interesting point. It's much easier to correct a stranger on the Internet, but it's also harder to be kind. Comments that manage to do both (like GP) are great, and I always like to see them.
> 3) HAL Extensions (for those unaware they are tiny modules that allow you to extend the Windows HAL with functions for non standard hardware) are not tenable at the moment since they're limited in the APIs they use
I haven't heard of those before, and I'm fascinated by them. I go looking for documentation – and I can't find any on Microsoft's website – some documentation which mentions their existence, [0] but no details on the API or how to write them.
Is this something you have to sign an NDA with Microsoft to get access to the headers and docs for it? Or will I find the headers hidden away in the WDK somewhere?
Is there any good public source of info on them? The best I've found is [1] – which includes some important details but isn't comprehensive (not that anyone would expect a slide deck to be).
> Is this something you have to sign an NDA with Microsoft to get access to the headers and docs for it? Or will I find the headers hidden away in the WDK somewhere?
Turns out the header file is included in the Windows 10 SDK, as km/nthalext.h
(You can download the multi-gigabyte Windows 10/11/2022 SDKs to get a more recent one, although not sure if anything has changed.)
Still doesn't seem to be any public documentation. The header includes very detailed comments, but (as you'd expect for header file comments) they concentrate on the nitty-gritty and omit the big picture.
I’m interested in Windows VMs that have minimal overhead/maximum speed. As far as I understand that’s done by it being installed as native to the hardware as the native OS, but with generic drivers. Roughly what % of the work for running Windows on M1 is running Windows in a VM on M1?
Good luck, I hope it works out. It is hard to be in between two of the largest and most established tech companies in the world. If Apple or Microsoft wanted it, they could make it happen. I assume neither want it, at least not right now, so it is clearly an uphill battle.
I was just really curious what your motivation for this project is. Just an interesting technical challenge? I'm impressed at anyone taking on something that is just so obviously ...difficult.
And don't you worry that if you succeed, either Apple or Microsoft will make some small change to kill it?
1) yes, I realize this is going to be way harder than it seems, but I'm actually going to do my best to hopefully get a good user experience out of this and I'm easily preparing for this to be a multi-year effort, but I'm not going to give up right at the gate
2) Custom HALs were actually an option, up until very recently, since as of Windows 10, version 2004, the HAL is now statically linked into the kernel, meaning that if I wanted to use the AIC natively I'd need to write a patch finder that runs before the Windows kernel loads (This is what EfiGuard does for example to disable PatchGuard)
(Yes this is actually more tenable than it may seem, due to some undocumented policy files Windows is able to use, but I have already decided to hold off on this until after I get Windows working under the thin hypervisor)
3) HAL Extensions (for those unaware they are tiny modules that allow you to extend the Windows HAL with functions for non standard hardware) are not tenable at the moment since they're limited in the APIs they use
4) I am well aware that Windows is going to need a lot more help than just purely the interrupt controller, I'm currently trying to bring up the vGIC first since the distributor and redistributors need to be emulated and I need to bring up Project Mu first
5) as for the GPU, I'm way too far away from that being a concern to figure out the approach lol
if you have any feedback btw, please do feel free to comment it i'll try to address it as best as I can
yes I'll update the website theme soon enough, thanks to the commenter who remarked about readability.