https://github.com/web3infra-foundation/mega
Mega is an unofficial open source implementation of Google Piper.
https://github.com/web3infra-foundation/mega
buck2 decentralised git google hacktoberfest monorepo p2p p2p-git piper rust
Last synced: 11 days ago
JSON representation
Mega is an unofficial open source implementation of Google Piper.
- Host: GitHub
- URL: https://github.com/web3infra-foundation/mega
- Owner: web3infra-foundation
- License: apache-2.0
- Created: 2023-03-01T23:26:30.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-30T02:25:33.000Z (6 months ago)
- Last Synced: 2024-10-30T05:00:08.030Z (6 months ago)
- Topics: buck2, decentralised, git, google, hacktoberfest, monorepo, p2p, p2p-git, piper, rust
- Language: Rust
- Homepage: https://gitmega.dev
- Size: 11.1 MB
- Stars: 167
- Watchers: 9
- Forks: 30
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE-APACHE
- Code of conduct: docs/code-of-conduct.md
- Security: docs/security.md
Awesome Lists containing this project
- fucking-awesome-rust - Mega - A monorepo & monolithic codebase management system that supports Git, also is an unofficial open source implementation of Google Piper. (Applications)
- awesome-rust - Mega - A monorepo & monolithic codebase management system that supports Git, also is an unofficial open source implementation of Google Piper. (Applications)
- trackawesomelist - Mega (⭐190) - A monorepo & monolithic codebase management system that supports Git, also is an unofficial open source implementation of Google Piper. (Recently Updated / [Who Wants to Be a Millionare](https://www.boardgamecapital.com/who-wants-to-be-a-millionaire-rules.htm))
README
# Mega - is an unofficial open source implementation of Google Piper.
Mega is an unofficial open source implementation of Google Piper. It is a monorepo & monolithic codebase management system that supports Git. Mega is designed to manage large-scale codebases, streamline development, and foster collaboration.
## What's the Piper?
Google Piper is a massive, centralized version control system that Google uses internally to manage their vast codebase. It is a monorepo, and a monolithic which mean is a single repository that contains all the source code for Google's software. It is designed to manage large-scale codebases, streamline development, and foster collaboration. It is built on top of Google's internal infrastructure and is designed to be highly scalable and efficient. More information on the [Why Google Stores Billions of Lines of Code in a Single Repository](https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext).
**Google Piper is not open source**
## Mega features
Mega is an unofficial open source implementation of Google Piper. And it has the following features:
### Git compatible
Mega offers the ability to utilize Git with a monorepo. This allows for easy cloning or pulling of any monorepo folder into local filesystem as a Git repository, and seamless pushing of changes back.
### Trunk-based Development
When it comes to managing large codebases in a centralized manner, trunk-based development is the way to go. More trunk-based Development information on the [Trunk-Based Development](https://trunkbaseddevelopment.com/).
### Conventional Commits
Mega will support conventional commits, which are a set of rules for creating clear and concise commit messages. More information on the [Conventional Commits](https://www.conventionalcommits.org/).
### Code Owners
Mega will support code owners, which are a set of rules for defining who owns a particular piece of code. More information on the [Code Owners](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners).
### Decentralized Open Source Collaboration
For now, the entire open source community base on Git and GitHub. It's centralized model, and it's not suitable for growing speed of open source world. Mega is working on build a decentralized open source collaboration model with [ZTM](https://github.com/flomesh-io/ztm)(Zero Trust Model) and decentralized social network like [Nostr](https://nostr.com), [Matrix](https://matrix.org) and [Mastodon](https://joinmastodon.org).
## Quick Try Monorepo Engine with Docker
For now, the monorepo engine could be deployed on your host machine or insulated into containers. For deploying through docker, follow the steps below:
1. Pull docker images from Docker Hub
```bash
$ docker pull genedna/mega:mono-pg-0.1-pre-release
$ docker pull genedna/mega:mono-engine-0.1-pre-release
$ docker pull genedna/mega:mono-ui-0.1-pre-release
```2. Initialize for mono-engine and PostgreSQL
```bash
$ git clone https://github.com/web3infra-foundation/mega.git
$ cd mega
# Linux or MacOS
$ ./docker/init-volume.sh /tmp/data ./docker/config.toml
```3. Run the mono-engine and PostgreSQL with docker, and open the mono-ui in your browser with `http://localhost:3000`.
```bash
# create network
$ docker network create mono-network# run postgres
$ docker run --rm -it -d --name mono-pg --network mono-network -v /tmp/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 genedna/mega:mono-pg-0.1-pre-release
$ docker run --rm -it -d --name mono-engine --network mono-network -v /tmp/data/mono/mono-data:/opt/mega -p 8000:8000 genedna/mega:mono-engine-0.1-pre-release
$ docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://localhost:8000 -p 3000:3000 genedna/mega:mono-ui-0.1-pre-release
```4. Try to upload a repository to mono-engine
```bash
$ git clone http://localhost:8000/project.git
$ cd project
$ git clone https://github.com/dagrs-dev/dagrs.git
$ sudo rm -r dagrs/.git
$ git add .
$ git commit -a -m"Initial the dagrs project"
$ git push
```5. Check the repository in UI
Open the mono-ui in your browser with `http://localhost:3000`, and you will see the `project` folder.## Contributing
The mega project relies on community contributions and aims to simplify getting started. To develop Mega, clone the repository, then install all dependencies and initialize the database schema, run the test suite and try it out locally. Pick an issue, make changes, and submit a pull request for community review.
More information on contributing to Mega is available in the [Contributing Guide](docs/contributing.md).
## Talk and Share
If you interested in Mega, you can make an appointment with us on [Google Calendar](https://calendar.app.google/QuBf2sdmf68wVYWL7) to discuss your ideas, questions or problems, and we will share our vision and roadmap with you.
## License
Mega is licensed under this Licensed:
- MIT LICENSE ( [LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)