jbenet / jbenet/random-ideas

JRFC 29 - Go Node

Open
#29 12 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
328
Forks
12
PR merge metrics
No merged PRs in 30d

Description

I've been formulating ideas for a mad science experiment, and recently I've heard friends want to do this too, so let's do it.

> # Make Go more like Node

There are tons of subtleties that will go into this, but the basic idea is to re-imagine the Node programming system (#15, #27) with Go as a language (instead of javascript). Conversely, it can be seen as bringing sane package management and massive code reuse to Go -- a principle significantly undervalued in the mainstream Go ethos.[1]

Here is a shortlist of related features or principles I'd like to add to Go:
- sane package management (npm + ipfs, as in #27)
- ipfs pm instead of in-repo vendoring
- every file is a module
- sane versioning of code
- abandoning the `package` keyword
- require explicit, named imports (`import foo ""`)
- sane importing of multiple versions of the same module
- dealing with `init` (source of side-effect issues)
- reducing export surface area
- maximizing code reusability (minimizing "import friction")
- a node-like shell

Perhaps I could summarize this idea as:

> ## Go with Modules, not Packages
### to be continued

**Note: this is just planting a flag. I will be growing this document over time.**

---

[1] I should note that I (think I) understand _why_ this is undervalued. It has more to do with how the Go team works (and how software engineering at Google works) than what makes a good programming system in the abstract. One of the guiding principles of Go is to focus on what works in practice, not on abstract ideals -- so it makes perfect sense. But, unlike software development inside Google, the open source world is a very messy place where code gets designed, written, maintained, abandoned, and forked by many different people. Package Management and Maximizing Code Reuse have become important staples of would-be open source hackers with big goals, little time, and the absence of a software engineer army.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.