You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+23-38Lines changed: 23 additions & 38 deletions
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,15 @@
1
1
# Contributing Guideline
2
2
3
-
Thank you for your interest in contributing to this project! We welcome contributions from everyone, whether it's reporting an issue, submitting a pull request, or suggesting improvements.
4
-
3
+
Thank you for your interest in contributing to meta contract! We welcome contributions from everyone, whether it's reporting an issue, submitting a pull request, or suggesting improvements.
5
4
6
5
## Reporting Issues
6
+
7
7
If you encounter a bug or have a feature request, please use the provided templates when [opening a new issue](https://github.com/metacontract/mc/issues/new/choose). This helps us address your concerns more effectively.
8
8
9
9
## Development Workflow
10
10
11
11
### Submitting Pull Requests
12
+
12
13
When submitting a Pull Request (PR), please keep in mind the following:
13
14
14
15
- PRs that contain backward-compatible bug fixes or minor changes will generally be merged directly.
@@ -18,63 +19,47 @@ When submitting a Pull Request (PR), please keep in mind the following:
18
19
<details>
19
20
<summary>How to submit PR</summary>
20
21
21
-
1. Fork the repository and create a new branch for your feature or bug fix.
22
+
1. Fork the repository and create a new branch from the `main` branch for your feature or bug fix.
22
23
2. Make your changes and commit them with descriptive commit messages.
23
24
3. Push your changes to your forked repository.
24
-
4. Open a new pull request against the main repository, describing your changes in detail.
25
-
</details>
26
-
27
-
28
-
### Coding Style
29
-
We adhere to the [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html) for maintaining a consistent and readable codebase. When contributing to this project, please follow the Solidity Style Guide with the exceptions and additions.
25
+
4. Open a new pull request against the `main` branch of the main repository, describing your changes in detail.
26
+
5. Ensure your branch is up to date with the `main` branch before requesting a review.
27
+
6. Address any review comments and make necessary changes.
28
+
7. Once approved, the PR will be merged into the `main` branch.
30
29
31
-
To ensure consistent formatting, we use [forge fmt](https://book.getfoundry.sh/reference/forge/forge-fmt), a built-in code formatter for Foundry projects. Please run `forge fmt` before submitting your pull request. Our CI pipeline will check the formatting of your code using `forge fmt --check`.
30
+
</details>
32
31
33
32
34
-
### Release Process
35
-
This document outlines the release process for our project, including the types of releases, planning, preparation, execution.
33
+
### Documentation Style and Format
36
34
37
-
-**Major Release**: Includes significant new features or backward-incompatible changes.
38
-
-**Minor Release**: Includes small new features or improvements.
39
-
-**Patch Release**: Includes bug fixes and backward-compatible changes.
35
+
- Follow the Markdown formatting guidelines as outlined in the [Documentation Guidelines](https://mc-book.ecdysis.xyz/guides/project-management/documentation-guidelines).
36
+
- Use kebab-case for all documentation file names.
40
37
41
-
#### 1. Create a release branch
42
-
A new release branch is created from the main branch, using the naming convention `release/vX.Y.Z`, where `X.Y.Z` represents the version number.
38
+
### Coding Style
43
39
44
-
- Major/Minor Release
45
-
1. Create a "New Release" issue to clarify the release plan.
46
-
2. Create a release branch.
47
-
3. Review and merge related Pull Requests into the release branch.
48
-
- Patch Releases
49
-
1. Review a related Pull Request.
50
-
2. A maintainer creates a patch release branch.
51
-
3. Merge into the patch release branch.
52
-
- Individual Pull Requests can be merged on an ongoing basis.
53
-
- Combine multiple PRs into a single _Patch Release Brabch_ if needed.
54
-
- For critical patches, a "New Release" issue may be created, but generally, a lightweight process will be followed.
40
+
- Adhere to the [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html) with project-specific additions as outlined in the [Coding Standards](https://mc-book.ecdysis.xyz/guides/project-management/coding-standards).
41
+
- Use `forge fmt` for consistent code formatting.
55
42
56
-
[*] If necessary, create branch and validate a Release Candidate (RC).
3. A new git tag is created and chosen for the release, using the naming convention `vX.Y.Z`.
45
+
- Follow the comprehensive test strategy outlined in the [Test Strategy](https://mc-book.ecdysis.xyz/guides/project-management/test-strategy).
46
+
- Write unit tests for all functions and ensure high code coverage.
62
47
63
-
#### 3. Publication
64
-
1. Publish release notes.
65
-
2. Announce the release to the community through our designated communication channels.
66
-
3. For information about upcoming releases and planned features, please refer to our [GitHub Issues](https://github.com/metacontract/mc/issues).
48
+
### Release Process
67
49
68
-
Please note that only project maintainers have the authority to create releases and merge changes into the main branch.
50
+
- Follow the branching and release strategy as outlined in the [Branching and Release Strategy](https://mc-book.ecdysis.xyz/guides/project-management/branching-and-release-strategy).
51
+
- Use Semantic Versioning for all releases.
69
52
70
53
71
54
### Versioning Policy
55
+
72
56
This project follows [Semantic Versioning](https://semver.org/) and uses version numbers in the format _MAJOR.MINOR.PATCH_.
73
57
- Version number updates will be determined and applied by the assigned maintainer(s).
74
58
75
59
* For the initial v0.1.0 release, we expect to make frequent breaking changes.
76
60
77
61
### Changelog
62
+
78
63
A changelog will be maintained in [CHANGELOG.md](./CHANGELOG.md) to document all notable changes in each version.
79
64
80
65
- Changelog entries should follow the [Keep a Changelog](https://keepachangelog.com/) format.
A meta contract is a powerful framework for smart contract development, designed to enhance developer productivity and contract maintainability. Built on the principles of the *ERC-7546: UCS* (Upgradeable Clone Standard), this ***mc*** library provides a robust architecture for creating and managing upgradeable smart contracts.
1
+
# Meta Contract ![Solidity][solidity-shield][![License:MIT][license-shield]](./LICENSE)
Meta Contract is a Foundry-based smart contract framework designed to create flexible, upgradeable, and scalable blockchain applications. It implements the UCS ([ERC-7546: Upgradeable Clone for Scalable Contracts](https://eips.ethereum.org/EIPS/eip-7546)) architecture, providing developers with powerful tools to build and maintain complex decentralized systems.
3
10
4
11
> [!WARNING]
5
-
> This is an alpha release of the Meta Contract (mc) library, which means it is an early version intended for testing and feedback purposes. Please be cautious when using this version in production environments, as it may contain bugs, incomplete features, or unexpected behavior.
12
+
> This is still in the development version, which means it is an early version intended for testing and feedback purposes. Please be cautious when using this version in production environments, as it may contain bugs, incomplete features, or unexpected behavior.
6
13
7
14
## Features
8
-
-**Upgradeable Contracts**: Create smart contracts that can be easily upgraded, allowing for continuous improvement and bug fixes without contract migration.
9
-
-**Modular Design**: A meta contract promotes a modular approach to contract development, enabling code reuse and reducing complexity.
10
-
-**Standard Functions**: Utilize a rich library of standard functions to streamline contract development and ensure consistency across your projects.
11
-
-**Development Kit**: Leverage the mc's Development Kit (DevKit) to simplify contract deployment, testing, and interaction.
12
-
-**Comprehensive Documentation**: Benefit from extensive documentation and guides to help you get started and make the most of mc's features.
15
+
16
+
-**Upgradeability**: Meta Contracts can be upgraded without changing their address, allowing for seamless improvements and bug fixes.
17
+
-**Modularity**: The framework separates contract logic into distinct, manageable components, enhancing code organization and reusability.
18
+
-**Scalability**: Meta Contracts are designed to handle growth efficiently, making them suitable for large-scale applications.
19
+
-**Flexibility**: Developers can easily extend and customize Meta Contracts to suit specific project needs.
20
+
-**Testability**: The modular structure of Meta Contracts facilitates comprehensive testing, including unit tests for individual functions and integration tests for the entire system.
13
21
14
22
## Getting Started
23
+
15
24
### Prerequisites
16
-
To use mc, you need to have the following software installed:
17
-
-[Foundry](https://github.com/foundry-rs/foundry) - a blazing fast, portable and modular toolkit for Ethereum application development.
18
25
19
-
### Installation
20
-
The mc can be installed using Foundry's `forge` command with useful template:
26
+
To use mc, you need to have [Foundry](https://github.com/foundry-rs/foundry) installed.
You can also install only this repository at your project root using:
27
-
```sh
28
-
forge install metacontract/mc
36
+
After the installation, run the following command to test the _Counter_ sample project and see how it works:
37
+
38
+
```bash
39
+
cd<Your Project Name>
40
+
forge test
29
41
```
30
42
43
+
If you want to learn more about meta contract installation, please refer to [installation guide](https://mc-book.ecdysis.xyz/guides/setup/installation).
44
+
31
45
## Documentation
32
-
The [MC Book](https://mc-book.ecdysis.xyz/) serves as a comprehensive guide for developing with the meta contract. It covers a wide range of topics, including:
33
-
- Architecture overview
34
-
- Setting up your development environment
35
-
- Creating and deploying upgradeable contracts
36
-
- Using standard functions and libraries
37
-
- Testing and debugging your contracts
38
-
- Best practices and guidelines
39
-
You can find the source code for the MC Book on GitHub at [metacontract/book](https://github.com/metacontract/book).
46
+
47
+
The [MC Book](https://mc-book.ecdysis.xyz/) serves as a comprehensive guide for developing with the meta contract. Also, you can find the markdown documents in [docs](./site/docs) directory.
40
48
41
49
## Contributing
50
+
42
51
We welcome contributions from the community! If you'd like to contribute to mc, please check out our [Contributing Guide](./CONTRIBUTING.md) for detailed instructions on how to:
0 commit comments