Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add engineering section #14

Merged
merged 24 commits into from
Aug 2, 2023
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
46460e7
Add base engineering section structure
zivkovicmilos Jul 24, 2023
6699dd8
Add Gno.land intro
zivkovicmilos Jul 26, 2023
897a0c3
Add setup doc
zivkovicmilos Jul 26, 2023
b29ed73
Add meeting structure
zivkovicmilos Jul 26, 2023
70ee1f8
Add tools section
zivkovicmilos Jul 26, 2023
f30b1b9
Add team section
zivkovicmilos Jul 26, 2023
6e499a7
Add resources section
zivkovicmilos Jul 26, 2023
c1c887b
Drop GitHub doc
zivkovicmilos Jul 31, 2023
d9534ec
Merge branch 'main' into feature/add-engineering-section
zivkovicmilos Jul 31, 2023
e622e60
Merge branch 'main' into feature/add-engineering-section
zivkovicmilos Jul 31, 2023
797f25c
Remove double parans
zivkovicmilos Jul 31, 2023
4b14a9d
Format the markdown recursively
zivkovicmilos Jul 31, 2023
95b5a5c
Add reference to CONTRIBUTING.md
zivkovicmilos Jul 31, 2023
0aed2dd
Reword the benchmark part
zivkovicmilos Jul 31, 2023
f6825a8
Create first-challenges.md
moul Aug 1, 2023
f4bb38f
Update .gitignore
zivkovicmilos Aug 1, 2023
cd6ad99
Remove broken link
zivkovicmilos Aug 1, 2023
859e91f
Fix homepage link
zivkovicmilos Aug 1, 2023
b1e8812
Fix indentation in the communication section
zivkovicmilos Aug 1, 2023
21fccb6
Rename git section
zivkovicmilos Aug 1, 2023
0ee7a3d
Reorganize the nav
zivkovicmilos Aug 1, 2023
a75edec
Update indentation on the challenges section
zivkovicmilos Aug 1, 2023
320f5e0
Move Meetings under the Team section
zivkovicmilos Aug 1, 2023
04fda52
Use the meetings repo as a source of truth
zivkovicmilos Aug 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# OS Leftovers
.DS_Store

# Editor Leftovers
.idea
ajnavarro marked this conversation as resolved.
Show resolved Hide resolved
3 changes: 2 additions & 1 deletion docs/communication/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Communication

Here we will delve into the various communication channels and platforms used. Select any element on the list on the left to see more details.
Here we will delve into the various communication channels and platforms used. Select any element on the list on the
left to see more details.
13 changes: 10 additions & 3 deletions docs/communication/discord.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,19 @@ We utilize Discord to foster community interaction and collaboration among teams

### Gno.land

