{"id":192239,"name":"OpenFish","description":"An open-source system written in GoLang for classifying marine species.","url":"https://github.com/ausocean/openfish","last_synced_at":"2026-06-10T22:30:19.915Z","repository":{"id":153671663,"uuid":"609009532","full_name":"ausocean/openfish","owner":"ausocean","description":"OpenFish is an open-source system written in GoLang for classifying marine species. Tasks involve importing video or image data, classifying and annotating data (both manually and automatically), searching, and more. It is expected that OpenFish will use utilize computer vision and machine learning techniques.","archived":true,"fork":false,"pushed_at":"2026-05-04T02:34:05.000Z","size":19295,"stargazers_count":9,"open_issues_count":31,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-06-01T18:00:47.140Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ausocean.github.io/openfish/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ausocean.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-03T07:21:21.000Z","updated_at":"2026-05-04T02:34:34.000Z","dependencies_parsed_at":"2023-07-14T13:45:58.241Z","dependency_job_id":"17bd8bd4-a9c2-4434-8da6-88f951d0922d","html_url":"https://github.com/ausocean/openfish","commit_stats":{"total_commits":147,"total_committers":3,"mean_commits":49.0,"dds":"0.10204081632653061","last_synced_commit":"66c5cec19b68624a1e50f013218b2425eea8ccaa"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ausocean/openfish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean","download_url":"https://codeload.github.com/ausocean/openfish/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34037777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"ausocean","name":"AusOcean","uuid":"52269442","kind":"organization","description":null,"email":null,"website":"https://www.ausocean.org","location":"Adelaide, Australia","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/52269442?v=4","repositories_count":2,"last_synced_at":"2023-04-20T02:26:17.031Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ausocean","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-04-20T02:26:17.053Z","updated_at":"2023-04-20T02:26:17.053Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean/repositories"},"packages":[{"id":7605720,"name":"github.com/ausocean/openfish","ecosystem":"go","description":"","homepage":"https://github.com/ausocean/openfish","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/ausocean/openfish","keywords_array":[],"namespace":"github.com/ausocean","versions_count":13,"first_release_published_at":"2023-04-19T05:27:05.000Z","latest_release_published_at":"2026-01-13T06:48:16.000Z","latest_release_number":"v0.3.0","last_synced_at":"2026-06-07T21:00:45.041Z","created_at":"2023-04-20T02:09:48.058Z","updated_at":"2026-06-07T21:00:45.041Z","registry_url":"https://pkg.go.dev/github.com/ausocean/openfish","install_command":"go get github.com/ausocean/openfish","documentation_url":"https://pkg.go.dev/github.com/ausocean/openfish#section-documentation","metadata":{},"repo_metadata":{"id":153671663,"uuid":"609009532","full_name":"ausocean/openfish","owner":"ausocean","description":"OpenFish is an open-source system written in GoLang for classifying marine species. Tasks involve importing video or image data, classifying and annotating data (both manually and automatically), searching, and more. It is expected that OpenFish will use utilize computer vision and machine learning techniques.","archived":false,"fork":false,"pushed_at":"2025-10-01T17:21:21.000Z","size":19165,"stargazers_count":8,"open_issues_count":40,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-15T04:19:44.274Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ausocean.github.io/openfish/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ausocean.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-03T07:21:21.000Z","updated_at":"2025-07-04T05:39:03.000Z","dependencies_parsed_at":"2023-07-14T13:45:58.241Z","dependency_job_id":"42f5564f-76b5-4c7d-836b-51f581e3dfec","html_url":"https://github.com/ausocean/openfish","commit_stats":{"total_commits":147,"total_committers":3,"mean_commits":49.0,"dds":"0.10204081632653061","last_synced_commit":"66c5cec19b68624a1e50f013218b2425eea8ccaa"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/ausocean/openfish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean","download_url":"https://codeload.github.com/ausocean/openfish/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280086713,"owners_count":26269710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ausocean","name":"AusOcean","uuid":"52269442","kind":"organization","description":null,"email":null,"website":"https://www.ausocean.org","location":"Adelaide, Australia","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/52269442?v=4","repositories_count":2,"last_synced_at":"2023-04-20T02:26:17.031Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ausocean","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-04-20T02:26:17.053Z","updated_at":"2023-04-20T02:26:17.053Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-10-29T13:44:48.551Z","dependent_packages_count":2,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.314379056112312,"dependent_packages_count":8.0797707346991,"stargazers_count":null,"forks_count":null,"average":8.697074895405706},"purl":"pkg:golang/github.com/ausocean/openfish","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ausocean/openfish","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ausocean/openfish","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ausocean/openfish/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-01T20:06:35.374Z","issues_count":90,"pull_requests_count":433,"avg_time_to_close_issue":9817339.954545455,"avg_time_to_close_pull_request":1043974.487684729,"issues_closed_count":44,"pull_requests_closed_count":406,"pull_request_authors_count":4,"issue_authors_count":6,"avg_comments_per_issue":0.26666666666666666,"avg_comments_per_pull_request":0.28868360277136257,"merged_pull_requests_count":332,"bot_issues_count":0,"bot_pull_requests_count":117,"past_year_issues_count":24,"past_year_pull_requests_count":252,"past_year_avg_time_to_close_issue":29848.0,"past_year_avg_time_to_close_pull_request":864028.0129310344,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":232,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.3492063492063492,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":117,"past_year_merged_pull_requests_count":170,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/issues","maintainers":[{"login":"scott97","count":365,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/scott97"},{"login":"trekhopton","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trekhopton"},{"login":"saxon-milton","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/saxon-milton"}],"active_maintainers":[{"login":"scott97","count":122,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/scott97"},{"login":"trekhopton","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trekhopton"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2165961,"maintainers_count":0,"namespaces_count":791500,"keywords_count":113139,"github":"golang","metadata":{"funded_packages_count":53899},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-06-02T05:03:22.111Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":7605719,"name":"github.com/ausocean/openfish/datastore","ecosystem":"go","description":null,"homepage":"https://github.com/ausocean/openfish","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/ausocean/openfish","keywords_array":[],"namespace":"github.com/ausocean/openfish","versions_count":1,"first_release_published_at":"2023-04-19T05:27:05.000Z","latest_release_published_at":"2023-04-19T05:27:05.000Z","latest_release_number":"v0.0.0-20230419052705-c70f986b30db","last_synced_at":"2026-06-07T21:00:43.641Z","created_at":"2023-04-20T02:09:47.738Z","updated_at":"2026-06-07T21:00:43.642Z","registry_url":"https://pkg.go.dev/github.com/ausocean/openfish/datastore","install_command":"go get github.com/ausocean/openfish/datastore","documentation_url":"https://pkg.go.dev/github.com/ausocean/openfish/datastore#section-documentation","metadata":{},"repo_metadata":{"id":153671663,"uuid":"609009532","full_name":"ausocean/openfish","owner":"ausocean","description":"OpenFish is an open-source system written in GoLang for classifying marine species. Tasks involve importing video or image data, classifying and annotating data (both manually and automatically), searching, and more. It is expected that OpenFish will use utilize computer vision and machine learning techniques.","archived":true,"fork":false,"pushed_at":"2026-05-04T02:34:05.000Z","size":19295,"stargazers_count":9,"open_issues_count":31,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-08T06:02:08.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ausocean.github.io/openfish/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ausocean.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-03T07:21:21.000Z","updated_at":"2026-05-04T02:34:34.000Z","dependencies_parsed_at":"2023-07-14T13:45:58.241Z","dependency_job_id":"12683837-567d-4b93-b775-07c6deb90400","html_url":"https://github.com/ausocean/openfish","commit_stats":{"total_commits":147,"total_committers":3,"mean_commits":49.0,"dds":"0.10204081632653061","last_synced_commit":"66c5cec19b68624a1e50f013218b2425eea8ccaa"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ausocean/openfish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean","download_url":"https://codeload.github.com/ausocean/openfish/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33098340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ausocean","name":"AusOcean","uuid":"52269442","kind":"organization","description":null,"email":null,"website":"https://www.ausocean.org","location":"Adelaide, Australia","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/52269442?v=4","repositories_count":2,"last_synced_at":"2023-04-20T02:26:17.031Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ausocean","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-04-20T02:26:17.053Z","updated_at":"2023-04-20T02:26:17.053Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ausocean/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T14:01:46.387Z","dependent_packages_count":1,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.314379056112312,"dependent_packages_count":8.0797707346991,"stargazers_count":null,"forks_count":null,"average":8.697074895405706},"purl":"pkg:golang/github.com/ausocean/openfish/datastore","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ausocean/openfish/datastore","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ausocean/openfish/datastore","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ausocean/openfish/datastore/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-04T04:00:27.322Z","issues_count":93,"pull_requests_count":450,"avg_time_to_close_issue":9368035.0625,"avg_time_to_close_pull_request":1068249.9114832536,"issues_closed_count":48,"pull_requests_closed_count":418,"pull_request_authors_count":6,"issue_authors_count":7,"avg_comments_per_issue":0.25806451612903225,"avg_comments_per_pull_request":0.3022222222222222,"merged_pull_requests_count":336,"bot_issues_count":0,"bot_pull_requests_count":129,"past_year_issues_count":10,"past_year_pull_requests_count":58,"past_year_avg_time_to_close_issue":4425681.25,"past_year_avg_time_to_close_pull_request":1328526.0487804879,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":41,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.6551724137931034,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":32,"past_year_merged_pull_requests_count":20,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/issues","maintainers":[{"login":"scott97","count":365,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/scott97"},{"login":"trekhopton","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trekhopton"},{"login":"elliot-ausocean","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elliot-ausocean"},{"login":"saxon-milton","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/saxon-milton"},{"login":"ao-david","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ao-david"}],"active_maintainers":[{"login":"elliot-ausocean","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elliot-ausocean"},{"login":"trekhopton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trekhopton"},{"login":"scott97","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/scott97"},{"login":"ao-david","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ao-david"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish%2Fdatastore/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish%2Fdatastore/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish%2Fdatastore/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish%2Fdatastore/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish%2Fdatastore/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fausocean%2Fopenfish%2Fdatastore/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2165961,"maintainers_count":0,"namespaces_count":791500,"keywords_count":113139,"github":"golang","metadata":{"funded_packages_count":53899},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-06-02T05:03:22.111Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1548552,"full_name":"ausocean/openfish","default_branch":"master","total_commits":299,"total_committers":6,"total_bot_commits":31,"total_bot_committers":1,"mean_commits":49.833333333333336,"dds":0.2876254180602007,"past_year_total_commits":45,"past_year_total_committers":5,"past_year_total_bot_commits":6,"past_year_total_bot_committers":1,"past_year_mean_commits":9.0,"past_year_dds":0.4222222222222223,"last_synced_at":"2026-06-07T21:01:10.948Z","last_synced_commit":"81adbbce69ca6f2ba412ca6842d3ba736d85f48d","created_at":"2024-05-05T00:13:32.591Z","updated_at":"2026-06-07T21:01:10.901Z","committers":[{"name":"Scott Barnard","email":"scott@ausocean.org","login":"scott97","count":213},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":31},{"name":"Elliot Shine","email":"elliot@ausocean.org","login":"elliot-ausocean","count":26},{"name":"Trek H","email":"trek.hopton@gmail.com","login":"trekhopton","count":16},{"name":"Alan Noble","email":"anoble@gmail.com","login":"scruzin","count":12},{"name":"David Sutton","email":"david@ausocean.org","login":"ao-david","count":1}],"past_year_committers":[{"name":"Elliot Shine","email":"elliot@ausocean.org","login":"elliot-ausocean","count":26},{"name":"Trek H","email":"trek.hopton@gmail.com","login":"trekhopton","count":11},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":6},{"name":"Scott Barnard","email":"scott@ausocean.org","login":"scott97","count":1},{"name":"David Sutton","email":"david@ausocean.org","login":"ao-david","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-09T00:00:08.806Z","repositories_count":6254608,"commits_count":884164631,"contributors_count":35056675,"owners_count":1163893,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ausocean/openfish","html_url":"https://github.com/ausocean/openfish","last_synced_at":"2026-06-07T21:00:23.101Z","status":"error","issues_count":93,"pull_requests_count":450,"avg_time_to_close_issue":9368035.0625,"avg_time_to_close_pull_request":1068249.9114832536,"issues_closed_count":48,"pull_requests_closed_count":418,"pull_request_authors_count":6,"issue_authors_count":7,"avg_comments_per_issue":0.25806451612903225,"avg_comments_per_pull_request":0.3022222222222222,"merged_pull_requests_count":336,"bot_issues_count":0,"bot_pull_requests_count":129,"past_year_issues_count":10,"past_year_pull_requests_count":58,"past_year_avg_time_to_close_issue":4425681.25,"past_year_avg_time_to_close_pull_request":1328526.0487804879,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":41,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.6551724137931034,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":32,"past_year_merged_pull_requests_count":20,"created_at":"2024-05-05T00:13:39.310Z","updated_at":"2026-06-07T21:00:23.101Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ausocean%2Fopenfish/issues","issue_labels_count":{"enhancement":41,"bug":16,"documentation":7,"good first issue":2,"Research":2,"ci":1,"chore":1,"Tests":1,"research / non-coding":1},"pull_request_labels_count":{"chore":149,"enhancement":79,"documentation":25,"bug":15,"ci":14},"issue_author_associations_count":{"COLLABORATOR":82,"CONTRIBUTOR":8,"MEMBER":2,"NONE":1},"pull_request_author_associations_count":{"COLLABORATOR":312,"CONTRIBUTOR":136,"NONE":2},"issue_authors":{"scott97":72,"scruzin":7,"trekhopton":7,"elliot-ausocean":3,"saxon-milton":2,"adriansodr3":1,"ao-david":1},"pull_request_authors":{"scott97":293,"dependabot[bot]":129,"trekhopton":14,"scruzin":9,"elliot-ausocean":4,"ao-david":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-09T00:00:17.805Z","repositories_count":14786415,"issues_count":33460819,"pull_requests_count":110087831,"authors_count":11297655,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"bug":2},"past_year_pull_request_labels_count":{"chore":20,"ci":5},"past_year_issue_author_associations_count":{"COLLABORATOR":4},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":20,"COLLABORATOR":11},"past_year_issue_authors":{"elliot-ausocean":3,"trekhopton":1},"past_year_pull_request_authors":{"dependabot[bot]":20,"trekhopton":6,"elliot-ausocean":4,"ao-david":1},"maintainers":[{"login":"scott97","count":365,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/scott97"},{"login":"trekhopton","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trekhopton"},{"login":"elliot-ausocean","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elliot-ausocean"},{"login":"saxon-milton","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/saxon-milton"},{"login":"ao-david","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ao-david"}],"active_maintainers":[{"login":"elliot-ausocean","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elliot-ausocean"},{"login":"trekhopton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trekhopton"},{"login":"ao-david","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ao-david"}]},"events":{"total":{"ReleaseEvent":2,"DeleteEvent":65,"MemberEvent":2,"PullRequestEvent":272,"ForkEvent":1,"IssuesEvent":42,"WatchEvent":2,"IssueCommentEvent":58,"PushEvent":326,"PullRequestReviewCommentEvent":54,"PullRequestReviewEvent":102,"CreateEvent":144},"last_year":{"ReleaseEvent":2,"DeleteEvent":19,"MemberEvent":2,"PullRequestEvent":47,"IssuesEvent":10,"IssueCommentEvent":12,"PushEvent":47,"PullRequestReviewCommentEvent":12,"PullRequestReviewEvent":16,"CreateEvent":25}},"keywords":[],"dependencies":[{"ecosystem":"go","filepath":"go.mod","sha":null,"kind":"manifest","created_at":"2023-07-14T13:45:56.853Z","updated_at":"2023-07-14T13:45:56.853Z","repository_link":"https://github.com/ausocean/openfish/blob/main/go.mod","dependencies":[{"id":11460391766,"package_name":"cloud.google.com/go/datastore","ecosystem":"go","requirements":"v1.11.0","direct":true,"kind":"runtime","optional":false},{"id":11460391767,"package_name":"cloud.google.com/go/storage","ecosystem":"go","requirements":"v1.30.1","direct":true,"kind":"runtime","optional":false},{"id":11460391768,"package_name":"github.com/gofiber/fiber/v2","ecosystem":"go","requirements":"v2.45.0","direct":true,"kind":"runtime","optional":false},{"id":11460391769,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.9.0","direct":true,"kind":"runtime","optional":false},{"id":11460391770,"package_name":"google.golang.org/api","ecosystem":"go","requirements":"v0.118.0","direct":true,"kind":"runtime","optional":false},{"id":11460391771,"package_name":"cloud.google.com/go","ecosystem":"go","requirements":"v0.110.0","direct":true,"kind":"runtime","optional":false},{"id":11460391772,"package_name":"cloud.google.com/go/compute","ecosystem":"go","requirements":"v1.19.0","direct":true,"kind":"runtime","optional":false},{"id":11460391773,"package_name":"cloud.google.com/go/compute/metadata","ecosystem":"go","requirements":"v0.2.3","direct":true,"kind":"runtime","optional":false},{"id":11460391774,"package_name":"cloud.google.com/go/iam","ecosystem":"go","requirements":"v0.13.0","direct":true,"kind":"runtime","optional":false},{"id":11460391775,"package_name":"github.com/andybalholm/brotli","ecosystem":"go","requirements":"v1.0.5","direct":true,"kind":"runtime","optional":false},{"id":11460391776,"package_name":"github.com/golang/groupcache","ecosystem":"go","requirements":"v0.0.0-20200121045136-8c9f03a8e57e","direct":true,"kind":"runtime","optional":false},{"id":11460391777,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.5.3","direct":true,"kind":"runtime","optional":false},{"id":11460391778,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.5.9","direct":true,"kind":"runtime","optional":false},{"id":11460391779,"package_name":"github.com/google/s2a-go","ecosystem":"go","requirements":"v0.1.0","direct":true,"kind":"runtime","optional":false},{"id":11460391780,"package_name":"github.com/google/uuid","ecosystem":"go","requirements":"v1.3.0","direct":true,"kind":"runtime","optional":false},{"id":11460391781,"package_name":"github.com/googleapis/enterprise-certificate-proxy","ecosystem":"go","requirements":"v0.2.3","direct":true,"kind":"runtime","optional":false},{"id":11460391782,"package_name":"github.com/googleapis/gax-go/v2","ecosystem":"go","requirements":"v2.8.0","direct":true,"kind":"runtime","optional":false},{"id":11460391783,"package_name":"github.com/klauspost/compress","ecosystem":"go","requirements":"v1.16.3","direct":true,"kind":"runtime","optional":false},{"id":11460391784,"package_name":"github.com/mattn/go-colorable","ecosystem":"go","requirements":"v0.1.13","direct":true,"kind":"runtime","optional":false},{"id":11460391785,"package_name":"github.com/mattn/go-isatty","ecosystem":"go","requirements":"v0.0.18","direct":true,"kind":"runtime","optional":false},{"id":11460391786,"package_name":"github.com/mattn/go-runewidth","ecosystem":"go","requirements":"v0.0.14","direct":true,"kind":"runtime","optional":false},{"id":11460391787,"package_name":"github.com/philhofer/fwd","ecosystem":"go","requirements":"v1.1.2","direct":true,"kind":"runtime","optional":false},{"id":11460391788,"package_name":"github.com/rivo/uniseg","ecosystem":"go","requirements":"v0.2.0","direct":true,"kind":"runtime","optional":false},{"id":11460391789,"package_name":"github.com/savsgio/dictpool","ecosystem":"go","requirements":"v0.0.0-20221023140959-7bf2e61cea94","direct":true,"kind":"runtime","optional":false},{"id":11460391790,"package_name":"github.com/savsgio/gotils","ecosystem":"go","requirements":"v0.0.0-20230208104028-c358bd845dee","direct":true,"kind":"runtime","optional":false},{"id":11460391791,"package_name":"github.com/tinylib/msgp","ecosystem":"go","requirements":"v1.1.8","direct":true,"kind":"runtime","optional":false},{"id":11460391792,"package_name":"github.com/valyala/bytebufferpool","ecosystem":"go","requirements":"v1.0.0","direct":true,"kind":"runtime","optional":false},{"id":11460391793,"package_name":"github.com/valyala/fasthttp","ecosystem":"go","requirements":"v1.47.0","direct":true,"kind":"runtime","optional":false},{"id":11460391794,"package_name":"github.com/valyala/tcplisten","ecosystem":"go","requirements":"v1.0.0","direct":true,"kind":"runtime","optional":false},{"id":11460391795,"package_name":"go.opencensus.io","ecosystem":"go","requirements":"v0.24.0","direct":true,"kind":"runtime","optional":false},{"id":11460391796,"package_name":"golang.org/x/crypto","ecosystem":"go","requirements":"v0.7.0","direct":true,"kind":"runtime","optional":false},{"id":11460391797,"package_name":"golang.org/x/oauth2","ecosystem":"go","requirements":"v0.7.0","direct":true,"kind":"runtime","optional":false},{"id":11460391798,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.8.0","direct":true,"kind":"runtime","optional":false},{"id":11460391894,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.9.0","direct":true,"kind":"runtime","optional":false},{"id":11460391898,"package_name":"golang.org/x/xerrors","ecosystem":"go","requirements":"v0.0.0-20220907171357-04be3eba64a2","direct":true,"kind":"runtime","optional":false},{"id":11460391901,"package_name":"google.golang.org/appengine","ecosystem":"go","requirements":"v1.6.7","direct":true,"kind":"runtime","optional":false},{"id":11460391904,"package_name":"google.golang.org/genproto","ecosystem":"go","requirements":"v0.0.0-20230403163135-c38d8f061ccd","direct":true,"kind":"runtime","optional":false},{"id":11460391907,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.54.0","direct":true,"kind":"runtime","optional":false},{"id":11460391910,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.30.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"go","filepath":"go.sum","sha":null,"kind":"lockfile","created_at":"2023-07-14T13:45:57.618Z","updated_at":"2023-07-14T13:45:57.618Z","repository_link":"https://github.com/ausocean/openfish/blob/main/go.sum","dependencies":[{"id":11460395271,"package_name":"cloud.google.com/go","ecosystem":"go","requirements":"v0.26.0","direct":false,"kind":"runtime","optional":false},{"id":11460395276,"package_name":"cloud.google.com/go","ecosystem":"go","requirements":"v0.34.0","direct":false,"kind":"runtime","optional":false},{"id":11460395278,"package_name":"cloud.google.com/go","ecosystem":"go","requirements":"v0.110.0","direct":false,"kind":"runtime","optional":false},{"id":11460395280,"package_name":"cloud.google.com/go/compute","ecosystem":"go","requirements":"v1.19.0","direct":false,"kind":"runtime","optional":false},{"id":11460395284,"package_name":"cloud.google.com/go/compute/metadata","ecosystem":"go","requirements":"v0.2.3","direct":false,"kind":"runtime","optional":false},{"id":11460395286,"package_name":"cloud.google.com/go/datastore","ecosystem":"go","requirements":"v1.11.0","direct":false,"kind":"runtime","optional":false},{"id":11460395289,"package_name":"cloud.google.com/go/iam","ecosystem":"go","requirements":"v0.13.0","direct":false,"kind":"runtime","optional":false},{"id":11460395292,"package_name":"cloud.google.com/go/longrunning","ecosystem":"go","requirements":"v0.4.1","direct":false,"kind":"runtime","optional":false},{"id":11460395295,"package_name":"cloud.google.com/go/storage","ecosystem":"go","requirements":"v1.30.1","direct":false,"kind":"runtime","optional":false},{"id":11460395297,"package_name":"github.com/BurntSushi/toml","ecosystem":"go","requirements":"v0.3.1","direct":false,"kind":"runtime","optional":false},{"id":11460395300,"package_name":"github.com/andybalholm/brotli","ecosystem":"go","requirements":"v1.0.5","direct":false,"kind":"runtime","optional":false},{"id":11460395303,"package_name":"github.com/antihax/optional","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":11460395305,"package_name":"github.com/census-instrumentation/opencensus-proto","ecosystem":"go","requirements":"v0.2.1","direct":false,"kind":"runtime","optional":false},{"id":11460395308,"package_name":"github.com/cespare/xxhash/v2","ecosystem":"go","requirements":"v2.1.1","direct":false,"kind":"runtime","optional":false},{"id":11460395310,"package_name":"github.com/client9/misspell","ecosystem":"go","requirements":"v0.3.4","direct":false,"kind":"runtime","optional":false},{"id":11460395312,"package_name":"github.com/cncf/udpa/go","ecosystem":"go","requirements":"v0.0.0-20191209042840-269d4d468f6f","direct":false,"kind":"runtime","optional":false},{"id":11460395315,"package_name":"github.com/cncf/udpa/go","ecosystem":"go","requirements":"v0.0.0-20201120205902-5459f2c99403","direct":false,"kind":"runtime","optional":false},{"id":11460395317,"package_name":"github.com/cncf/udpa/go","ecosystem":"go","requirements":"v0.0.0-20210930031921-04548b0d99d4","direct":false,"kind":"runtime","optional":false},{"id":11460395319,"package_name":"github.com/cncf/xds/go","ecosystem":"go","requirements":"v0.0.0-20210805033703-aa0b78936158","direct":false,"kind":"runtime","optional":false},{"id":11460395322,"package_name":"github.com/cncf/xds/go","ecosystem":"go","requirements":"v0.0.0-20210922020428-25de7278fc84","direct":false,"kind":"runtime","optional":false},{"id":11460395325,"package_name":"github.com/cncf/xds/go","ecosystem":"go","requirements":"v0.0.0-20211011173535-cb28da3451f1","direct":false,"kind":"runtime","optional":false},{"id":11460395326,"package_name":"github.com/davecgh/go-spew","ecosystem":"go","requirements":"v1.1.0","direct":false,"kind":"runtime","optional":false},{"id":11460395329,"package_name":"github.com/davecgh/go-spew","ecosystem":"go","requirements":"v1.1.1","direct":false,"kind":"runtime","optional":false},{"id":11460395332,"package_name":"github.com/envoyproxy/go-control-plane","ecosystem":"go","requirements":"v0.9.0","direct":false,"kind":"runtime","optional":false},{"id":11460395335,"package_name":"github.com/envoyproxy/go-control-plane","ecosystem":"go","requirements":"v0.9.1-0.20191026205805-5f8ba28d4473","direct":false,"kind":"runtime","optional":false},{"id":11460395337,"package_name":"github.com/envoyproxy/go-control-plane","ecosystem":"go","requirements":"v0.9.4","direct":false,"kind":"runtime","optional":false},{"id":11460395339,"package_name":"github.com/envoyproxy/go-control-plane","ecosystem":"go","requirements":"v0.9.9-0.20201210154907-fd9021fe5dad","direct":false,"kind":"runtime","optional":false},{"id":11460395341,"package_name":"github.com/envoyproxy/go-control-plane","ecosystem":"go","requirements":"v0.9.10-0.20210907150352-cf90f659a021","direct":false,"kind":"runtime","optional":false},{"id":11460395343,"package_name":"github.com/envoyproxy/protoc-gen-validate","ecosystem":"go","requirements":"v0.1.0","direct":false,"kind":"runtime","optional":false},{"id":11460395347,"package_name":"github.com/ghodss/yaml","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":11460395350,"package_name":"github.com/gofiber/fiber/v2","ecosystem":"go","requirements":"v2.45.0","direct":false,"kind":"runtime","optional":false},{"id":11460395352,"package_name":"github.com/golang/glog","ecosystem":"go","requirements":"v0.0.0-20160126235308-23def4e6c14b","direct":false,"kind":"runtime","optional":false},{"id":11460395355,"package_name":"github.com/golang/groupcache","ecosystem":"go","requirements":"v0.0.0-20200121045136-8c9f03a8e57e","direct":false,"kind":"runtime","optional":false},{"id":11460395358,"package_name":"github.com/golang/mock","ecosystem":"go","requirements":"v1.1.1","direct":false,"kind":"runtime","optional":false},{"id":11460395360,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.2.0","direct":false,"kind":"runtime","optional":false},{"id":11460395362,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.3.1","direct":false,"kind":"runtime","optional":false},{"id":11460395365,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.3.2","direct":false,"kind":"runtime","optional":false},{"id":11460395367,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.3.3","direct":false,"kind":"runtime","optional":false},{"id":11460395369,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.0-rc.1","direct":false,"kind":"runtime","optional":false},{"id":11460395371,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.0-rc.1.0.20200221234624-67d41d38c208","direct":false,"kind":"runtime","optional":false},{"id":11460395374,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.0-rc.2","direct":false,"kind":"runtime","optional":false},{"id":11460395376,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.0-rc.4.0.20200313231945-b860323f09d0","direct":false,"kind":"runtime","optional":false},{"id":11460395378,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.0","direct":false,"kind":"runtime","optional":false},{"id":11460395380,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.1","direct":false,"kind":"runtime","optional":false},{"id":11460395382,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.2","direct":false,"kind":"runtime","optional":false},{"id":11460395384,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.4.3","direct":false,"kind":"runtime","optional":false},{"id":11460395386,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.5.0","direct":false,"kind":"runtime","optional":false},{"id":11460395388,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.5.2","direct":false,"kind":"runtime","optional":false},{"id":11460395391,"package_name":"github.com/golang/protobuf","ecosystem":"go","requirements":"v1.5.3","direct":false,"kind":"runtime","optional":false},{"id":11460395393,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.2.0","direct":false,"kind":"runtime","optional":false},{"id":11460395395,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395396,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.3.1","direct":false,"kind":"runtime","optional":false},{"id":11460395398,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.4.0","direct":false,"kind":"runtime","optional":false},{"id":11460395400,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.5.0","direct":false,"kind":"runtime","optional":false},{"id":11460395402,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.5.3","direct":false,"kind":"runtime","optional":false},{"id":11460395404,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.5.5","direct":false,"kind":"runtime","optional":false},{"id":11460395406,"package_name":"github.com/google/go-cmp","ecosystem":"go","requirements":"v0.5.9","direct":false,"kind":"runtime","optional":false},{"id":11460395408,"package_name":"github.com/google/martian/v3","ecosystem":"go","requirements":"v3.3.2","direct":false,"kind":"runtime","optional":false},{"id":11460395410,"package_name":"github.com/google/s2a-go","ecosystem":"go","requirements":"v0.1.0","direct":false,"kind":"runtime","optional":false},{"id":11460395412,"package_name":"github.com/google/uuid","ecosystem":"go","requirements":"v1.1.2","direct":false,"kind":"runtime","optional":false},{"id":11460395415,"package_name":"github.com/google/uuid","ecosystem":"go","requirements":"v1.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395418,"package_name":"github.com/googleapis/enterprise-certificate-proxy","ecosystem":"go","requirements":"v0.2.3","direct":false,"kind":"runtime","optional":false},{"id":11460395421,"package_name":"github.com/googleapis/gax-go/v2","ecosystem":"go","requirements":"v2.8.0","direct":false,"kind":"runtime","optional":false},{"id":11460395424,"package_name":"github.com/grpc-ecosystem/grpc-gateway","ecosystem":"go","requirements":"v1.16.0","direct":false,"kind":"runtime","optional":false},{"id":11460395426,"package_name":"github.com/klauspost/compress","ecosystem":"go","requirements":"v1.16.3","direct":false,"kind":"runtime","optional":false},{"id":11460395428,"package_name":"github.com/mattn/go-colorable","ecosystem":"go","requirements":"v0.1.13","direct":false,"kind":"runtime","optional":false},{"id":11460395430,"package_name":"github.com/mattn/go-isatty","ecosystem":"go","requirements":"v0.0.16","direct":false,"kind":"runtime","optional":false},{"id":11460395432,"package_name":"github.com/mattn/go-isatty","ecosystem":"go","requirements":"v0.0.18","direct":false,"kind":"runtime","optional":false},{"id":11460395434,"package_name":"github.com/mattn/go-runewidth","ecosystem":"go","requirements":"v0.0.14","direct":false,"kind":"runtime","optional":false},{"id":11460395436,"package_name":"github.com/philhofer/fwd","ecosystem":"go","requirements":"v1.1.1","direct":false,"kind":"runtime","optional":false},{"id":11460395438,"package_name":"github.com/philhofer/fwd","ecosystem":"go","requirements":"v1.1.2","direct":false,"kind":"runtime","optional":false},{"id":11460395440,"package_name":"github.com/pmezard/go-difflib","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":11460395442,"package_name":"github.com/prometheus/client_model","ecosystem":"go","requirements":"v0.0.0-20190812154241-14fe0d1b01d4","direct":false,"kind":"runtime","optional":false},{"id":11460395444,"package_name":"github.com/rivo/uniseg","ecosystem":"go","requirements":"v0.2.0","direct":false,"kind":"runtime","optional":false},{"id":11460395446,"package_name":"github.com/rogpeppe/fastuuid","ecosystem":"go","requirements":"v1.2.0","direct":false,"kind":"runtime","optional":false},{"id":11460395448,"package_name":"github.com/savsgio/dictpool","ecosystem":"go","requirements":"v0.0.0-20221023140959-7bf2e61cea94","direct":false,"kind":"runtime","optional":false},{"id":11460395450,"package_name":"github.com/savsgio/gotils","ecosystem":"go","requirements":"v0.0.0-20220530130905-52f3993e8d6d","direct":false,"kind":"runtime","optional":false},{"id":11460395452,"package_name":"github.com/savsgio/gotils","ecosystem":"go","requirements":"v0.0.0-20230208104028-c358bd845dee","direct":false,"kind":"runtime","optional":false},{"id":11460395454,"package_name":"github.com/stretchr/objx","ecosystem":"go","requirements":"v0.1.0","direct":false,"kind":"runtime","optional":false},{"id":11460395456,"package_name":"github.com/stretchr/objx","ecosystem":"go","requirements":"v0.4.0","direct":false,"kind":"runtime","optional":false},{"id":11460395457,"package_name":"github.com/stretchr/objx","ecosystem":"go","requirements":"v0.5.0","direct":false,"kind":"runtime","optional":false},{"id":11460395459,"package_name":"github.com/stretchr/testify","ecosystem":"go","requirements":"v1.5.1","direct":false,"kind":"runtime","optional":false},{"id":11460395461,"package_name":"github.com/stretchr/testify","ecosystem":"go","requirements":"v1.7.0","direct":false,"kind":"runtime","optional":false},{"id":11460395463,"package_name":"github.com/stretchr/testify","ecosystem":"go","requirements":"v1.7.1","direct":false,"kind":"runtime","optional":false},{"id":11460395465,"package_name":"github.com/stretchr/testify","ecosystem":"go","requirements":"v1.8.0","direct":false,"kind":"runtime","optional":false},{"id":11460395467,"package_name":"github.com/stretchr/testify","ecosystem":"go","requirements":"v1.8.1","direct":false,"kind":"runtime","optional":false},{"id":11460395469,"package_name":"github.com/tinylib/msgp","ecosystem":"go","requirements":"v1.1.6","direct":false,"kind":"runtime","optional":false},{"id":11460395471,"package_name":"github.com/tinylib/msgp","ecosystem":"go","requirements":"v1.1.8","direct":false,"kind":"runtime","optional":false},{"id":11460395472,"package_name":"github.com/valyala/bytebufferpool","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":11460395475,"package_name":"github.com/valyala/fasthttp","ecosystem":"go","requirements":"v1.47.0","direct":false,"kind":"runtime","optional":false},{"id":11460395477,"package_name":"github.com/valyala/tcplisten","ecosystem":"go","requirements":"v1.0.0","direct":false,"kind":"runtime","optional":false},{"id":11460395479,"package_name":"github.com/yuin/goldmark","ecosystem":"go","requirements":"v1.2.1","direct":false,"kind":"runtime","optional":false},{"id":11460395481,"package_name":"github.com/yuin/goldmark","ecosystem":"go","requirements":"v1.4.13","direct":false,"kind":"runtime","optional":false},{"id":11460395483,"package_name":"go.opencensus.io","ecosystem":"go","requirements":"v0.24.0","direct":false,"kind":"runtime","optional":false},{"id":11460395485,"package_name":"go.opentelemetry.io/proto/otlp","ecosystem":"go","requirements":"v0.7.0","direct":false,"kind":"runtime","optional":false},{"id":11460395487,"package_name":"golang.org/x/crypto","ecosystem":"go","requirements":"v0.0.0-20190308221718-c2843e01d9a2","direct":false,"kind":"runtime","optional":false},{"id":11460395490,"package_name":"golang.org/x/crypto","ecosystem":"go","requirements":"v0.0.0-20191011191535-87dc89f01550","direct":false,"kind":"runtime","optional":false},{"id":11460395492,"package_name":"golang.org/x/crypto","ecosystem":"go","requirements":"v0.0.0-20200622213623-75b288015ac9","direct":false,"kind":"runtime","optional":false},{"id":11460395494,"package_name":"golang.org/x/crypto","ecosystem":"go","requirements":"v0.0.0-20210921155107-089bfa567519","direct":false,"kind":"runtime","optional":false},{"id":11460395496,"package_name":"golang.org/x/crypto","ecosystem":"go","requirements":"v0.7.0","direct":false,"kind":"runtime","optional":false},{"id":11460395498,"package_name":"golang.org/x/exp","ecosystem":"go","requirements":"v0.0.0-20190121172915-509febef88a4","direct":false,"kind":"runtime","optional":false},{"id":11460395500,"package_name":"golang.org/x/lint","ecosystem":"go","requirements":"v0.0.0-20181026193005-c67002cb31c3","direct":false,"kind":"runtime","optional":false},{"id":11460395502,"package_name":"golang.org/x/lint","ecosystem":"go","requirements":"v0.0.0-20190227174305-5b3e6a55c961","direct":false,"kind":"runtime","optional":false},{"id":11460395504,"package_name":"golang.org/x/lint","ecosystem":"go","requirements":"v0.0.0-20190313153728-d0100b6bd8b3","direct":false,"kind":"runtime","optional":false},{"id":11460395505,"package_name":"golang.org/x/mod","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395508,"package_name":"golang.org/x/mod","ecosystem":"go","requirements":"v0.6.0-dev.0.20220419223038-86c51ed26bb4","direct":false,"kind":"runtime","optional":false},{"id":11460395510,"package_name":"golang.org/x/mod","ecosystem":"go","requirements":"v0.7.0","direct":false,"kind":"runtime","optional":false},{"id":11460395512,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20180724234803-3673e40ba225","direct":false,"kind":"runtime","optional":false},{"id":11460395514,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20180826012351-8a410e7b638d","direct":false,"kind":"runtime","optional":false},{"id":11460395516,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190108225652-1e06a53dbb7e","direct":false,"kind":"runtime","optional":false},{"id":11460395518,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190213061140-3a22650c66bd","direct":false,"kind":"runtime","optional":false},{"id":11460395520,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190311183353-d8887717615a","direct":false,"kind":"runtime","optional":false},{"id":11460395522,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190404232315-eb5bcb51f2a3","direct":false,"kind":"runtime","optional":false},{"id":11460395524,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190603091049-60506f45cf65","direct":false,"kind":"runtime","optional":false},{"id":11460395526,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20190620200207-3b0461eec859","direct":false,"kind":"runtime","optional":false},{"id":11460395527,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20200822124328-c89045814202","direct":false,"kind":"runtime","optional":false},{"id":11460395529,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20201021035429-f5854403a974","direct":false,"kind":"runtime","optional":false},{"id":11460395531,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20201110031124-69a78807bb2b","direct":false,"kind":"runtime","optional":false},{"id":11460395533,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20210226172049-e18ecbb05110","direct":false,"kind":"runtime","optional":false},{"id":11460395535,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20211015210444-4f30a5c0130f","direct":false,"kind":"runtime","optional":false},{"id":11460395537,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.0.0-20220722155237-a158d28d115b","direct":false,"kind":"runtime","optional":false},{"id":11460395539,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395541,"package_name":"golang.org/x/net","ecosystem":"go","requirements":"v0.9.0","direct":false,"kind":"runtime","optional":false},{"id":11460395543,"package_name":"golang.org/x/oauth2","ecosystem":"go","requirements":"v0.0.0-20180821212333-d2e6202438be","direct":false,"kind":"runtime","optional":false},{"id":11460395545,"package_name":"golang.org/x/oauth2","ecosystem":"go","requirements":"v0.0.0-20200107190931-bf48bf16ab8d","direct":false,"kind":"runtime","optional":false},{"id":11460395547,"package_name":"golang.org/x/oauth2","ecosystem":"go","requirements":"v0.7.0","direct":false,"kind":"runtime","optional":false},{"id":11460395548,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20180314180146-1d60e4601c6f","direct":false,"kind":"runtime","optional":false},{"id":11460395551,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20181108010431-42b317875d0f","direct":false,"kind":"runtime","optional":false},{"id":11460395553,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20181221193216-37e7f081c4d4","direct":false,"kind":"runtime","optional":false},{"id":11460395554,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20190423024810-112230192c58","direct":false,"kind":"runtime","optional":false},{"id":11460395557,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20201020160332-67f06af15bc9","direct":false,"kind":"runtime","optional":false},{"id":11460395559,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20210220032951-036812b2e83c","direct":false,"kind":"runtime","optional":false},{"id":11460395561,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.0.0-20220722155255-886fb9371eb4","direct":false,"kind":"runtime","optional":false},{"id":11460395563,"package_name":"golang.org/x/sync","ecosystem":"go","requirements":"v0.1.0","direct":false,"kind":"runtime","optional":false},{"id":11460395565,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20180830151530-49385e6e1522","direct":false,"kind":"runtime","optional":false},{"id":11460395567,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20190215142949-d0b11bdaac8a","direct":false,"kind":"runtime","optional":false},{"id":11460395569,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20190412213103-97732733099d","direct":false,"kind":"runtime","optional":false},{"id":11460395571,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20200323222414-85ca7c5b95cd","direct":false,"kind":"runtime","optional":false},{"id":11460395573,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20200930185726-fdedc70b468f","direct":false,"kind":"runtime","optional":false},{"id":11460395575,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20201119102817-f84b799fce68","direct":false,"kind":"runtime","optional":false},{"id":11460395577,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20210423082822-04245dca01da","direct":false,"kind":"runtime","optional":false},{"id":11460395579,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20210615035016-665e8c7367d1","direct":false,"kind":"runtime","optional":false},{"id":11460395581,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20211019181941-9d821ace8654","direct":false,"kind":"runtime","optional":false},{"id":11460395583,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20220520151302-bc2c85ada10a","direct":false,"kind":"runtime","optional":false},{"id":11460395585,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20220722155257-8c9f86f7a55f","direct":false,"kind":"runtime","optional":false},{"id":11460395587,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.0.0-20220811171246-fbc7d0a398ab","direct":false,"kind":"runtime","optional":false},{"id":11460395589,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395591,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.6.0","direct":false,"kind":"runtime","optional":false},{"id":11460395593,"package_name":"golang.org/x/sys","ecosystem":"go","requirements":"v0.8.0","direct":false,"kind":"runtime","optional":false},{"id":11460395595,"package_name":"golang.org/x/term","ecosystem":"go","requirements":"v0.0.0-20201126162022-7de9c90e9dd1","direct":false,"kind":"runtime","optional":false},{"id":11460395597,"package_name":"golang.org/x/term","ecosystem":"go","requirements":"v0.0.0-20210927222741-03fcf44c2211","direct":false,"kind":"runtime","optional":false},{"id":11460395599,"package_name":"golang.org/x/term","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395601,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.3.0","direct":false,"kind":"runtime","optional":false},{"id":11460395604,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.3.2","direct":false,"kind":"runtime","optional":false},{"id":11460395606,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.3.3","direct":false,"kind":"runtime","optional":false},{"id":11460395608,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.3.6","direct":false,"kind":"runtime","optional":false},{"id":11460395610,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.3.7","direct":false,"kind":"runtime","optional":false},{"id":11460395612,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.5.0","direct":false,"kind":"runtime","optional":false},{"id":11460395614,"package_name":"golang.org/x/text","ecosystem":"go","requirements":"v0.9.0","direct":false,"kind":"runtime","optional":false},{"id":11460395616,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20180917221912-90fa682c2a6e","direct":false,"kind":"runtime","optional":false},{"id":11460395618,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20190114222345-bf090417da8b","direct":false,"kind":"runtime","optional":false},{"id":11460395620,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20190226205152-f727befe758c","direct":false,"kind":"runtime","optional":false},{"id":11460395622,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20190311212946-11955173bddd","direct":false,"kind":"runtime","optional":false},{"id":11460395624,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20190524140312-2c0ae7006135","direct":false,"kind":"runtime","optional":false},{"id":11460395626,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20191119224855-298f0cb1881e","direct":false,"kind":"runtime","optional":false},{"id":11460395628,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.0.0-20201022035929-9cf592e881e9","direct":false,"kind":"runtime","optional":false},{"id":11460395630,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.1.12","direct":false,"kind":"runtime","optional":false},{"id":11460395632,"package_name":"golang.org/x/tools","ecosystem":"go","requirements":"v0.4.0","direct":false,"kind":"runtime","optional":false},{"id":11460395634,"package_name":"golang.org/x/xerrors","ecosystem":"go","requirements":"v0.0.0-20190717185122-a985d3407aa7","direct":false,"kind":"runtime","optional":false},{"id":11460395636,"package_name":"golang.org/x/xerrors","ecosystem":"go","requirements":"v0.0.0-20191011141410-1b5146add898","direct":false,"kind":"runtime","optional":false},{"id":11460395638,"package_name":"golang.org/x/xerrors","ecosystem":"go","requirements":"v0.0.0-20191204190536-9bdfabe68543","direct":false,"kind":"runtime","optional":false},{"id":11460395640,"package_name":"golang.org/x/xerrors","ecosystem":"go","requirements":"v0.0.0-20200804184101-5ec99f83aff1","direct":false,"kind":"runtime","optional":false},{"id":11460395642,"package_name":"golang.org/x/xerrors","ecosystem":"go","requirements":"v0.0.0-20220907171357-04be3eba64a2","direct":false,"kind":"runtime","optional":false},{"id":11460395644,"package_name":"google.golang.org/api","ecosystem":"go","requirements":"v0.118.0","direct":false,"kind":"runtime","optional":false},{"id":11460395646,"package_name":"google.golang.org/appengine","ecosystem":"go","requirements":"v1.1.0","direct":false,"kind":"runtime","optional":false},{"id":11460395649,"package_name":"google.golang.org/appengine","ecosystem":"go","requirements":"v1.4.0","direct":false,"kind":"runtime","optional":false},{"id":11460395651,"package_name":"google.golang.org/appengine","ecosystem":"go","requirements":"v1.6.7","direct":false,"kind":"runtime","optional":false},{"id":11460395653,"package_name":"google.golang.org/genproto","ecosystem":"go","requirements":"v0.0.0-20180817151627-c66870c02cf8","direct":false,"kind":"runtime","optional":false},{"id":11460395655,"package_name":"google.golang.org/genproto","ecosystem":"go","requirements":"v0.0.0-20190819201941-24fa4b261c55","direct":false,"kind":"runtime","optional":false},{"id":11460395657,"package_name":"google.golang.org/genproto","ecosystem":"go","requirements":"v0.0.0-20200513103714-09dca8ec2884","direct":false,"kind":"runtime","optional":false},{"id":11460395658,"package_name":"google.golang.org/genproto","ecosystem":"go","requirements":"v0.0.0-20200526211855-cb27e3aa2013","direct":false,"kind":"runtime","optional":false},{"id":11460395660,"package_name":"google.golang.org/genproto","ecosystem":"go","requirements":"v0.0.0-20230403163135-c38d8f061ccd","direct":false,"kind":"runtime","optional":false},{"id":11460395662,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.19.0","direct":false,"kind":"runtime","optional":false},{"id":11460395665,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.23.0","direct":false,"kind":"runtime","optional":false},{"id":11460395666,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.25.1","direct":false,"kind":"runtime","optional":false},{"id":11460395668,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.27.0","direct":false,"kind":"runtime","optional":false},{"id":11460395670,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.33.1","direct":false,"kind":"runtime","optional":false},{"id":11460395671,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.33.2","direct":false,"kind":"runtime","optional":false},{"id":11460395673,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.36.0","direct":false,"kind":"runtime","optional":false},{"id":11460395675,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.45.0","direct":false,"kind":"runtime","optional":false},{"id":11460395677,"package_name":"google.golang.org/grpc","ecosystem":"go","requirements":"v1.54.0","direct":false,"kind":"runtime","optional":false},{"id":11460395679,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v0.0.0-20200109180630-ec00e32a8dfd","direct":false,"kind":"runtime","optional":false},{"id":11460395681,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v0.0.0-20200221191635-4d8936d0db64","direct":false,"kind":"runtime","optional":false},{"id":11460395683,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v0.0.0-20200228230310-ab0ca4ff8a60","direct":false,"kind":"runtime","optional":false},{"id":11460395684,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.20.1-0.20200309200217-e05f789c0967","direct":false,"kind":"runtime","optional":false},{"id":11460395686,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.21.0","direct":false,"kind":"runtime","optional":false},{"id":11460395688,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.22.0","direct":false,"kind":"runtime","optional":false},{"id":11460395689,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.23.0","direct":false,"kind":"runtime","optional":false},{"id":11460395691,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.23.1-0.20200526195155-81db48ad09cc","direct":false,"kind":"runtime","optional":false},{"id":11460395693,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.25.0","direct":false,"kind":"runtime","optional":false},{"id":11460395695,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.26.0-rc.1","direct":false,"kind":"runtime","optional":false},{"id":11460395697,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.26.0","direct":false,"kind":"runtime","optional":false},{"id":11460395699,"package_name":"google.golang.org/protobuf","ecosystem":"go","requirements":"v1.30.0","direct":false,"kind":"runtime","optional":false},{"id":11460395701,"package_name":"gopkg.in/check.v1","ecosystem":"go","requirements":"v0.0.0-20161208181325-20d25e280405","direct":false,"kind":"runtime","optional":false},{"id":11460395702,"package_name":"gopkg.in/yaml.v2","ecosystem":"go","requirements":"v2.2.2","direct":false,"kind":"runtime","optional":false},{"id":11460395704,"package_name":"gopkg.in/yaml.v2","ecosystem":"go","requirements":"v2.2.3","direct":false,"kind":"runtime","optional":false},{"id":11460395706,"package_name":"gopkg.in/yaml.v3","ecosystem":"go","requirements":"v3.0.0-20200313102051-9f266ea9e77c","direct":false,"kind":"runtime","optional":false},{"id":11460395708,"package_name":"gopkg.in/yaml.v3","ecosystem":"go","requirements":"v3.0.1","direct":false,"kind":"runtime","optional":false},{"id":11460395710,"package_name":"honnef.co/go/tools","ecosystem":"go","requirements":"v0.0.0-20190102054323-c2f93a96b099","direct":false,"kind":"runtime","optional":false},{"id":11460395712,"package_name":"honnef.co/go/tools","ecosystem":"go","requirements":"v0.0.0-20190523083050-ea95bdfd59fc","direct":false,"kind":"runtime","optional":false}]}],"score":6.579251212010101,"created_at":"2024-05-05T00:13:31.511Z","updated_at":"2026-06-10T22:30:19.917Z","avatar_url":"https://github.com/ausocean.png","language":"Go","category":"Biosphere","sub_category":"Marine Life and Fishery","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":3,"readme":"**Note** Repo archived since functionality has moved to ausoceantv. The datastore package has moved to cloud.\n\n**Authors:** Trek Hopton, Alan Noble\n\n**Page Contents**\n- [Mission](#mission)\n- [Description](#description)\n- [Stages](#stages)\n  - [Step 1 - AusOcean Data Storage Method](#step-1---ausocean-data-storage-method)\n  - [Step 2 - Data Access API](#step-2---data-access-api)\n  - [Step 3 - UI for and Video Annotation and Labelling](#step-3---ui-for-and-video-annotation-and-labelling)\n  - [Step 4 - Dataset Curation](#step-4---dataset-curation)\n  - [Step 5 - Motion Detection](#step-5---motion-detection)\n  - [Step 6 - Object Detection](#step-6---object-detection)\n  - [Step 7 - Automatic Species Classification / Suggestion](#step-7---automatic-species-classification--suggestion)\n  - [Step 8 - Species Statistics and Analysis Tools](#step-8---species-statistics-and-analysis-tools)\n- [Related Projects](#related-projects)\n\n---\n\n### Mission\nAusOcean is dedicated to helping our oceans through the use of technology. Our development of a video livestream stack has resulted in a significant accumulation of marine footage being uploaded to YouTube, with hours of content available for viewing. While the availability of this marine content contributes to the raising of awareness for our oceans, we believe the video data provides significant potential for further positive impact.\n\nThe goal of the OpenFish project is to improve our understanding of marine species.\n\n### Description\nOpenFish is an open-source system written in Golang for classifying marine species. Tasks involve importing video or image data, classifying and annotating data (both manually and automatically), searching, and more. It is expected that OpenFish will utilise computer vision and machine learning techniques.\n\n### Stages\n\n#### Step 1 - AusOcean Data Storage Method\nAusOcean will need to provide access to its marine video content to start the project off. Currently AusOcean livestreams to YouTube, on which the data is stored on the AusOcean channel. The data needs to be in the google datastore in preparation for a data access API. \n\nInitially a collection of videos should be downloaded in mp4 (h264) from YouTube. This can happen via the YouTube Studio UI or using existing libraries such as pytube. Then we convert to MPEG-TS using ffmpeg, then upload to the datastore using VidGrind’s upload page. This could be automated but it’s not super important as this is just a starting point.\n\nVidForward is AusOcean’s cloud-hosted video stream middleman. This will give us the ability to stream to YouTube while simultaneously streaming MPEG-TS (h264) to the datastore. Once this is implemented, we won’t have to upload videos from YouTube.\n\n#### Step 2 - Data Access API\nIn this step, an API will be developed to provide access to the stored marine footage, allowing clients to retrieve and use the data.\n\nA client should be able to find and download a segment of footage by providing a query eg. location, date, time.\n\nIt would be useful to be able to extract an image from a given video, this would require h264 decoding.\n\n#### Step 3 - UI for and Video Annotation and Labelling\nIn this step, a user interface will be created to help users identify different species of marine life found in the footage. \n\nThis will incorporate a video player and a labelling interface. Users should be able to set the time range for an observation and draw a box around the object of interest. It would be helpful to have a chart/guide which informs species classification.\n\nIt is desirable for users to be able to share clips of video.\n\nIf a user is not logged in, they should only be able to play the video and see the labels (read only). When logged in, users can label the data. It would be useful to have different user classes eg. certified experts have higher weights on their classifications.\n\n#### Step 4 - Dataset Curation\nIn this step, data from the labelling UI will be curated and organised into a training dataset for computer vision techniques.\n\n#### Step 5 - Motion Detection \nIn this step, computer vision techniques will be applied to the marine footage to detect movements in the videos. Motion detection will help us narrow down the video to moments of interest.\n\n#### Step 6 - Object Detection\nIn this step, computer vision techniques will be applied to the marine footage to detect objects eg. fish in the videos. Object detection will allow us to automatically create bounds around marine species for more efficient manual and automatic classification.\n\n#### Step 7 - Automatic Species Classification / Suggestion\nIn this step, artificial intelligence algorithms will be used to automatically classify marine species based on the data collected in previous steps. A system will also be developed to provide suggestions in the UI for species classification to help users identify different species of marine life.\n\n#### Step 8 - Species Statistics and Analysis Tools\nIn this step, statistics and analysis tools will be developed to enable the analysis of the data collected on marine species, and to provide trends and other insights into the distribution and diversity of species in the ocean. \n\n\n### Related Projects\n**Classification using images**\n\nFishNet and FishID are both open-source frameworks for classifying fish species from images. FishNet is a Python package where FishID is a mobile phone app (iOS and Android).\n\n(iNaturalist)[https://www.inaturalist.org/pages/developers] provides image datasets for the purpose of species classification.\n\n**Classification using video**\n\n(Fish4Knowledge)[https://homepages.inf.ed.ac.uk/rbf/fish4knowledge/overview.htm], a system for fish recognition and behaviour analysis from underwater video written in Python. It was a research project at the University of Edinburgh and does not appear to have been active for ten years. The code can be found on SourceForge (here)[https://sourceforge.net/projects/fish4knowledgesourcecode/]. The datasets can be found on GitHub but not the code. It uses a GNU General Public License 2.0.\n\nIt appears to use older computer-vision techniques and is designed to run on desktop computers (not the cloud), and uses the MySQL database for storage.\nUseful projects\n\n**Useful Projects**\n\n(DeepFish)[https://github.com/alzayats/DeepFish] is described as “A Realistic Fish-Habitat Dataset to Evaluate Algorithms for Underwater Visual Analysis”. It uses an MIT licence.\n\n\n### Licensing\n\nWhile the GNU General Public License version 2.0 (GPLv2) and the BSD 3-Clause License are both widely-used open-source software licences, the latter will be used for OpenFish.\n\nKey differences between the two licences are as follows:\n\n1. Copyleft vs. Permissive: The GPLv2 is a copyleft licence, which means that any modifications or derivative works of the software must also be distributed under the same licence. This ensures that the software remains free and open-source. The BSD 3-Clause License, on the other hand, is a permissive licence that allows for modifications and derivative works to be distributed under different licences, including proprietary licences.\n2. Patent Rights: The GPLv2 includes a patent clause that requires anyone who distributes the software to grant all recipients a licence to any patents that are necessary to use the software. The BSD 3-Clause License does not include a patent clause.\n3. Attribution: The BSD 3-Clause License requires that any distribution of the software include a notice that the software is licensed under the BSD 3-Clause License and include the copyright notice and disclaimer. The GPLv2 also requires that any distribution of the software include a notice that the software is licensed under the GPL, but it also requires that the source code be made available to recipients and that any modifications or derivative works be clearly marked as such.\n4. Compatibility: The GPLv2 and the BSD 3-Clause License are both compatible with other open-source licences, but the copyleft nature of the GPLv2 may make it less compatible with proprietary licences.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","archiving","measur","transforms","generic","compose","observation","conversion","projection","animals"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/192239","html_url":"https://ost.ecosyste.ms/projects/192239"}