Repository: gorse-io/gorse

Issue:
Rename go.mod package declaration
It's a bit confusing to have the go.mod not use the `gorse-io` as owner when trying to import gorse as a library. It'd be nice to rename it to not have to deal with the errors (module declares itself as package xxxx).


Hints from issue comments:
@zhenghaoz: I agree. Pull requests are welcomed if someone have interests.@ajroetker: I put up a PR in that case! Thanks for the quick reply!@zhenghaoz: Thank you. I will take a look later.

Solution patch:
diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml
index 8c99834..34428be 100644
--- a/.github/workflows/build_release.yml
+++ b/.github/workflows/build_release.yml
@@ -16,14 +16,14 @@ jobs:
 
       - name: Install gox
         run: go install github.com/mitchellh/gox@master
-        
+
       - name: Build release
         run: >
           gox -output="{{.OS}}/{{.Arch}}/{{.Dir}}" \
             -osarch='windows/arm64 windows/amd64 linux/arm64 linux/amd64' -ldflags="
-            -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))'
-            -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)'
-            -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" ./...
+            -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))'
+            -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)'
+            -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" ./...
         env:
           CGO_ENABLED: 0
 
@@ -36,7 +36,7 @@ jobs:
           zip -j gorse_linux_arm64.zip linux/arm64/gorse-*
           zip -j gorse_windows_amd64.zip windows/amd64/gorse-*
           zip -j gorse_windows_arm64.zip windows/arm64/gorse-*
-          
+
       - name: Upload release
         uses: svenstaro/upload-release-action@v2
         with:
@@ -62,9 +62,9 @@ jobs:
         run: >
           gox -output="{{.OS}}/{{.Arch}}/{{.Dir}}" \
             -osarch='darwin/arm64' -ldflags="
-            -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))'
-            -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)'
-            -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" ./...
+            -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))'
+            -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)'
+            -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" ./...
 
       - name: Install zip
         run: brew install zip
@@ -90,16 +90,16 @@ jobs:
     steps:
       - name: Pull source
         uses: actions/checkout@v1
-        
+
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v1
-        
+
       - name: Login to DockerHub
-        uses: docker/login-action@v1 
+        uses: docker/login-action@v1
         with:
           username: ${{ secrets.DOCKERHUB_USERNAME }}
           password: ${{ secrets.DOCKERHUB_TOKEN }}
-          
+
       - id: get_version
         uses: battila7/get-version-action@v2
 
@@ -136,7 +136,7 @@ jobs:
     steps:
       - name: Pull source
         uses: actions/checkout@v1
-        
+
       - id: get_version
         uses: battila7/get-version-action@v2
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 061fc96..86abbfd 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -56,13 +56,13 @@ go run cmd/gorse-master/main.go --config config/config.toml
 - Start the worker node.
 
 ```bash
-go run cmd/gorse-worker/main.go 
+go run cmd/gorse-worker/main.go
 ```
 
 - Start the server node.
 
 ```bash
-go run cmd/gorse-server/main.go 
+go run cmd/gorse-server/main.go
 ```
 
 ### Run Unit Tests
@@ -91,7 +91,7 @@ MYSQL_URI=mysql://root:password@tcp(127.0.0.1:4000)/ go test -v ./...
 
 ## Your First Contribution
 
