golang / oscar

[mirror] Open source contributor agent architecture repo.
BSD 3-Clause "New" or "Revised" License
150 stars 19 forks source link

all: migrate to a single module #58

Closed hyangah closed 3 days ago

hyangah commented 4 days ago

We decided to move away from multiple modules, and use a single module (golang.org/x/oscar).

To avoid core packages (that will be public) accidentally depending on third-party modules, we will have an explicit test for dependency check.

Here is the classification of packages based on their dependencies (as of Nov 2024).

# L0: requiring only stdlib.
 *  golang.org/x/oscar/internal/actions L0
 *  golang.org/x/oscar/internal/diff L0
 *  golang.org/x/oscar/internal/dbspec L0
 *  golang.org/x/oscar/internal/testutil L0
 *  golang.org/x/oscar/internal/filter L0
 *  golang.org/x/oscar/internal/httprr L0
 *  golang.org/x/oscar/internal/keycheck L0
 *  golang.org/x/oscar/internal/llm L0
 *  golang.org/x/oscar/internal/secret L0

# L0/L1: requiring only stdlib, but semantically falling into L1
 *  golang.org/x/oscar/internal/gerrit L0/L1
 *  golang.org/x/oscar/internal/ollama L0/L1

# L1: requiring golang.org/x/text, golang.org/x/tools, golang.org/x/net, rsc.io/omap, rsc.io/ordered, rsc.io/top, rsc.io/markdown, github.com/google/safehtml
 *  golang.org/x/oscar/internal/adapters/github L1
 *  golang.org/x/oscar/internal/commentfix L1
 *  golang.org/x/oscar/internal/crawl L1
 *  golang.org/x/oscar/internal/docs L1
 *  golang.org/x/oscar/internal/embeddocs L1
 *  golang.org/x/oscar/internal/github L1
 *  golang.org/x/oscar/internal/googlegroups L1
 *  golang.org/x/oscar/internal/goreviews L1
 *  golang.org/x/oscar/internal/htmlutil L1
 *  golang.org/x/oscar/internal/llmapp L1
 *  golang.org/x/oscar/internal/model L1 (
 *  golang.org/x/oscar/internal/related L1
 *  golang.org/x/oscar/internal/reviews L1
 *  golang.org/x/oscar/internal/rules L1
 *  golang.org/x/oscar/internal/search L1
 *  golang.org/x/oscar/internal/storage L1
 *  golang.org/x/oscar/internal/storage/timed L1

# L2: requiring github.com/shurcooL/githubv4, github.com/shurcooL/graphql
 *  golang.org/x/oscar/internal/discussion L2

# L3: pulling in a large number of third-part dependencies

## pebble
 *  golang.org/x/oscar/internal/pebble L3
 *  golang.org/x/oscar/internal/pebble/cmd L3

## gcp
 *  golang.org/x/oscar/internal/gcp/... L3
 *  golang.org/x/oscar/internal/gcp/firestore L3
 *  golang.org/x/oscar/internal/gcp/gcpconfig L3
 *  golang.org/x/oscar/internal/gcp/gcphandler L3
 *  golang.org/x/oscar/internal/gcp/gcpmetrics L3
 *  golang.org/x/oscar/internal/gcp/gcpsecret L3
 *  golang.org/x/oscar/internal/gcp/gemini L3
 *  golang.org/x/oscar/internal/gcp/grpcerrors L3
 *  golang.org/x/oscar/internal/gcp/grpcrr L3

##  everything
 *  golang.org/x/oscar/internal/gaby L3
 *  golang.org/x/oscar/internal/syncdb L3
 *  golang.org/x/oscar/internal/devtools/cmd/dbedit L3

I am proposing to consider L0-L2 are the one in core framework and allow only the listed external dependecies. Packages in L3 are applications and skip the dependency check (in favor of the lists in go.mod).

cc @jba @ianthehat @rsc

gopherbot commented 3 days ago

Change https://go.dev/cl/631255 mentions this issue: Delete nested modules.

gopherbot commented 8 hours ago

Change https://go.dev/cl/631656 mentions this issue: internal/gcp: remove go.mod from this directory