At the heart of our community lies the Gno.land team, who actively engages with our members through the [official Discord channel](https://discord.gg/S8nKUqwkPn). This channel serves as a vibrant space for community interactions and discussions.
At the heart of our community lies the Gno.land team, who actively engages with our members through
the [official Discord channel](https://discord.gg/S8nKUqwkPn). This channel serves as a vibrant space for community
interactions and discussions.

#### Cross-Team Communication

Our community Discord also features private channels specifically designed for seamless communication between different teams. This enables effective collaboration and knowledge-sharing beyond the confines of our company, promoting a thriving ecosystem of like-minded individuals.
Our community Discord also features private channels specifically designed for seamless communication between different
teams. This enables effective collaboration and knowledge-sharing beyond the confines of our company, promoting a
thriving ecosystem of like-minded individuals.

#### Exploring Beyond

In addition to our primary Discord channel, the Gno.land team actively participates in other Discord servers to extend our connections and reach. One notable server where you can find us is the [Adena Wallet Discord](https://discord.gg/XzJMXXfrS9), where we engage with a broader audience and exchange insights on various topics.
In addition to our primary Discord channel, the Gno.land team actively participates in other Discord servers to extend
our connections and reach. One notable server where you can find us is
the [Adena Wallet Discord](https://discord.gg/XzJMXXfrS9), where we engage with a broader audience and exchange insights
on various topics.
20 changes: 14 additions & 6 deletions docs/communication/signal.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,22 @@ We utilize Signal for day-to-day discussions across different teams in AiB.

### Gno.land

The Gno.land team utilizes Signal as a secure and private communication medium to foster effective discussions with both team members and community contributors.
The Gno.land team utilizes Signal as a secure and private communication medium to foster effective discussions with both
team members and community contributors.

#### Active Channels
Within our Signal platform, we have established various channels to facilitate focused and transparent discussions. Some of the key active channels include:

- **Grant & Partner Program**: This dedicated area serves as a hub for discussing grant applications and exploring potential partnerships with external entities.
- **Gno-Tech-Staff**: A discussion area for the core Gno.land engineering team. We try to keep most discussions public, and visible to other contributors in the space, so this channel is used mostly for internal matters.
- **Gno-Core-Contribs**: This shared "forum" area serves as a central space for essential discussions between the core team and developers or development teams working on Gno.land. It fosters collaboration and coordination among key stakeholders.
Within our Signal platform, we have established various channels to facilitate focused and transparent discussions. Some
of the key active channels include:

Please reach out to your team members if you want to be added to a relevant Signal channel. **Gno-Tech-Staff** and **Gno-Core-Contribs** are mandatory for
- **Grant & Partner Program**: This dedicated area serves as a hub for discussing grant applications and exploring
potential partnerships with external entities.
- **Gno-Tech-Staff**: A discussion area for the core Gno.land engineering team. We try to keep most discussions public,
and visible to other contributors in the space, so this channel is used mostly for internal matters.
- **Gno-Core-Contribs**: This shared "forum" area serves as a central space for essential discussions between the core
team and developers or development teams working on Gno.land. It fosters collaboration and coordination among key
stakeholders.

Please reach out to your team members if you want to be added to a relevant Signal channel. **Gno-Tech-Staff** and *
*Gno-Core-Contribs** are mandatory for
core Gno.land staff.
42 changes: 27 additions & 15 deletions docs/communication/slack.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,29 @@
## Overview
## Overview

Slack is the primary medium of communication within All in Bits.
Slack is the primary medium of communication within All in Bits.

Below, you can find some of the official Slack channels, as well as an overview of
Below, you can find some of the official Slack channels, as well as an overview of
existing team-specific channels.

### General channels

- **\#events** - This channel is for all employees to discuss conferences, events, and speaking engagements opportunities
- **\#finance** - A place to ask questions or make requests related to purchasing, reimbursements, payroll or anything else finance related
- **\#events** - This channel is for all employees to discuss conferences, events, and speaking engagements
opportunities
- **\#finance** - A place to ask questions or make requests related to purchasing, reimbursements, payroll or anything
else finance related
- **\#general** - This channel is for team-wide communication and announcements. All team members are in this channel
- **\#hr** - Your one-stop HR and People-Ops shop! If you have any HR-related questions, career development questions, BambooHR or Org chart needs/updates, questions about benefits, policies, or anything else that might come up, we are at your service!
- **\#it-support** - Ask for IT for help or account access questions
- **\#hr** - Your one-stop HR and People-Ops shop! If you have any HR-related questions, career development questions,
BambooHR or Org chart needs/updates, questions about benefits, policies, or anything else that might come up, we are
at your service!
- **\#it-support** - Ask for IT for help or account access questions
- **\#legal** - This channel is for all employees to ask the Legal team quick questions
- **\#mad-props** - Want to give props to someone that did something great? Let everyone know here
- **\#marketing** - This channel is for all employees to ask the Marketing Team questions about comms, get updates on projects, make suggestions, etc
- **\#marketing** - This channel is for all employees to ask the Marketing Team questions about comms, get updates on
projects, make suggestions, etc
- **\#news** - This channel is for important company-wide announcements
- **\#quotes** - Got any great quotes? Please share with us
- **\#random** - A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you’d prefer to keep out of more focused work-related channels
- **\#random** - A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you’d prefer to keep out
of more focused work-related channels
- **\#random-music** - To share music with others — and camaraderie
- **\#random-petsofaib** - Cute fur baby or animal? Share with the team
- **\#security** - If you have any quick security questions or issues you can ask on this channel
Expand All @@ -32,17 +38,23 @@ existing team-specific channels.

- **\#gno-core-tech** - The most important channel engineering-wise. We share our discussions here
- **\#game-of-realms** - A channel for discussing the ongoing [Game of Realms competition](#)
- **\#gno-by-example** - Channel for coordinating changes and improvements for [Gno By Example](https://gno-by-example.com)
- **\#gno-docs** - One-stop-shop for discussing the [official Gno.land documentation](https://gno.land) <!-- TODO change to docs.gno.land when ready -->
- **\#gno-by-example** - Channel for coordinating changes and improvements
for [Gno By Example](https://gno-by-example.com)
- **\#gno-docs** - One-stop-shop for discussing
the [official Gno.land documentation](https://gno.land) <!-- TODO change to docs.gno.land when ready -->
- **\#gno-ide** - The Gno IDE team primary communication channel
- **\#gno-infra** - Chambers of the magic DevOps magician Albert, where we discuss infrastructure related topics regarding Gno
- **\#gno-performances** - Slack channel connected to a Gno performance testing tool called Supernova, which outputs daily TPS reports
- **\#gnoland-grants-partners** - Rendez-vous channel for the engineering team and marketing / business relations to discuss ongoing partner acquisition efforts
- **\#gno-infra** - Chambers of the magic DevOps magician Albert, where we discuss infrastructure related topics
regarding Gno
- **\#gno-performances** - Slack channel connected to a Gno performance testing tool called Supernova, which outputs
daily TPS reports
- **\#gnoland-grants-partners** - Rendez-vous channel for the engineering team and marketing / business relations to
discuss ongoing partner acquisition efforts
- **\#gnoland-marketing** - The main entry point for all things related to Gno marketing
- **\#tokenomics** - Channel for discussing ongoing tokenomics efforts (network fees, network currency...)

##### Partner Channels

- **\#gnoland-onbloc** - The main communication channel between the Gno core team and OnBloc
- **\#gnoland-teritori** - The main communication channel between the Gno core team and Teritori
- **\#gno-governance-module** - A temporary channel to discuss ongoing Governance module efforts; it is made up by some core contributors
- **\#gno-governance-module** - A temporary channel to discuss ongoing Governance module efforts; it is made up by some
core contributors
3 changes: 0 additions & 3 deletions docs/engineering/README.md

This file was deleted.

38 changes: 0 additions & 38 deletions docs/engineering/conventions/conventions.md

This file was deleted.

Empty file.
Empty file.
15 changes: 10 additions & 5 deletions docs/engineering/conventions/go.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

## Introduction

This guide documents development conventions for Go at AiB. Check [general conventions](conventions.md) for language-independent conventions that are also applicable to Go projects.
This guide documents development conventions for Go at AiB. Check [general conventions](conventions.md) for
language-independent conventions that are also applicable to Go projects.

## Supported Go Versions

Expand All @@ -19,11 +20,13 @@ If your project is a **library** or an **application**:
## Code Generation

* All generated code should be always processed by `gofmt`.
* Generated code should have a `// Code generated ... DO NOT EDIT.` comment before the package clause, but not attached to it (see [convention](https://github.com/golang/go/issues/13560#issuecomment-288457920)).
* Generated code should have a `// Code generated ... DO NOT EDIT.` comment before the package clause, but not attached
to it (see [convention](https://github.com/golang/go/issues/13560#issuecomment-288457920)).

## Docker

* If you use alpine-based images, your binaries need to be built with `CGO_ENABLED=0`. If your project uses `cgo`, you will have to use alpine for the build of binaries for Docker.
* If you use alpine-based images, your binaries need to be built with `CGO_ENABLED=0`. If your project uses `cgo`, you
will have to use alpine for the build of binaries for Docker.

## Testing

Expand All @@ -48,7 +51,8 @@ Use the standard `errors` package and wrap errors using `%w` when needed.

* Use `gofmt`, `goimports`, `go vet`.
* Use `golangci-lint`. Configuration example [here](https://github.com/gnolang/gno/blob/master/.github/golangci.yml)
* Follow community well-established best practices: [Effective Go](https://golang.org/doc/effective_go.html) and [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments).
* Follow community well-established best practices: [Effective Go](https://golang.org/doc/effective_go.html)
and [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments).

### Group code blocks with blank lines

Expand All @@ -65,7 +69,8 @@ For naming: [follow Uber Go style guide](https://github.com/uber-go/guide/blob/m

## CLI

* Put sources for your executable commands in `cmd/<command-name>/`, with the `main` function in `cmd/<command-name>/main.go`.
* Put sources for your executable commands in `cmd/<command-name>/`, with the `main` function
in `cmd/<command-name>/main.go`.
* We use [ff](github.com/peterbourgon/ff) extensively for CLI options parsing.
* Implement commands in a subpackage.

Expand Down
1 change: 0 additions & 1 deletion docs/engineering/conventions/licensing.md

This file was deleted.

Empty file.
Empty file.
20 changes: 20 additions & 0 deletions docs/engineering/gno.land/first-challenges.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# First Challenges

- **1 week**
- Set up a local dev environment without blockchain (gno cli)
- Set up a local dev environment with blockchain (gnoland + gnoweb + gnokey)
- Write contracts

- **1 month**
- Contribute pull requests for contracts, toolings, and developer experience, based on daily job needs
- Participate in peer code reviews

- **3 months**
- Contribute to at least one advanced topic outside of contracts
- Regularly contribute to the project
- Actively review pull requests
- Take on assigned tasks with enthusiasm
- Share their preferences for specific project focus areas

- **6 months**
- (Co-)Lead a part of the project, such as a package or a domain, demonstrating strong leadership skills and expertise.
44 changes: 44 additions & 0 deletions docs/engineering/gno.land/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## What is Gno.land?

Gno.land is a [Layer 1 blockchain](#) platform that enables the execution of Smart Contracts using an interpreted
version of the Go programming language called Gnolang (Gno for short).

### Key Features and Technology

1. **Interpreted Gnolang**: Gno.land utilizes the Gnolang programming language, which is based on Go. It is executed
through a specialized virtual machine called the GnoVM, purpose-built for the Gno.land blockchain. While Gnolang
shares similarities with Go in terms of syntax, it currently lacks go routine support. However, this feature is
planned for future development, ensuring deterministic GnoVM executions.
2. **Consensus Protocol - Tendermint2**: Gno.land achieves consensus between blockchain nodes using the Tendermint2
consensus protocol. This approach ensures secure and reliable network operation.
3. **Inter-Blockchain Communication (IBC)**: In the future, Gno.land will be able to communicate and exchange data with
other blockchain networks within the Cosmos ecosystem through the Inter-Blockchain Communication (IBC) protocol.

### Why Go-based?

The decision to base Gno.land's language on Go was influenced by the following factors:

1. **Standard and Secure Language**: Go is a well-established and secure programming language, widely adopted in the
software development community. By leveraging Go's features, Gno.land benefits from a robust and proven foundation.
2. **User-Friendly**: Go's simplicity and ease of understanding make it beginner-friendly. This accessibility lowers the
entry barrier for developers to create Smart Contracts on the Gno.land platform.

### How does it compare with Ethereum?

In comparison to Ethereum, Gno.land offers distinct advantages:

1. **Transparent and Auditable Smart Contracts**: Gno.land Smart Contracts are fully transparent and auditable by users
because the actual source code is uploaded to the blockchain. In contrast, Ethereum uses [Solidity](#), which
requires precompilation into bytecode, leading to less transparency as bytecode is stored on the blockchain, not the
human-readable source code.ß

2. **General-Purpose Language**: Gno.land's Gnolang is a general-purpose language, similar to Go, extending its
usability beyond the context of blockchain. In contrast, Solidity is designed specifically for Smart Contracts on the
Ethereum platform.

### Are there similar platforms?

If you're interested in exploring other platforms with comparable functionalities, you may consider:

- [Aptos](https://aptos.dev/)
- [CosmWasm](https://cosmwasm.com/build/)
50 changes: 50 additions & 0 deletions docs/engineering/gno.land/meetings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
The Gno.land team has established a well-structured meeting schedule to ensure effective communication and collaboration
among team members and contributors.

## Regular Team Meetings

1. **Weekly Gno Dev Sync (30mins)**
- Purpose: Engineering dev sync.
- Schedule: Every Monday at 17:00 CET.
- Agenda: Discuss ongoing development tasks, address roadblocks, and coordinate team efforts.

2. **Gno Dev Chat (30mins) (Optional)**
- Purpose: Informal engineering coffee slot for team members to socialize.
- Schedule: Every Wednesday at 12:00 PM CET.

3. **Tokenomics (1hr)**
- Purpose: In-depth discussions on tokenomics-related matters.
- Schedule: Every other Tuesday at 17:00 CET.
- Agenda: Analyze and strategize tokenomics, address community concerns, and plan improvements.

4. **GitHub Review Session (1hr)**
- Purpose: Weekly meeting to review and discuss ongoing Pull Requests (PRs) and issues on GitHub.
- Schedule: Every Thursday at 18:00 CET.
- Agenda: Review code contributions, provide feedback, and prioritize tasks for the next development cycle.

## Contributor Meetings

The following meetings will alternate each Wednesday, ensuring efficient communication between contributors and the core
team:

1. **Public Gno.land Developer Call (1hr)**
- Purpose: Bi-weekly call involving GitHub contributors and the core team to facilitate open discussions and
collaboration.
- Schedule: Every other Wednesday at 17:00 CET.
- Agenda: Discuss public project developments and ongoing roadmap items.

2. **Private Gno.land Developer Call (1hr)**
- Purpose: Bi-weekly call exclusively for core contributors, dev teams, and the core team to address more sensitive
or internal matters.
- Schedule: Every other Wednesday at 17:00 CET.
- Agenda: Discuss confidential project developments, plan roadmap milestones, and address critical issues.

## Company-related Meetings

1. **Company Townhall**
- Purpose: The official company-wide townhall meeting, ensuring transparent communication and alignment across the
organization.
- Schedule: Every other Wednesday at 18:00 CET.
- Agenda: Share company updates, celebrate achievements, address concerns, and allow employees to ask questions
openly.

19 changes: 19 additions & 0 deletions docs/engineering/gno.land/resources.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Official Docs

Coming soon!

## Workshops and Presentations

We take pride in sharing our knowledge with the community worldwide through workshops and presentations. You can explore
the complete list of our workshops [here](https://github.com/gnolang/workshops).

## Awesome Gno Repository

For a wealth of community resources related to Gno, check out our [awesome-gno](https://github.com/gnolang/awesome-gno)
repository. It's a curated collection of tools, libraries, and other valuable assets created and shared by Gno
enthusiasts.

## YouTube Channel

We maintain a YouTube channel called [@_gnoland](https://www.youtube.com/@_gnoland), where you can find talks and
video tutorials from previous conferences and workshops.
Loading