Comments (14)
I would recommend we hold off on this. We have a license in the top-level README at the bottom of the file.
from prysm.
If we do decide to do this, there are many tools to easily add the preamble.
from prysm.
It makes the most sense that we will be sticking to the go-ethereum license for our sharding implementation. Closing this issue unless anyone has important concerns at the moment.
from prysm.
That isn't the question. The question is: do we need to add the license preamble to our new files?
from prysm.
Raul will confirm with go-ethereum team
from prysm.
Confirmed by Peter from the geth team. We will use LGPL for lib code and GPL for binaries. Closing.
from prysm.
We shouldn't close this until it is resolved.
Your comment confirms that we need preambles before merging upstream so we'll need it eventually.
from prysm.
We will no longer be a fork of geth. Closing.
from prysm.
This isn't a geth dependency but a licensing question. If we are going to use GNU/GPL then we may need this preamble
from prysm.
I think that we'll choose a more permissive license and the preamble may not be necessary. Not sure how to reach a definitive answer though.
from prysm.
Can anyone provide clarity about why the project didn't adopt a more permissive license?
Seems to be the right thing to do, especially in the spirit of the philosophy of subtraction.
from prysm.
@shazow Sure, happy to explain. We want to ensure this software remains open and free to use. Take the linux kernel as an example. Imagine if they didn't choose GPL and some company decided to make and withhold improvements to the open source software. This hypothetical company may try to profit from this in some way, perhaps by selling closed source software based on the Linux kernel that everyone should benefit from for free.
I'm glad you linked to the Ethereum foundation as the go-ethereum project was an inspiration for choosing the license we did. I would argue that this license is better for the community. If you want to fork this project, modify it, and use the modified code privately then you may do so with the permissions granted with GPLv3. However, you may not distributed modified closed source software with this license.
If there is a compelling reason that someone wishes to distribute copies of this software (for free or for charge) without ensuring the same open source freedoms to their recipients then we can revisit this or consider explicit permission for said entity.
from prysm.
Thanks for the quick followup!
Some context: I've been maintaining popular open source projects since 2008, with over 60M downloads/mo. I'm very familiar with the mechanics of GPL and the effects it has on open source efforts, but my experience does not match this. Are you open to being convinced otherwise? Would it be better to take this conversation to another medium?
Quick summary:
- There were many discussions and desire to change go-ethereum's license to a more permissive license, but it's increasingly difficult to do after there is a non-trivial number of contributors and copyright holders.
- Linux kernel is a bad example because everything links against it dynamically to bypass GPL. Projects like Google Fuchsia were started specifically because of the licensing issue. Many more permissive kernels also exist and are successful, like BSD and popular derivatives (macOS, iOS).
- Many companies and marketplaces outright disallow use of GPL due to logistical complexities with meeting the terms (e.g. GPL dependencies violate the iOS App Store terms of service).
- Even in the cryptocurrency space, GPL is not the norm. The original Bitcoin codebase itself was released under MIT. Many other projects use permissive licenses too, work your way down the top marketcap list and try to find a reference codebase that does not use a permissive license: Bitcoin, Ripple/Stellar, BCH/LTC/ZEC/other derivatives, EOS, Cosmos/Tendermint, Monero. Ethereum is the exception.
- Even in the Ethereum cryptocurrency space, GPL is not the norm. Many other implementations use more permissive licenses: Trinity, Artemis, Lighthouse, etc.
I don't feel that the argument that Ethereum is successful because some of the implementations are GPL is compelling, given that Ethereum largely exists because of Bitcoin which is MIT.
My more immediate concern: I'm working with Infura and we've built a lot of private infrastructure that is statically linked in Go. Part of my role is open sourcing pieces of this, but right now it's a big monolith with many thousands of engineering hours behind it and converting the entire thing to GPL is not an option while the option to redistribute is important. Managing micro-dependencies as dynamically linked libraries is also more inconvenience than it's worth. In effect, we're duplicating effort of doing clean-room rewrites of bits and pieces of go-ethereum just to avoid touching GPL. This is an unfortunate circumstance, and I'm hoping we can avoid this with future projects like prysm.
Worth noting that I've been personally involved in several "duplication of effort" rewrites just to avoid touching GPL in my career. A lot of the rewrites end up being released as MIT anyway, for others to avoid duplicating the duplication, but I wish we didn't have to do this in the first place.
Finally, regarding the subtraction principle, the premise of being protective from others trying to profit from our work reads very strongly as "Unhappy when others create value" and against "Matter less." It reads as an attempt to recapture opportunities into the origin codebase, to pull changes back in-house. Clearly this is a subjective sub-topic that we're only starting to explore.
from prysm.
THanks for the feedback @shazow. I won't argue with you that MIT and other more permissive license allow more freedoms with regards to distributing closed source projects when using projects with modification.
Finally, regarding the subtraction principle, the premise of being protective from others trying to profit from our work reads very strongly as "Unhappy when others create value" and against "Matter less."
I can appreciate your perspective about this. To be clear, our intention is not to prevent anyone from using the project for profit. The GPL license allows anyone to freely use the project as they see fit without publishing the modified closed source code as long as they aren't redistributing the software. This satisfies the majority of use cases that I can imagine. The iOS use case is an interesting exception.
We are not lawyers and licensing reaches outside of our knowledge domain. I won't say we can't be convinced that GPL is harmful for Prysm, Ethereum, and the community. For this reason, we have a CLA in place, since the beginning, which should allow us to change license at a later date (I'm not a lawyer so this might not be correct).
from prysm.
Related Issues (20)
- ERROR filesystem: Unable to prune directory directory=0x123 error=slot could not be read from blob file 0.ssz: EOF HOT 1
- ERROR execution: Could not connect to execution endpoint error=403 Forbidden: invalid host specified: 403 Forbidden: invalid host specified HOT 1
- The progress of “Syncing: state download in progress” will not change for a long time
- Add a flag `--delay-sync` that delays syncing by a specific number of blocks
- Beacon node stops syncing because >64998 subdirectories in blobs folder HOT 1
- Allow Importing of Historical Blobs HOT 11
- ERROR execution: Could not connect to execution client endpoint error=wanted chain ID 11155111, got 5: wanted chain ID 11155111, got 5
- Could not get sync aggregate rewards HOT 1
- Devnet: transactions on 2nd execution client will never be validated.
- The given withdrawal credentials is already in ETH1_ADDRESS_WITHDRAWAL_PREFIX form. Have you already set the EL (eth1) withdrawal addresss HOT 1
- Contradictory logs when syncing
- Reports of Windows users losing peers #13431 HOT 4
- are the fields in chain_reorg event response reversed?
- Google Container Registry Shutdown HOT 4
- Incompatible with k8s.io/[email protected]+ HOT 1
- Out of memory (OOM) - Prysm killed HOT 5
- Prysm Killed - Out of Memory HOT 6
- Cli args CMD to start prysm without GRPC gateway but http rest api
- cannot obtain database lock, database may be in use by another process HOT 1
- Using Prysm BN with the `--bootstrap-node` with and invalid signature leads to a wrong error message.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from prysm.