-You can start by finding an existing issue with the [help wanted](https://github.com/zhenghaoz/gorse/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) label in the Gorse repository. These issues are well suited for new contributors. Issues can be claimed by publishing an `/assign` comment.
+You can start by finding an existing issue with the [help wanted](https://github.com/gorse-io/gorse/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) label in the Gorse repository. These issues are well suited for new contributors. Issues can be claimed by publishing an `/assign` comment.
 
 ### Contribution Workflow
 
diff --git a/README.md b/README.md
index 974550e..7ca45f8 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
 ![](https://img.shields.io/github/go-mod/go-version/zhenghaoz/gorse)
 [![test](https://github.com/gorse-io/gorse/actions/workflows/build_test.yml/badge.svg)](https://github.com/gorse-io/gorse/actions/workflows/build_test.yml)
 [![codecov](https://codecov.io/gh/gorse-io/gorse/branch/master/graph/badge.svg)](https://codecov.io/gh/gorse-io/gorse)
-[![Go Report Card](https://goreportcard.com/badge/github.com/zhenghaoz/gorse)](https://goreportcard.com/report/github.com/zhenghaoz/gorse)
+[![Go Report Card](https://goreportcard.com/badge/github.com/gorse-io/gorse)](https://goreportcard.com/report/github.com/gorse-io/gorse)
 [![Discord](https://img.shields.io/discord/830635934210588743)](https://discord.gg/x6gAtNNkAE)
 [![Twitter Follow](https://img.shields.io/twitter/follow/gorse_io?label=Follow&style=social)](https://twitter.com/gorse_io)
 [![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Gorse%20Guru-006BFF)](https://gurubase.io/g/gorse)
@@ -23,7 +23,7 @@ Gorse is an open-source recommendation system written in Go. Gorse aims to be a
 
 ## Quick Start
 
-The playground mode has been prepared for beginners. Just set up a recommender system for GitHub repositories by the following commands. 
+The playground mode has been prepared for beginners. Just set up a recommender system for GitHub repositories by the following commands.
 
 - Linux/macOS:
 
@@ -108,7 +108,7 @@ In addition, the administrator can perform system monitoring, data import and ex
 
 ## Contributors
 
-<a href="https://github.com/zhenghaoz/gorse/graphs/contributors">
+<a href="https://github.com/gorse-io/gorse/graphs/contributors">
   <img src="https://contrib.rocks/image?repo=zhenghaoz/gorse" />
 </a>
 
diff --git a/base/index.go b/base/index.go
index 5043563..112b8a3 100644
--- a/base/index.go
+++ b/base/index.go
@@ -16,9 +16,10 @@ package base
 
 import (
 	"encoding/binary"
-	"github.com/juju/errors"
-	"github.com/zhenghaoz/gorse/base/encoding"
 	"io"
+
+	"github.com/gorse-io/gorse/base/encoding"
+	"github.com/juju/errors"
 )
 
 // MarshalIndex marshal index into byte stream.
diff --git a/base/task/schedule.go b/base/task/schedule.go
index 7f0bbac..672960a 100644
--- a/base/task/schedule.go
+++ b/base/task/schedule.go
@@ -19,8 +19,8 @@ import (
 	"sort"
 	"sync"
 
+	"github.com/gorse-io/gorse/base/log"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/log"
 	"go.uber.org/zap"
 	"modernc.org/mathutil"
 )
diff --git a/base/unified_index.go b/base/unified_index.go
index 196c736..ecbd7a3 100644
--- a/base/unified_index.go
+++ b/base/unified_index.go
@@ -20,8 +20,8 @@ import (
 	"io"
 	"strconv"
 
+	"github.com/gorse-io/gorse/base/log"
 	"github.com/juju/errors"
-	"github.com/zhenghaoz/gorse/base/log"
 )
 
 // UnifiedIndex maps users, items and labels into a unified encoding space.
diff --git a/base/util.go b/base/util.go
index 8ea8639..127297f 100644
--- a/base/util.go
+++ b/base/util.go
@@ -18,7 +18,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/zhenghaoz/gorse/base/log"
+	"github.com/gorse-io/gorse/base/log"
 	"go.uber.org/zap"
 )
 
diff --git a/cmd/gorse-in-one/Dockerfile b/cmd/gorse-in-one/Dockerfile
index b1f04f0..3dbbd22 100644
--- a/cmd/gorse-in-one/Dockerfile
+++ b/cmd/gorse-in-one/Dockerfile
@@ -7,9 +7,9 @@ COPY . gorse
 
 RUN cd gorse/cmd/gorse-in-one && \
     CGO_ENABLED=0 go build -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" . && \
+    -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+    -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+    -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" . && \
     mv gorse-in-one /usr/bin
 
 RUN /usr/bin/gorse-in-one --version
diff --git a/cmd/gorse-in-one/Dockerfile.cuda b/cmd/gorse-in-one/Dockerfile.cuda
index f4352c1..5f51ac9 100644
--- a/cmd/gorse-in-one/Dockerfile.cuda
+++ b/cmd/gorse-in-one/Dockerfile.cuda
@@ -24,9 +24,9 @@ RUN cd common/blas/cublas && make
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-in-one && \
     go build -tags cuda -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" . && \
+       -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+       -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+       -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" . && \
        mv gorse-in-one /usr/bin
 
 RUN /usr/bin/gorse-in-one --version
diff --git a/cmd/gorse-in-one/Dockerfile.windows b/cmd/gorse-in-one/Dockerfile.windows
index 90e830a..d3317ec 100644
--- a/cmd/gorse-in-one/Dockerfile.windows
+++ b/cmd/gorse-in-one/Dockerfile.windows
@@ -5,13 +5,13 @@ FROM golang:1.24
 
 COPY . gorse
 
-ENV CGO_ENABLED 0 
+ENV CGO_ENABLED 0
 
 RUN cd gorse/cmd/gorse-in-one; \
     go build -ldflags="\" \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'\"" .; \
+        -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+        -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+        -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'\"" .; \
     mv gorse-in-one.exe /gorse-in-one.exe
 
 RUN /gorse-in-one.exe --version
diff --git a/cmd/gorse-in-one/main.go b/cmd/gorse-in-one/main.go
index 255a972..bfe4e57 100644
--- a/cmd/gorse-in-one/main.go
+++ b/cmd/gorse-in-one/main.go
@@ -29,17 +29,17 @@ import (
 
 	"github.com/benhoyt/goawk/interp"
 	"github.com/benhoyt/goawk/parser"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/master"
+	"github.com/gorse-io/gorse/storage"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/gorse-io/gorse/worker"
 	"github.com/juju/errors"
 	"github.com/schollz/progressbar/v3"
 	"github.com/spf13/cobra"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/master"
-	"github.com/zhenghaoz/gorse/storage"
-	"github.com/zhenghaoz/gorse/storage/data"
-	"github.com/zhenghaoz/gorse/worker"
 	"go.uber.org/zap"
 )
 
diff --git a/cmd/gorse-master/Dockerfile b/cmd/gorse-master/Dockerfile
index b340d21..34704f5 100644
--- a/cmd/gorse-master/Dockerfile
+++ b/cmd/gorse-master/Dockerfile
@@ -16,9 +16,9 @@ COPY . ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-master && \
     CGO_ENABLED=0 go build -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" .
+    -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+    -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+    -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" .
 
 RUN /src/cmd/gorse-master/gorse-master --version
 
diff --git a/cmd/gorse-master/Dockerfile.cuda b/cmd/gorse-master/Dockerfile.cuda
index a476550..502be76 100644
--- a/cmd/gorse-master/Dockerfile.cuda
+++ b/cmd/gorse-master/Dockerfile.cuda
@@ -24,9 +24,9 @@ RUN cd common/blas/cublas && make
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-master && \
     go build -tags cuda -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" .
+       -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+       -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+       -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" .
 
 RUN /src/cmd/gorse-master/gorse-master --version
 
diff --git a/cmd/gorse-master/Dockerfile.windows b/cmd/gorse-master/Dockerfile.windows
index 62b18f9..3b424b6 100644
--- a/cmd/gorse-master/Dockerfile.windows
+++ b/cmd/gorse-master/Dockerfile.windows
@@ -5,13 +5,13 @@ FROM golang:1.24
 
 COPY . gorse
 
-ENV CGO_ENABLED 0 
+ENV CGO_ENABLED 0
 
 RUN cd gorse/cmd/gorse-master; \
     go build -ldflags="\" \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'\"" .; \
+        -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+        -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+        -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'\"" .; \
     mv gorse-master.exe /gorse-master.exe
 
 RUN /gorse-master.exe --version
diff --git a/cmd/gorse-master/main.go b/cmd/gorse-master/main.go
index d652fe1..9b6c3c5 100644
--- a/cmd/gorse-master/main.go
+++ b/cmd/gorse-master/main.go
@@ -18,11 +18,11 @@ import (
 	"os"
 	"os/signal"
 
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/master"
 	"github.com/spf13/cobra"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/master"
 	"go.uber.org/zap"
 )
 
diff --git a/cmd/gorse-server/Dockerfile b/cmd/gorse-server/Dockerfile
index e077e72..152d3ae 100644
--- a/cmd/gorse-server/Dockerfile
+++ b/cmd/gorse-server/Dockerfile
@@ -16,9 +16,9 @@ COPY . ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-server && \
     CGO_ENABLED=0 go build -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" .
+    -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+    -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+    -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" .
 
 RUN /src/cmd/gorse-server/gorse-server --version
 
diff --git a/cmd/gorse-server/Dockerfile.cuda b/cmd/gorse-server/Dockerfile.cuda
index 664bf8d..65cfb04 100644
--- a/cmd/gorse-server/Dockerfile.cuda
+++ b/cmd/gorse-server/Dockerfile.cuda
@@ -24,9 +24,9 @@ RUN cd common/blas/cublas && make
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-server && \
     go build -tags cuda -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" .
+       -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+       -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+       -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" .
 
 RUN /src/cmd/gorse-server/gorse-server --version
 
diff --git a/cmd/gorse-server/Dockerfile.windows b/cmd/gorse-server/Dockerfile.windows
index 6025be4..91ac039 100644
--- a/cmd/gorse-server/Dockerfile.windows
+++ b/cmd/gorse-server/Dockerfile.windows
@@ -5,13 +5,13 @@ FROM golang:1.24
 
 COPY . gorse
 
-ENV CGO_ENABLED 0 
+ENV CGO_ENABLED 0
 
 RUN cd gorse/cmd/gorse-server; \
     go build -ldflags="\" \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'\"" .; \
+        -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+        -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+        -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'\"" .; \
     mv gorse-server.exe /gorse-server.exe
 
 RUN /gorse-server.exe --version
diff --git a/cmd/gorse-server/main.go b/cmd/gorse-server/main.go
index 7c923ff..6b366e9 100644
--- a/cmd/gorse-server/main.go
+++ b/cmd/gorse-server/main.go
@@ -18,11 +18,11 @@ import (
 	"os"
 	"os/signal"
 
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/server"
 	"github.com/spf13/cobra"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/server"
 	"go.uber.org/zap"
 )
 
diff --git a/cmd/gorse-worker/Dockerfile b/cmd/gorse-worker/Dockerfile
index 8bed692..adc6d17 100644
--- a/cmd/gorse-worker/Dockerfile
+++ b/cmd/gorse-worker/Dockerfile
@@ -16,9 +16,9 @@ COPY . ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-worker && \
     CGO_ENABLED=0 go build -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" .
+    -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+    -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+    -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" .
 
 RUN /src/cmd/gorse-worker/gorse-worker --version
 
diff --git a/cmd/gorse-worker/Dockerfile.cuda b/cmd/gorse-worker/Dockerfile.cuda
index b3cf260..89c6493 100644
--- a/cmd/gorse-worker/Dockerfile.cuda
+++ b/cmd/gorse-worker/Dockerfile.cuda
@@ -24,9 +24,9 @@ RUN cd common/blas/cublas && make
 RUN --mount=type=cache,target=/root/.cache/go-build \
     cd cmd/gorse-worker && \
     go build -tags cuda -ldflags=" \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-       -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" .
+       -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+       -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+       -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'" .
 
 RUN /src/cmd/gorse-worker/gorse-worker --version
 
diff --git a/cmd/gorse-worker/Dockerfile.windows b/cmd/gorse-worker/Dockerfile.windows
index f0305c4..4f74341 100644
--- a/cmd/gorse-worker/Dockerfile.windows
+++ b/cmd/gorse-worker/Dockerfile.windows
@@ -5,13 +5,13 @@ FROM golang:1.24
 
 COPY . gorse
 
-ENV CGO_ENABLED 0 
+ENV CGO_ENABLED 0
 
 RUN cd gorse/cmd/gorse-worker; \
     go build -ldflags="\" \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
-        -X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'\"" .; \
+        -X 'github.com/gorse-io/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))' \
+        -X 'github.com/gorse-io/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)' \
+        -X 'github.com/gorse-io/gorse/cmd/version.BuildTime=$(date)'\"" .; \
     mv gorse-worker.exe /gorse-worker.exe
 
 RUN /gorse-worker.exe --version
diff --git a/cmd/gorse-worker/main.go b/cmd/gorse-worker/main.go
index 7772e79..a4bf616 100644
--- a/cmd/gorse-worker/main.go
+++ b/cmd/gorse-worker/main.go
@@ -17,11 +17,11 @@ import (
 	"fmt"
 	_ "net/http/pprof"
 
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/worker"
 	"github.com/spf13/cobra"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/worker"
 	"go.uber.org/zap"
 )
 
diff --git a/common/ann/bruteforce.go b/common/ann/bruteforce.go
index 40ffda4..2955795 100644
--- a/common/ann/bruteforce.go
+++ b/common/ann/bruteforce.go
@@ -15,9 +15,9 @@
 package ann
 
 import (
+	"github.com/gorse-io/gorse/base/heap"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/heap"
 )
 
 // Bruteforce is a naive implementation of vector index.
diff --git a/common/ann/hnsw.go b/common/ann/hnsw.go
index 29ebbc5..7f65a12 100644
--- a/common/ann/hnsw.go
+++ b/common/ann/hnsw.go
@@ -15,14 +15,15 @@
 package ann
 
 import (
+	"math/rand"
+	"sync"
+
 	"github.com/chewxy/math32"
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base/heap"
 	"github.com/pkg/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/heap"
-	"math/rand"
 	"modernc.org/mathutil"
-	"sync"
 )
 
 // HNSW is a vector index based on Hierarchical Navigable Small Worlds.
diff --git a/common/datautil/datautil.go b/common/datautil/datautil.go
index 346e554..d1a07b6 100644
--- a/common/datautil/datautil.go
+++ b/common/datautil/datautil.go
@@ -25,8 +25,8 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/util"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/util"
 	"go.uber.org/zap"
 )
 
diff --git a/common/expression/expression.go b/common/expression/expression.go
index 7a0d4cb..a2b082e 100644
--- a/common/expression/expression.go
+++ b/common/expression/expression.go
@@ -21,8 +21,8 @@ import (
 	"regexp"
 	"strconv"
 
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/protocol"
 )
 
 var expressionPattern = regexp.MustCompile(`^(?P<feedback_type>[a-zA-Z][a-zA-Z0-9_]*)(?P<expr_type><=|>=|<|>|=)?(?P<value>[0-9]*\.?[0-9]*)$`)
diff --git a/common/floats/mm_cuda.go b/common/floats/mm_cuda.go
index eefd60e..139738d 100644
--- a/common/floats/mm_cuda.go
+++ b/common/floats/mm_cuda.go
@@ -16,7 +16,7 @@
 
 package floats
 
-import "github.com/zhenghaoz/gorse/common/blas"
+import "github.com/gorse-io/gorse/common/blas"
 
 func init() {
 	feature = feature | CUDA
diff --git a/common/floats/mm_darwin_arm64.go b/common/floats/mm_darwin_arm64.go
index 21e69d9..9ad8f5f 100644
--- a/common/floats/mm_darwin_arm64.go
+++ b/common/floats/mm_darwin_arm64.go
@@ -16,7 +16,7 @@
 
 package floats
 
-import "github.com/zhenghaoz/gorse/common/blas"
+import "github.com/gorse-io/gorse/common/blas"
 
 func init() {
 	feature = feature | AMX
diff --git a/common/nn/layers.go b/common/nn/layers.go
index f4c9e3a..40be35d 100644
--- a/common/nn/layers.go
+++ b/common/nn/layers.go
@@ -15,13 +15,14 @@
 package nn
 
 import (
-	"github.com/chewxy/math32"
-	"github.com/juju/errors"
-	"github.com/matttproud/golang_protobuf_extensions/pbutil"
-	"github.com/zhenghaoz/gorse/protocol"
 	"io"
 	"reflect"
 	"strconv"
+
+	"github.com/chewxy/math32"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/juju/errors"
+	"github.com/matttproud/golang_protobuf_extensions/pbutil"
 )
 
 type Layer interface {
diff --git a/common/nn/optimizers.go b/common/nn/optimizers.go
index 9e216c7..0fa4599 100644
--- a/common/nn/optimizers.go
+++ b/common/nn/optimizers.go
@@ -18,8 +18,8 @@ import (
 	"sync"
 
 	"github.com/chewxy/math32"
+	"github.com/gorse-io/gorse/common/floats"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/common/floats"
 )
 
 type Optimizer interface {
diff --git a/common/nn/tensor.go b/common/nn/tensor.go
index c3153ca..9e56abd 100644
--- a/common/nn/tensor.go
+++ b/common/nn/tensor.go
@@ -24,10 +24,10 @@ import (
 
 	"github.com/chewxy/math32"
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/protocol"
 	"golang.org/x/exp/slices"
 )
 
diff --git a/common/parallel/parallel.go b/common/parallel/parallel.go
index aa0b7be..3a813ed 100644
--- a/common/parallel/parallel.go
+++ b/common/parallel/parallel.go
@@ -15,9 +15,10 @@
 package parallel
 
 import (
-	"github.com/zhenghaoz/gorse/base"
 	"sync"
 
+	"github.com/gorse-io/gorse/base"
+
 	"github.com/juju/errors"
 	"modernc.org/mathutil"
 )
diff --git a/config/config.go b/config/config.go
index 1b63312..bc94e9c 100644
--- a/config/config.go
+++ b/config/config.go
@@ -33,12 +33,12 @@ import (
 	"github.com/go-playground/validator/v10"
 	en_translations "github.com/go-playground/validator/v10/translations/en"
 	"github.com/go-viper/mapstructure/v2"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
 	"github.com/spf13/viper"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/storage"
 	"go.opentelemetry.io/otel/exporters/jaeger"
 	"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
 	"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
diff --git a/config/settings.go b/config/settings.go
index 0126873..bbb88d5 100644
--- a/config/settings.go
+++ b/config/settings.go
@@ -15,10 +15,10 @@
 package config
 
 import (
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 )
 
 type Settings struct {
diff --git a/dataset/dataset.go b/dataset/dataset.go
index 3a27532..b8beac7 100644
--- a/dataset/dataset.go
+++ b/dataset/dataset.go
@@ -24,12 +24,12 @@ import (
 
 	"github.com/chewxy/math32"
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/model"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/model"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"modernc.org/strutil"
 )
 
diff --git a/dataset/dict.go b/dataset/dict.go
index d3cbe19..5b2356f 100644
--- a/dataset/dict.go
+++ b/dataset/dict.go
@@ -14,7 +14,7 @@
 
 package dataset
 
-import "github.com/zhenghaoz/gorse/base"
+import "github.com/gorse-io/gorse/base"
 
 type FreqDict struct {
 	si  map[string]int32
diff --git a/go.mod b/go.mod
index c85fa78..a960c6d 100644
--- a/go.mod
+++ b/go.mod
@@ -1,4 +1,4 @@
-module github.com/zhenghaoz/gorse
+module github.com/gorse-io/gorse
 
 go 1.24
 
diff --git a/logics/cf.go b/logics/cf.go
index 6917f3d..1521bb0 100644
--- a/logics/cf.go
+++ b/logics/cf.go
@@ -17,12 +17,12 @@ package logics
 import (
 	"time"
 
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/ann"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/ann"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.uber.org/zap"
 )
 
diff --git a/logics/chat.go b/logics/chat.go
index 51f6208..4012115 100644
--- a/logics/chat.go
+++ b/logics/chat.go
@@ -20,12 +20,12 @@ import (
 	"time"
 
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/nikolalohinski/gonja/v2"
 	"github.com/nikolalohinski/gonja/v2/exec"
 	"github.com/sashabaranov/go-openai"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.uber.org/zap"
 )
 
diff --git a/logics/item_to_item.go b/logics/item_to_item.go
index df8fd9a..6b88794 100644
--- a/logics/item_to_item.go
+++ b/logics/item_to_item.go
@@ -27,6 +27,15 @@ import (
 	mapset "github.com/deckarep/golang-set/v2"
 	"github.com/expr-lang/expr"
 	"github.com/expr-lang/expr/vm"
+	"github.com/gorse-io/gorse/base/heap"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/ann"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/nikolalohinski/gonja/v2"
 	"github.com/nikolalohinski/gonja/v2/exec"
 	"github.com/samber/lo"
@@ -35,15 +44,6 @@ import (
 	"github.com/yuin/goldmark"
 	"github.com/yuin/goldmark/ast"
 	"github.com/yuin/goldmark/text"
-	"github.com/zhenghaoz/gorse/base/heap"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/ann"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.uber.org/zap"
 )
 
diff --git a/logics/non_personalized.go b/logics/non_personalized.go
index 3698213..c45c496 100644
--- a/logics/non_personalized.go
+++ b/logics/non_personalized.go
@@ -16,20 +16,21 @@ package logics
 
 import (
 	"fmt"
+	"reflect"
+	"sort"
+	"sync"
+	"time"
+
 	"github.com/expr-lang/expr"
 	"github.com/expr-lang/expr/vm"
+	"github.com/gorse-io/gorse/base/heap"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/heap"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.uber.org/zap"
-	"reflect"
-	"sort"
-	"sync"
-	"time"
 )
 
 type NonPersonalized struct {
diff --git a/logics/user_to_user.go b/logics/user_to_user.go
index d83397b..e5d1180 100644
--- a/logics/user_to_user.go
+++ b/logics/user_to_user.go
@@ -21,15 +21,15 @@ import (
 	mapset "github.com/deckarep/golang-set/v2"
 	"github.com/expr-lang/expr"
 	"github.com/expr-lang/expr/vm"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/ann"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/ann"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.uber.org/zap"
 )
 
diff --git a/master/master.go b/master/master.go
index 157cd63..c07fc2a 100644
--- a/master/master.go
+++ b/master/master.go
@@ -27,26 +27,26 @@ import (
 
 	"github.com/coreos/go-oidc/v3/oidc"
 	"github.com/emicklei/go-restful/v3"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/base/task"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/server"
+	"github.com/gorse-io/gorse/storage"
+	"github.com/gorse-io/gorse/storage/blob"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/gorse-io/gorse/storage/meta"
 	"github.com/jellydator/ttlcache/v3"
 	"github.com/juju/errors"
 	"github.com/sashabaranov/go-openai"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/base/task"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/server"
-	"github.com/zhenghaoz/gorse/storage"
-	"github.com/zhenghaoz/gorse/storage/blob"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
-	"github.com/zhenghaoz/gorse/storage/meta"
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/propagation"
 	"go.uber.org/zap"
diff --git a/master/metrics.go b/master/metrics.go
index 48902d0..e19d2bc 100644
--- a/master/metrics.go
+++ b/master/metrics.go
@@ -18,10 +18,10 @@ import (
 	"time"
 
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/storage/cache"
 	"github.com/prometheus/client_golang/prometheus"
 	"github.com/prometheus/client_golang/prometheus/promauto"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/storage/cache"
 )
 
 const (
diff --git a/master/rest.go b/master/rest.go
index 54263b1..b2b776e 100644
--- a/master/rest.go
+++ b/master/rest.go
@@ -34,24 +34,24 @@ import (
 	"github.com/go-viper/mapstructure/v2"
 	"github.com/gorilla/securecookie"
 	_ "github.com/gorse-io/dashboard"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/server"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/gorse-io/gorse/storage/meta"
 	"github.com/juju/errors"
 	"github.com/rakyll/statik/fs"
 	"github.com/samber/lo"
 	"github.com/sashabaranov/go-openai"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/server"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
-	"github.com/zhenghaoz/gorse/storage/meta"
 	"go.uber.org/zap"
 	"google.golang.org/protobuf/proto"
 	"google.golang.org/protobuf/types/known/timestamppb"
diff --git a/master/rpc.go b/master/rpc.go
index 84a417e..d2316e4 100644
--- a/master/rpc.go
+++ b/master/rpc.go
@@ -17,10 +17,11 @@ package master
 import (
 	"context"
 	"encoding/json"
-	"github.com/juju/errors"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/storage/meta"
 	"time"
+
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/storage/meta"
+	"github.com/juju/errors"
 )
 
 // GetMeta returns latest configuration.
diff --git a/master/tasks.go b/master/tasks.go
index c7e3a30..3135724 100644
--- a/master/tasks.go
+++ b/master/tasks.go
@@ -23,23 +23,23 @@ import (
 	"time"
 
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/base/task"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/common/sizeof"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/logics"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/gorse-io/gorse/storage/meta"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/base/task"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/common/sizeof"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/logics"
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
-	"github.com/zhenghaoz/gorse/storage/meta"
 	"go.uber.org/zap"
 	"google.golang.org/protobuf/proto"
 )
diff --git a/model/built_in.go b/model/built_in.go
index e13d301..6543504 100644
--- a/model/built_in.go
+++ b/model/built_in.go
@@ -24,7 +24,7 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/zhenghaoz/gorse/base/log"
+	"github.com/gorse-io/gorse/base/log"
 	"go.uber.org/zap"
 )
 
diff --git a/model/cf/evaluator.go b/model/cf/evaluator.go
index 613a5ee..da4fffb 100644
--- a/model/cf/evaluator.go
+++ b/model/cf/evaluator.go
@@ -17,11 +17,11 @@ package cf
 import (
 	"github.com/chewxy/math32"
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base/heap"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/dataset"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/heap"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/dataset"
 )
 
 /* Evaluate Item Ranking */
diff --git a/model/cf/model.go b/model/cf/model.go
index 06cc169..308d0c8 100644
--- a/model/cf/model.go
+++ b/model/cf/model.go
@@ -25,19 +25,19 @@ import (
 	"github.com/bits-and-blooms/bitset"
 	"github.com/chewxy/math32"
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/copier"
+	"github.com/gorse-io/gorse/base/encoding"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/juju/errors"
 	"github.com/matttproud/golang_protobuf_extensions/pbutil"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/copier"
-	"github.com/zhenghaoz/gorse/base/encoding"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
-	"github.com/zhenghaoz/gorse/protocol"
 	"go.uber.org/zap"
 )
 
diff --git a/model/cf/search.go b/model/cf/search.go
index 1dd66ee..57bba2b 100644
--- a/model/cf/search.go
+++ b/model/cf/search.go
@@ -20,12 +20,12 @@ import (
 	"sync"
 	"time"
 
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/base/task"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/base/task"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
 	"go.uber.org/zap"
 )
 
diff --git a/model/ctr/data.go b/model/ctr/data.go
index 0f47493..fca9a58 100644
--- a/model/ctr/data.go
+++ b/model/ctr/data.go
@@ -22,11 +22,11 @@ import (
 	"strings"
 
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/jsonutil"
+	"github.com/gorse-io/gorse/model"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/jsonutil"
-	"github.com/zhenghaoz/gorse/model"
 	"modernc.org/mathutil"
 )
 
diff --git a/model/ctr/evaluator.go b/model/ctr/evaluator.go
index 786892a..56c29a3 100644
--- a/model/ctr/evaluator.go
+++ b/model/ctr/evaluator.go
@@ -15,9 +15,10 @@
 package ctr
 
 import (
-	"github.com/zhenghaoz/gorse/dataset"
 	"sort"
 
+	"github.com/gorse-io/gorse/dataset"
+
 	"github.com/chewxy/math32"
 	"github.com/samber/lo"
 	"modernc.org/sortutil"
diff --git a/model/ctr/model.go b/model/ctr/model.go
index dca1254..983c59a 100644
--- a/model/ctr/model.go
+++ b/model/ctr/model.go
@@ -24,18 +24,18 @@ import (
 	"time"
 
 	"github.com/chewxy/math32"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/copier"
+	"github.com/gorse-io/gorse/base/encoding"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/nn"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/copier"
-	"github.com/zhenghaoz/gorse/base/encoding"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/nn"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
 	"go.uber.org/zap"
 	"modernc.org/mathutil"
 )
diff --git a/model/ctr/search.go b/model/ctr/search.go
index 833011d..9520779 100644
--- a/model/ctr/search.go
+++ b/model/ctr/search.go
@@ -17,15 +17,16 @@ package ctr
 import (
 	"context"
 	"fmt"
-	"github.com/zhenghaoz/gorse/dataset"
 	"sync"
 	"time"
 
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/base/task"
-	"github.com/zhenghaoz/gorse/model"
+	"github.com/gorse-io/gorse/dataset"
+
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/base/task"
+	"github.com/gorse-io/gorse/model"
 	"go.uber.org/zap"
 )
 
diff --git a/model/model.go b/model/model.go
index a1f731a..804cc6e 100644
--- a/model/model.go
+++ b/model/model.go
@@ -15,7 +15,7 @@
 package model
 
 import (
-	"github.com/zhenghaoz/gorse/base"
+	"github.com/gorse-io/gorse/base"
 )
 
 // Model is the interface for all models. Any model in this
diff --git a/model/params.go b/model/params.go
index 37ac81f..57ab390 100644
--- a/model/params.go
+++ b/model/params.go
@@ -18,7 +18,7 @@ import (
 	"encoding/json"
 	"reflect"
 
-	"github.com/zhenghaoz/gorse/base/log"
+	"github.com/gorse-io/gorse/base/log"
 	"go.uber.org/zap"
 )
 
diff --git a/protocol/cache_store.proto b/protocol/cache_store.proto
index bae0c21..faabd69 100644
--- a/protocol/cache_store.proto
+++ b/protocol/cache_store.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/zhenghaoz/gorse/protocol";
+option go_package = "github.com/gorse-io/gorse/protocol";
 
 package protocol;
 
@@ -52,33 +52,21 @@ message TimeSeriesPoint {
   double value = 3;
 }
 
-message GetRequest {
-  string name = 1;
-}
+message GetRequest { string name = 1; }
 
-message GetResponse {
-  optional string value = 1;
-}
+message GetResponse { optional string value = 1; }
 
-message SetRequest {
-  repeated Value values = 1;
-}
+message SetRequest { repeated Value values = 1; }
 
 message SetResponse {}
 
-message DeleteRequest {
-  string name = 1;
-}
+message DeleteRequest { string name = 1; }
 
 message DeleteResponse {}
 
-message GetSetRequest {
-  string key = 1;
-}
+message GetSetRequest { string key = 1; }
 
-message GetSetResponse {
-  repeated string members = 1;
-}
+message GetSetResponse { repeated string members = 1; }
 
 message SetSetRequest {
   string key = 1;
@@ -108,21 +96,13 @@ message PushRequest {
 
 message PushResponse {}
 
-message PopRequest {
-  string name = 1;
-}
+message PopRequest { string name = 1; }
 
-message PopResponse {
-  optional string value = 1;
-}
+message PopResponse { optional string value = 1; }
 
-message RemainRequest {
-  string name = 1;
-}
+message RemainRequest { string name = 1; }
 
-message RemainResponse {
-  int64 count = 1;
-}
+message RemainResponse { int64 count = 1; }
 
 message AddScoresRequest {
   string collection = 1;
@@ -140,9 +120,7 @@ message SearchScoresRequest {
   int32 end = 5;
 }
 
-message SearchScoresResponse {
-  repeated Score documents = 1;
-}
+message SearchScoresResponse { repeated Score documents = 1; }
 
 message DeleteScoresRequest {
   repeated string collection = 1;
@@ -169,9 +147,7 @@ message ScanScoresResponse {
   google.protobuf.Timestamp timestamp = 4;
 }
 
-message AddTimeSeriesPointsRequest {
-  repeated TimeSeriesPoint points = 1;
-}
+message AddTimeSeriesPointsRequest { repeated TimeSeriesPoint points = 1; }
 
 message AddTimeSeriesPointsResponse {}
 
@@ -182,9 +158,7 @@ message GetTimeSeriesPointsRequest {
   int64 duration = 4;
 }
 
-message GetTimeSeriesPointsResponse {
-  repeated TimeSeriesPoint points = 1;
-}
+message GetTimeSeriesPointsResponse { repeated TimeSeriesPoint points = 1; }
 
 service CacheStore {
   rpc Ping(PingRequest) returns (PingResponse) {}
@@ -203,6 +177,8 @@ service CacheStore {
   rpc DeleteScores(DeleteScoresRequest) returns (DeleteScoresResponse) {}
   rpc UpdateScores(UpdateScoresRequest) returns (UpdateScoresResponse) {}
   rpc ScanScores(ScanScoresRequest) returns (stream ScanScoresResponse) {}
-  rpc AddTimeSeriesPoints(AddTimeSeriesPointsRequest) returns (AddTimeSeriesPointsResponse) {}
-  rpc GetTimeSeriesPoints(GetTimeSeriesPointsRequest) returns (GetTimeSeriesPointsResponse) {}
+  rpc AddTimeSeriesPoints(AddTimeSeriesPointsRequest)
+      returns (AddTimeSeriesPointsResponse) {}
+  rpc GetTimeSeriesPoints(GetTimeSeriesPointsRequest)
+      returns (GetTimeSeriesPointsResponse) {}
 }
diff --git a/protocol/data_store.proto b/protocol/data_store.proto
index fdaa1b5..51a1367 100644
--- a/protocol/data_store.proto
+++ b/protocol/data_store.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/zhenghaoz/gorse/protocol";
+option go_package = "github.com/gorse-io/gorse/protocol";
 
 package protocol;
 
@@ -60,33 +60,21 @@ message ScanOptions {
   bool order_by_item_id = 8;
 }
 
-message BatchInsertItemsRequest {
-  repeated Item items = 1;
-}
+message BatchInsertItemsRequest { repeated Item items = 1; }
 
 message BatchInsertItemsResponse {}
 
-message BatchGetItemsRequest {
-  repeated string item_ids = 1;
-}
+message BatchGetItemsRequest { repeated string item_ids = 1; }
 
-message BatchGetItemsResponse {
-  repeated Item items = 1;
-}
+message BatchGetItemsResponse { repeated Item items = 1; }
 
-message DeleteItemRequest {
-  string item_id = 1;
-}
+message DeleteItemRequest { string item_id = 1; }
 
 message DeleteItemResponse {}
 
-message GetItemRequest {
-  string item_id = 1;
-}
+message GetItemRequest { string item_id = 1; }
 
-message GetItemResponse {
-  optional Item item = 1;
-}
+message GetItemResponse { optional Item item = 1; }
 
 message ModifyItemRequest {
   string item_id = 1;
@@ -111,25 +99,17 @@ message GetItemFeedbackRequest {
   repeated FeedbackTypeExpression feedback_types = 2;
 }
 
-message BatchInsertUsersRequest {
-  repeated User users = 1;
-}
+message BatchInsertUsersRequest { repeated User users = 1; }
 
 message BatchInsertUsersResponse {}
 
-message DeleteUserRequest {
-  string user_id = 1;
-}
+message DeleteUserRequest { string user_id = 1; }
 
 message DeleteUserResponse {}
 
-message GetUserRequest {
-  string user_id = 1;
-}
+message GetUserRequest { string user_id = 1; }
 
-message GetUserResponse {
-  optional User user = 1;
-}
+message GetUserResponse { optional User user = 1; }
 
 message ModifyUserRequest {
   string user_id = 1;
@@ -166,9 +146,7 @@ message DeleteUserItemFeedbackRequest {
   repeated string feedback_types = 3;
 }
 
-message DeleteUserItemFeedbackResponse {
-  int32 count = 1;
-}
+message DeleteUserItemFeedbackResponse { int32 count = 1; }
 
 message BatchInsertFeedbackRequest {
   repeated Feedback feedback = 1;
@@ -192,72 +170,66 @@ message GetFeedbackResponse {
   repeated Feedback feedback = 2;
 }
 
-message GetUserStreamRequest {
-  int32 batch_size = 1;
-}
+message GetUserStreamRequest { int32 batch_size = 1; }
 
-message GetUserStreamResponse {
-  repeated User users = 1;
-}
+message GetUserStreamResponse { repeated User users = 1; }
 
 message GetItemStreamRequest {
   int32 batch_size = 1;
   google.protobuf.Timestamp time_limit = 2;
 }
 
-message GetItemStreamResponse {
-  repeated Item items = 1;
-}
+message GetItemStreamResponse { repeated Item items = 1; }
 
 message GetFeedbackStreamRequest {
   int32 batch_size = 1;
   ScanOptions scan_options = 2;
 }
 
-message GetFeedbackStreamResponse {
-  repeated Feedback feedback = 1;
-}
+message GetFeedbackStreamResponse { repeated Feedback feedback = 1; }
 
 message CountUsersRequest {}
 
-message CountUsersResponse {
-  int32 count = 1;
-}
+message CountUsersResponse { int32 count = 1; }
 
 message CountItemsRequest {}
 
-message CountItemsResponse {
-  int32 count = 1;
-}
+message CountItemsResponse { int32 count = 1; }
 
 message CountFeedbackRequest {}
 
-message CountFeedbackResponse {
-  int32 count = 1;
-}
+message CountFeedbackResponse { int32 count = 1; }
 
 service DataStore {
   rpc Ping(PingRequest) returns (PingResponse) {}
-  rpc BatchInsertItems(BatchInsertItemsRequest) returns (BatchInsertItemsResponse) {}
+  rpc BatchInsertItems(BatchInsertItemsRequest)
+      returns (BatchInsertItemsResponse) {}
   rpc BatchGetItems(BatchGetItemsRequest) returns (BatchGetItemsResponse) {}
   rpc DeleteItem(DeleteItemRequest) returns (DeleteItemResponse) {}
   rpc GetItem(GetItemRequest) returns (GetItemResponse) {}
   rpc ModifyItem(ModifyItemRequest) returns (ModifyItemResponse) {}
   rpc GetItems(GetItemsRequest) returns (GetItemsResponse) {}
   rpc GetItemFeedback(GetItemFeedbackRequest) returns (GetFeedbackResponse) {}
-  rpc BatchInsertUsers(BatchInsertUsersRequest) returns (BatchInsertUsersResponse) {}
+  rpc BatchInsertUsers(BatchInsertUsersRequest)
+      returns (BatchInsertUsersResponse) {}
   rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) {}
   rpc GetUser(GetUserRequest) returns (GetUserResponse) {}
   rpc ModifyUser(ModifyUserRequest) returns (ModifyUserResponse) {}
   rpc GetUsers(GetUsersRequest) returns (GetUsersResponse) {}
   rpc GetUserFeedback(GetUserFeedbackRequest) returns (GetFeedbackResponse) {}
-  rpc GetUserItemFeedback(GetUserItemFeedbackRequest) returns (GetFeedbackResponse) {}
-  rpc DeleteUserItemFeedback(DeleteUserItemFeedbackRequest) returns (DeleteUserItemFeedbackResponse) {}
-  rpc BatchInsertFeedback(BatchInsertFeedbackRequest) returns (BatchInsertFeedbackResponse) {}
+  rpc GetUserItemFeedback(GetUserItemFeedbackRequest)
+      returns (GetFeedbackResponse) {}
+  rpc DeleteUserItemFeedback(DeleteUserItemFeedbackRequest)
+      returns (DeleteUserItemFeedbackResponse) {}
+  rpc BatchInsertFeedback(BatchInsertFeedbackRequest)
+      returns (BatchInsertFeedbackResponse) {}
   rpc GetFeedback(GetFeedbackRequest) returns (GetFeedbackResponse) {}
-  rpc GetUserStream(GetUserStreamRequest) returns (stream GetUserStreamResponse) {}
-  rpc GetItemStream(GetItemStreamRequest) returns (stream GetItemStreamResponse) {}
-  rpc GetFeedbackStream(GetFeedbackStreamRequest) returns (stream GetFeedbackStreamResponse) {}
+  rpc GetUserStream(GetUserStreamRequest)
+      returns (stream GetUserStreamResponse) {}
+  rpc GetItemStream(GetItemStreamRequest)
+      returns (stream GetItemStreamResponse) {}
+  rpc GetFeedbackStream(GetFeedbackStreamRequest)
+      returns (stream GetFeedbackStreamResponse) {}
   rpc CountUsers(CountUsersRequest) returns (CountUsersResponse) {}
   rpc CountItems(CountItemsRequest) returns (CountItemsResponse) {}
   rpc CountFeedback(CountFeedbackRequest) returns (CountFeedbackResponse) {}
diff --git a/protocol/encoding.proto b/protocol/encoding.proto
index a14c88d..20aad9a 100644
--- a/protocol/encoding.proto
+++ b/protocol/encoding.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/zhenghaoz/gorse/protocol";
+option go_package = "github.com/gorse-io/gorse/protocol";
 
 package protocol;
 
diff --git a/protocol/protocol.proto b/protocol/protocol.proto
index 8edb732..1c87ad3 100644
--- a/protocol/protocol.proto
+++ b/protocol/protocol.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/zhenghaoz/gorse/protocol";
+option go_package = "github.com/gorse-io/gorse/protocol";
 
 package protocol;
 
@@ -69,9 +69,7 @@ message Meta {
   repeated string workers = 7;
 }
 
-message Fragment {
-  bytes data = 1;
-}
+message Fragment { bytes data = 1; }
 
 message NodeInfo {
   NodeType node_type = 1;
@@ -91,9 +89,7 @@ message Progress {
   int64 finish_time = 8;
 }
 
-message PushProgressRequest {
-  repeated Progress progress = 1;
-}
+message PushProgressRequest { repeated Progress progress = 1; }
 
 message PushProgressResponse {}
 
@@ -109,21 +105,13 @@ message UploadBlobRequest {
 
 message UploadBlobResponse {}
 
-message FetchBlobRequest {
-  string name = 1;
-}
+message FetchBlobRequest { string name = 1; }
 
-message FetchBlobResponse {
-  google.protobuf.Timestamp timestamp = 1;
-}
+message FetchBlobResponse { google.protobuf.Timestamp timestamp = 1; }
 
-message DownloadBlobRequest {
-  string name = 1;
-}
+message DownloadBlobRequest { string name = 1; }
 
-message DownloadBlobResponse {
-  bytes data = 1;
-}
+message DownloadBlobResponse { bytes data = 1; }
 
 service BlobStore {
   rpc UploadBlob(stream UploadBlobRequest) returns (UploadBlobResponse) {}
diff --git a/protocol/task.go b/protocol/task.go
index a45f48b..ab088ac 100644
--- a/protocol/task.go
+++ b/protocol/task.go
@@ -17,7 +17,7 @@ package protocol
 import (
 	"time"
 
-	"github.com/zhenghaoz/gorse/base/progress"
+	"github.com/gorse-io/gorse/base/progress"
 )
 
 //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative cache_store.proto
diff --git a/server/rest.go b/server/rest.go
index e18b1e3..c4a136a 100644
--- a/server/rest.go
+++ b/server/rest.go
@@ -30,15 +30,15 @@ import (
 	restfulspec "github.com/emicklei/go-restful-openapi/v2"
 	"github.com/emicklei/go-restful/v3"
 	"github.com/google/uuid"
+	"github.com/gorse-io/gorse/base/heap"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/juju/errors"
 	"github.com/prometheus/client_golang/prometheus/promhttp"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/heap"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful"
 	"go.uber.org/zap"
 	"google.golang.org/protobuf/proto"
diff --git a/server/server.go b/server/server.go
index 9cab287..0c947ef 100644
--- a/server/server.go
+++ b/server/server.go
@@ -25,17 +25,17 @@ import (
 
 	"github.com/emicklei/go-restful/v3"
 	"github.com/google/uuid"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/storage"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/storage"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/propagation"
 	"go.uber.org/zap"
diff --git a/server/swagger.go b/server/swagger.go
index 3d731dd..4fa1887 100644
--- a/server/swagger.go
+++ b/server/swagger.go
@@ -16,7 +16,6 @@ package server
 
 import (
 	"fmt"
-	"github.com/zhenghaoz/gorse/base/log"
 	"net/http"
 	"net/url"
 	"os"
@@ -24,6 +23,8 @@ import (
 	"strconv"
 	"strings"
 
+	"github.com/gorse-io/gorse/base/log"
+
 	"go.uber.org/zap"
 
 	"github.com/haxii/go-swagger-ui/static"
diff --git a/storage/blob/blob.go b/storage/blob/blob.go
index 011748c..ab9fce8 100644
--- a/storage/blob/blob.go
+++ b/storage/blob/blob.go
@@ -16,16 +16,17 @@ package blob
 
 import (
 	"context"
-	"github.com/juju/errors"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/protocol"
-	"go.uber.org/zap"
-	"google.golang.org/grpc"
-	"google.golang.org/protobuf/types/known/timestamppb"
 	"io"
 	"os"
 	"path"
 	"time"
+
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/juju/errors"
+	"go.uber.org/zap"
+	"google.golang.org/grpc"
+	"google.golang.org/protobuf/types/known/timestamppb"
 )
 
 type Store interface {
diff --git a/storage/blob/posix.go b/storage/blob/posix.go
index 005cf83..001e72e 100644
--- a/storage/blob/posix.go
+++ b/storage/blob/posix.go
@@ -15,11 +15,12 @@
 package blob
 
 import (
-	"github.com/zhenghaoz/gorse/base/log"
-	"go.uber.org/zap"
 	"io"
 	"os"
 	"path"
+
+	"github.com/gorse-io/gorse/base/log"
+	"go.uber.org/zap"
 )
 
 type POSIX struct {
diff --git a/storage/blob/s3.go b/storage/blob/s3.go
index a545d27..3353a1d 100644
--- a/storage/blob/s3.go
+++ b/storage/blob/s3.go
@@ -16,13 +16,14 @@ package blob
 
 import (
 	"context"
+	"io"
+	"path/filepath"
+
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/config"
 	"github.com/minio/minio-go/v7"
 	"github.com/minio/minio-go/v7/pkg/credentials"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/config"
 	"go.uber.org/zap"
-	"io"
-	"path/filepath"
 )
 
 type S3 struct {
diff --git a/storage/cache/database.go b/storage/cache/database.go
index 752f9c9..0c07108 100644
--- a/storage/cache/database.go
+++ b/storage/cache/database.go
@@ -25,12 +25,12 @@ import (
 
 	"github.com/XSAM/otelsql"
 	"github.com/araddon/dateparse"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	"github.com/redis/go-redis/extra/redisotel/v9"
 	"github.com/redis/go-redis/v9"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/storage"
 	"go.mongodb.org/mongo-driver/mongo"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"go.mongodb.org/mongo-driver/x/mongo/driver/connstring"
diff --git a/storage/cache/mongodb.go b/storage/cache/mongodb.go
index 6c9160a..8952bb5 100644
--- a/storage/cache/mongodb.go
+++ b/storage/cache/mongodb.go
@@ -19,8 +19,8 @@ import (
 	"io"
 	"time"
 
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
-	"github.com/zhenghaoz/gorse/storage"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/mongo"
 	"go.mongodb.org/mongo-driver/mongo/options"
diff --git a/storage/cache/proxy.go b/storage/cache/proxy.go
index 9ce5691..a036a72 100644
--- a/storage/cache/proxy.go
+++ b/storage/cache/proxy.go
@@ -16,17 +16,18 @@ package cache
 
 import (
 	"context"
+	"io"
+	"net"
+	"time"
+
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/protocol"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 	"google.golang.org/protobuf/proto"
 	"google.golang.org/protobuf/types/known/timestamppb"
-	"io"
-	"net"
-	"time"
 )
 
 type ProxyServer struct {
diff --git a/storage/cache/redis.go b/storage/cache/redis.go
index c61838e..88b2b3f 100644
--- a/storage/cache/redis.go
+++ b/storage/cache/redis.go
@@ -23,11 +23,11 @@ import (
 	"strings"
 	"time"
 
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	"github.com/redis/go-redis/v9"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/storage"
 )
 
 // Redis cache storage.
diff --git a/storage/cache/sql.go b/storage/cache/sql.go
index 8bde995..098dabe 100644
--- a/storage/cache/sql.go
+++ b/storage/cache/sql.go
@@ -28,10 +28,10 @@ import (
 	"github.com/araddon/dateparse"
 	mapset "github.com/deckarep/golang-set/v2"
 	"github.com/go-sql-driver/mysql"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	"github.com/lib/pq"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/storage"
 	"gorm.io/gorm"
 	"gorm.io/gorm/clause"
 	"modernc.org/sqlite"
diff --git a/storage/data/database.go b/storage/data/database.go
index 17340b6..eec20e8 100644
--- a/storage/data/database.go
+++ b/storage/data/database.go
@@ -25,12 +25,12 @@ import (
 	"time"
 
 	"github.com/XSAM/otelsql"
+	"github.com/gorse-io/gorse/base/jsonutil"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/jsonutil"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/storage"
 	"go.mongodb.org/mongo-driver/mongo"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"go.mongodb.org/mongo-driver/x/mongo/driver/connstring"
diff --git a/storage/data/mongodb.go b/storage/data/mongodb.go
index 8b401a5..ffa0f00 100644
--- a/storage/data/mongodb.go
+++ b/storage/data/mongodb.go
@@ -21,9 +21,9 @@ import (
 	"time"
 
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/storage"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo"
diff --git a/storage/data/no_database.go b/storage/data/no_database.go
index 04c52ac..afd25e4 100644
--- a/storage/data/no_database.go
+++ b/storage/data/no_database.go
@@ -16,8 +16,9 @@ package data
 
 import (
 	"context"
-	"github.com/zhenghaoz/gorse/common/expression"
 	"time"
+
+	"github.com/gorse-io/gorse/common/expression"
 )
 
 // NoDatabase means that no database used.
diff --git a/storage/data/proxy.go b/storage/data/proxy.go
index 4cd2482..7aaf146 100644
--- a/storage/data/proxy.go
+++ b/storage/data/proxy.go
@@ -21,10 +21,10 @@ import (
 	"net"
 	"time"
 
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/protocol"
 	"google.golang.org/grpc"
 	"google.golang.org/protobuf/types/known/timestamppb"
 )
diff --git a/storage/data/sql.go b/storage/data/sql.go
index 9b22143..6e4f50e 100644
--- a/storage/data/sql.go
+++ b/storage/data/sql.go
@@ -23,14 +23,14 @@ import (
 
 	mapset "github.com/deckarep/golang-set/v2"
 	_ "github.com/go-sql-driver/mysql"
+	"github.com/gorse-io/gorse/base/jsonutil"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	_ "github.com/lib/pq"
 	_ "github.com/mailru/go-clickhouse/v2"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/jsonutil"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/storage"
 	"gorm.io/gorm"
 	"gorm.io/gorm/clause"
 	_ "modernc.org/sqlite"
diff --git a/storage/meta/database.go b/storage/meta/database.go
index 88ec68a..4a2d4ab 100644
--- a/storage/meta/database.go
+++ b/storage/meta/database.go
@@ -16,13 +16,14 @@ package meta
 
 import (
 	"encoding/json"
+	"strings"
+	"time"
+
 	"github.com/XSAM/otelsql"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/storage"
 	semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
-	"strings"
-	"time"
 )
 
 const (
diff --git a/storage/scheme.go b/storage/scheme.go
index 2ed2420..da2173b 100644
--- a/storage/scheme.go
+++ b/storage/scheme.go
@@ -20,9 +20,9 @@ import (
 	"strings"
 
 	"github.com/go-sql-driver/mysql"
+	"github.com/gorse-io/gorse/base/log"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base/log"
 	"gorm.io/gorm"
 	"gorm.io/gorm/schema"
 	"moul.io/zapgorm2"
diff --git a/worker/worker.go b/worker/worker.go
index 5fcd0d9..2354789 100644
--- a/worker/worker.go
+++ b/worker/worker.go
@@ -28,29 +28,29 @@ import (
 
 	mapset "github.com/deckarep/golang-set/v2"
 	"github.com/google/uuid"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/heap"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/cmd/version"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/common/sizeof"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/logics"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/storage"
+	"github.com/gorse-io/gorse/storage/blob"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/juju/errors"
 	"github.com/lafikl/consistent"
 	cmap "github.com/orcaman/concurrent-map"
 	"github.com/prometheus/client_golang/prometheus/promhttp"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/heap"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/cmd/version"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/common/sizeof"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/logics"
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/storage"
-	"github.com/zhenghaoz/gorse/storage/blob"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.uber.org/atomic"
 	"go.uber.org/zap"
 	"google.golang.org/grpc"



Test patch:
diff --git a/client/client_test.go b/client/client_test.go
index 43ee0a8..625fb08 100644
--- a/client/client_test.go
+++ b/client/client_test.go
@@ -23,9 +23,9 @@ import (
 	"time"
 
 	client "github.com/gorse-io/gorse-go"
+	"github.com/gorse-io/gorse/storage/cache"
 	"github.com/redis/go-redis/v9"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/storage/cache"
 )
 
 const (
diff --git a/common/ann/ann_test.go b/common/ann/ann_test.go
index b477948..66a8f87 100644
--- a/common/ann/ann_test.go
+++ b/common/ann/ann_test.go
@@ -16,19 +16,20 @@ package ann
 
 import (
 	"bufio"
-	mapset "github.com/deckarep/golang-set/v2"
-	"github.com/samber/lo"
-	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/common/datautil"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/util"
-	"go.uber.org/atomic"
 	"os"
 	"path/filepath"
 	"strconv"
 	"strings"
 	"sync"
 	"testing"
+
+	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/common/datautil"
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/samber/lo"
+	"github.com/stretchr/testify/assert"
+	"go.uber.org/atomic"
 )
 
 const (
diff --git a/common/expression/expression_test.go b/common/expression/expression_test.go
index bb357d0..8fb8269 100644
--- a/common/expression/expression_test.go
+++ b/common/expression/expression_test.go
@@ -17,8 +17,8 @@ package expression
 import (
 	"testing"
 
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/protocol"
 )
 
 func TestFeedbackTypeExpression_UnmarshalJSON(t *testing.T) {
diff --git a/common/nn/nn_test.go b/common/nn/nn_test.go
index a1e7593..f3fedb5 100644
--- a/common/nn/nn_test.go
+++ b/common/nn/nn_test.go
@@ -29,11 +29,11 @@ import (
 	"time"
 
 	"github.com/chewxy/math32"
+	"github.com/gorse-io/gorse/common/datautil"
+	"github.com/gorse-io/gorse/common/util"
 	"github.com/samber/lo"
 	"github.com/schollz/progressbar/v3"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/common/datautil"
-	"github.com/zhenghaoz/gorse/common/util"
 	"golang.org/x/sys/cpu"
 )
 
diff --git a/common/parallel/parallel_test.go b/common/parallel/parallel_test.go
index 3e46506..ab3f833 100644
--- a/common/parallel/parallel_test.go
+++ b/common/parallel/parallel_test.go
@@ -19,8 +19,8 @@ import (
 	"time"
 
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/base"
 )
 
 func TestParallel(t *testing.T) {
diff --git a/config/config_test.go b/config/config_test.go
index 85b3b70..31a01ed 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -23,11 +23,11 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/common/expression"
 	"github.com/sclevine/yj/convert"
 	"github.com/spf13/viper"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/common/expression"
 )
 
 func TestUnmarshal(t *testing.T) {
diff --git a/dataset/dataset_test.go b/dataset/dataset_test.go
index 5eb69d9..834e6cc 100644
--- a/dataset/dataset_test.go
+++ b/dataset/dataset_test.go
@@ -21,8 +21,8 @@ import (
 	"time"
 
 	"github.com/chewxy/math32"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/storage/data"
 )
 
 func TestDataset_AddItem(t *testing.T) {
diff --git a/logics/chat_test.go b/logics/chat_test.go
index 66234c5..6355bc0 100644
--- a/logics/chat_test.go
+++ b/logics/chat_test.go
@@ -17,10 +17,10 @@ package logics
 import (
 	"testing"
 
+	"github.com/gorse-io/gorse/common/mock"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/common/mock"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/data"
 )
 
 func TestChatRankerhat(t *testing.T) {
diff --git a/logics/item_to_item_test.go b/logics/item_to_item_test.go
index 02c5de4..9727857 100644
--- a/logics/item_to_item_test.go
+++ b/logics/item_to_item_test.go
@@ -19,14 +19,14 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/common/mock"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/common/mock"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/storage/data"
 )
 
 type ItemToItemTestSuite struct {
diff --git a/logics/non_personalized_test.go b/logics/non_personalized_test.go
index 6583b60..adb3bcc 100644
--- a/logics/non_personalized_test.go
+++ b/logics/non_personalized_test.go
@@ -15,12 +15,13 @@
 package logics
 
 import (
-	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"strconv"
 	"testing"
 	"time"
+
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/stretchr/testify/assert"
 )
 
 func TestLatest(t *testing.T) {
diff --git a/logics/user_to_user_test.go b/logics/user_to_user_test.go
index cf19cc7..dce891a 100644
--- a/logics/user_to_user_test.go
+++ b/logics/user_to_user_test.go
@@ -19,10 +19,10 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/storage/data"
 )
 
 type UserToUserTestSuite struct {
diff --git a/master/master_test.go b/master/master_test.go
index a582776..90b11a4 100644
--- a/master/master_test.go
+++ b/master/master_test.go
@@ -17,11 +17,11 @@ import (
 	"fmt"
 	"testing"
 
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 )
 
 type MasterTestSuite struct {
diff --git a/master/metrics_test.go b/master/metrics_test.go
index 4a2b225..2131b73 100644
--- a/master/metrics_test.go
+++ b/master/metrics_test.go
@@ -18,8 +18,8 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/storage/cache"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/storage/cache"
 )
 
 func TestOnlineEvaluator(t *testing.T) {
diff --git a/master/rest_test.go b/master/rest_test.go
index 5ad756d..e83d1b0 100644
--- a/master/rest_test.go
+++ b/master/rest_test.go
@@ -29,20 +29,20 @@ import (
 
 	"github.com/emicklei/go-restful/v3"
 	"github.com/go-viper/mapstructure/v2"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/common/mock"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/server"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/gorse-io/gorse/storage/meta"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
 	"github.com/sashabaranov/go-openai"
 	"github.com/steinfletcher/apitest"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/common/mock"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/server"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
-	"github.com/zhenghaoz/gorse/storage/meta"
 	"google.golang.org/protobuf/proto"
 )
 
diff --git a/master/rpc_test.go b/master/rpc_test.go
index 596fb68..c49dfc2 100644
--- a/master/rpc_test.go
+++ b/master/rpc_test.go
@@ -24,21 +24,21 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/common/util"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/server"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/gorse-io/gorse/storage/meta"
 	"github.com/madflojo/testcerts"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/common/util"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/server"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
-	"github.com/zhenghaoz/gorse/storage/meta"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials/insecure"
 )
diff --git a/master/tasks_test.go b/master/tasks_test.go
index 2e3318f..0febf6f 100644
--- a/master/tasks_test.go
+++ b/master/tasks_test.go
@@ -20,11 +20,11 @@ import (
 	"strconv"
 	"time"
 
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/samber/lo"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 )
 
 func (s *MasterTestSuite) TestFindItemToItem() {
diff --git a/model/cf/evaluator_test.go b/model/cf/evaluator_test.go
index 53c969d..64a49b7 100644
--- a/model/cf/evaluator_test.go
+++ b/model/cf/evaluator_test.go
@@ -15,15 +15,16 @@ package cf
 
 import (
 	"context"
-	mapset "github.com/deckarep/golang-set/v2"
-	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"io"
 	"strconv"
 	"testing"
 	"time"
+
+	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
+	"github.com/gorse-io/gorse/storage/data"
+	"github.com/stretchr/testify/assert"
 )
 
 const evalEpsilon = 0.00001
diff --git a/model/cf/model_test.go b/model/cf/model_test.go
index 7388fcf..651774d 100644
--- a/model/cf/model_test.go
+++ b/model/cf/model_test.go
@@ -20,10 +20,10 @@ import (
 	"runtime"
 	"testing"
 
+	"github.com/gorse-io/gorse/common/floats"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/common/floats"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
 )
 
 const benchDelta = 0.01
diff --git a/model/cf/search_test.go b/model/cf/search_test.go
index e24b6ed..c667007 100644
--- a/model/cf/search_test.go
+++ b/model/cf/search_test.go
@@ -19,10 +19,10 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/base/task"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/base/task"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
 )
 
 type mockMatrixFactorizationForSearch struct {
diff --git a/model/ctr/data_test.go b/model/ctr/data_test.go
index 4da3299..51df46b 100644
--- a/model/ctr/data_test.go
+++ b/model/ctr/data_test.go
@@ -16,10 +16,11 @@ package ctr
 import (
 	"encoding/json"
 	"fmt"
+	"testing"
+
+	"github.com/gorse-io/gorse/base"
 	"github.com/samber/lo"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/base"
-	"testing"
 )
 
 func TestConvertLabelsToFeatures(t *testing.T) {
diff --git a/model/ctr/model_test.go b/model/ctr/model_test.go
index 904bffc..7f6e76f 100644
--- a/model/ctr/model_test.go
+++ b/model/ctr/model_test.go
@@ -19,9 +19,9 @@ import (
 	"runtime"
 	"testing"
 
+	"github.com/gorse-io/gorse/model"
 	"github.com/samber/lo"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/model"
 )
 
 const classificationDelta = 0.01
diff --git a/model/ctr/search_test.go b/model/ctr/search_test.go
index 3d89d02..9236dbb 100644
--- a/model/ctr/search_test.go
+++ b/model/ctr/search_test.go
@@ -18,11 +18,11 @@ import (
 	"io"
 	"testing"
 
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/task"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/task"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
 )
 
 // NewMapIndexDataset creates a data set.
diff --git a/protocol/task_test.go b/protocol/task_test.go
index d1db324..9726525 100644
--- a/protocol/task_test.go
+++ b/protocol/task_test.go
@@ -18,8 +18,8 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/base/progress"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/base/progress"
 )
 
 func TestEncodeDecode(t *testing.T) {
diff --git a/server/bench_test.go b/server/bench_test.go
index b72945b..98cc918 100644
--- a/server/bench_test.go
+++ b/server/bench_test.go
@@ -31,14 +31,14 @@ import (
 
 	"github.com/emicklei/go-restful/v3"
 	"github.com/go-resty/resty/v2"
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/redis/go-redis/v9"
 	"github.com/samber/lo"
 	"github.com/stretchr/testify/require"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"go.mongodb.org/mongo-driver/mongo"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"google.golang.org/protobuf/proto"
diff --git a/server/rest_test.go b/server/rest_test.go
index 0852caf..b930d34 100644
--- a/server/rest_test.go
+++ b/server/rest_test.go
@@ -23,14 +23,14 @@ import (
 	"time"
 
 	"github.com/emicklei/go-restful/v3"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/samber/lo"
 	"github.com/steinfletcher/apitest"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"google.golang.org/protobuf/proto"
 )
 
diff --git a/server/server_test.go b/server/server_test.go
index 0a4ca8e..be53a93 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -21,9 +21,9 @@ import (
 	"net"
 	"testing"
 
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/protocol"
 	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/protocol"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials/insecure"
 )
diff --git a/storage/blob/blob_test.go b/storage/blob/blob_test.go
index 607c4e0..9558ee0 100644
--- a/storage/blob/blob_test.go
+++ b/storage/blob/blob_test.go
@@ -15,12 +15,13 @@
 package blob
 
 import (
-	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/protocol"
-	"google.golang.org/grpc"
 	"net"
 	"path"
 	"testing"
+
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/stretchr/testify/assert"
+	"google.golang.org/grpc"
 )
 
 func TestBlob(t *testing.T) {
diff --git a/storage/blob/s3_test.go b/storage/blob/s3_test.go
index 1e592a7..35ef9f8 100644
--- a/storage/blob/s3_test.go
+++ b/storage/blob/s3_test.go
@@ -16,12 +16,13 @@ package blob
 
 import (
 	"context"
-	"github.com/minio/minio-go/v7"
-	"github.com/stretchr/testify/assert"
-	"github.com/zhenghaoz/gorse/config"
 	"io"
 	"os"
 	"testing"
+
+	"github.com/gorse-io/gorse/config"
+	"github.com/minio/minio-go/v7"
+	"github.com/stretchr/testify/assert"
 )
 
 var (
diff --git a/storage/cache/mongodb_test.go b/storage/cache/mongodb_test.go
index 9e6a780..ac0889a 100644
--- a/storage/cache/mongodb_test.go
+++ b/storage/cache/mongodb_test.go
@@ -19,9 +19,9 @@ import (
 	"os"
 	"testing"
 
+	"github.com/gorse-io/gorse/base/log"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/base/log"
 )
 
 var (
diff --git a/storage/cache/redis_test.go b/storage/cache/redis_test.go
index 089030b..53800f9 100644
--- a/storage/cache/redis_test.go
+++ b/storage/cache/redis_test.go
@@ -22,10 +22,10 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/base/log"
 	"github.com/redis/go-redis/v9"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/base/log"
 	"google.golang.org/protobuf/proto"
 )
 
diff --git a/storage/cache/sql_test.go b/storage/cache/sql_test.go
index a8482e1..a012e4e 100644
--- a/storage/cache/sql_test.go
+++ b/storage/cache/sql_test.go
@@ -21,10 +21,10 @@ import (
 	"strings"
 	"testing"
 
+	"github.com/gorse-io/gorse/base/log"
+	"github.com/gorse-io/gorse/storage"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/base/log"
-	"github.com/zhenghaoz/gorse/storage"
 )
 
 var (
diff --git a/storage/data/database_test.go b/storage/data/database_test.go
index 7e235b5..46f1cfe 100644
--- a/storage/data/database_test.go
+++ b/storage/data/database_test.go
@@ -23,13 +23,13 @@ import (
 	"testing"
 	"time"
 
+	"github.com/gorse-io/gorse/common/expression"
 	"github.com/jaswdr/faker"
 	"github.com/juju/errors"
 	"github.com/samber/lo"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/common/expression"
 	"google.golang.org/protobuf/proto"
 )
 
diff --git a/storage/data/sql_test.go b/storage/data/sql_test.go
index 59fcbe1..f112939 100644
--- a/storage/data/sql_test.go
+++ b/storage/data/sql_test.go
@@ -21,10 +21,10 @@ import (
 	"strings"
 	"testing"
 
+	"github.com/gorse-io/gorse/storage"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/storage"
 )
 
 var (
diff --git a/worker/worker_test.go b/worker/worker_test.go
index 0a9a332..97b29f2 100644
--- a/worker/worker_test.go
+++ b/worker/worker_test.go
@@ -30,21 +30,21 @@ import (
 
 	"github.com/bits-and-blooms/bitset"
 	mapset "github.com/deckarep/golang-set/v2"
+	"github.com/gorse-io/gorse/base"
+	"github.com/gorse-io/gorse/base/progress"
+	"github.com/gorse-io/gorse/common/expression"
+	"github.com/gorse-io/gorse/common/parallel"
+	"github.com/gorse-io/gorse/config"
+	"github.com/gorse-io/gorse/dataset"
+	"github.com/gorse-io/gorse/model"
+	"github.com/gorse-io/gorse/model/cf"
+	"github.com/gorse-io/gorse/model/ctr"
+	"github.com/gorse-io/gorse/protocol"
+	"github.com/gorse-io/gorse/storage/cache"
+	"github.com/gorse-io/gorse/storage/data"
 	"github.com/samber/lo"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/suite"
-	"github.com/zhenghaoz/gorse/base"
-	"github.com/zhenghaoz/gorse/base/progress"
-	"github.com/zhenghaoz/gorse/common/expression"
-	"github.com/zhenghaoz/gorse/common/parallel"
-	"github.com/zhenghaoz/gorse/config"
-	"github.com/zhenghaoz/gorse/dataset"
-	"github.com/zhenghaoz/gorse/model"
-	"github.com/zhenghaoz/gorse/model/cf"
-	"github.com/zhenghaoz/gorse/model/ctr"
-	"github.com/zhenghaoz/gorse/protocol"
-	"github.com/zhenghaoz/gorse/storage/cache"
-	"github.com/zhenghaoz/gorse/storage/data"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials/insecure"
 	"google.golang.org/protobuf/proto"