Review: golang-github-smallnest-ringbuffer 0.2.0-1
Package Information
| Description | thread-safe circular buffer for Go (library) A fixed-capacity circular buffer implementing the io.Reader and io.Writer interfaces. Writes wrap around the underlying array rather than allocating, which bounds memory use when streaming data of unknown length. It offers both blocking and non-blocking modes, optional automatic growth, and peek and skip operations, with all access guarded for concurrent use. |
|---|---|
| Maintainer | Debian Go Packaging Team <team+pkg-go@tracker.debian.org> |
| Changed By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Sponsor | tsimonq2@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/go-team/packages/golang-github-smallnest-ringbuffer.git (browse) |
| Closes | #1148640 |
| Tracker | https://tracker.debian.org/pkg/golang-github-smallnest-ringbuffer |
| Uploaded | 12 days ago |
New Package Report
.changes
| Source | golang-github-smallnest-ringbuffer |
|---|---|
| Version | 0.2.0-1 |
| Changed-By | Juan Manuel Méndez Rey <juan.mendezr@proton.me> |
| Architecture | source all |
| Distribution | unstable |
| Date | Mon, 26 Oct 2026 00:36:40 +0100 |
Changelog
golang-github-smallnest-ringbuffer (0.2.0-1) unstable; urgency=medium . * Initial release (Closes: #1148640)
.dsc
| Section | golang |
|---|---|
| Priority | optional |
| Component | main |
| Package-List | golang-github-smallnest-ringbuffer-dev deb golang optional arch=all |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/smallnest/ringbuffer
Upstream-Name: ringbuffer
Upstream-Contact: https://github.com/smallnest/ringbuffer/issues
Files: *
Copyright: 2019 smallnest
License: Expat
Files: pipe_test.go
Copyright: 2009 The Go Authors
License: BSD-3-clause
Comment: The file says so in its own header, and adds "Adapted from stdlib
tests to check compatibility". Its header points at "the LICENSE file" for the
BSD-style licence, which does not resolve here because upstream's LICENSE is
smallnest's MIT, so the text of Go's licence is reproduced below.
Files: pipe.go
Copyright: 2019 smallnest
License: Expat
Comment: The documentation comments and the API of Pipe are those of Go's
io.Pipe, which is BSD-3-clause, while the header claims only MIT for
smallnest. The code itself is a reimplementation over this package's ring
buffer. Reported upstream; recorded here so the provenance is not lost.
Files: debian/*
Copyright: 2026 Juan Manuel Méndez Rey <juan.mendezr@proton.me>
License: Expat
Comment: Debian packaging is licensed under the same terms as upstream
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License: BSD-3-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
.
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google LLC nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DFSG Assistant LLM REVIEW 0 blocker, 0 important, 1 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 12 days ago.
Report
DFSG NEW review for golang-github-smallnest-ringbuffer version 0.2.0-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: Yes - Packaging is of good quality: Yes
- Issues: 0 blocker, 0 important, 1 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
debian/copyright is DEP-5 with the canonical Format URL, and its stanzas account for every file in the tree: Files: * (Expat, 2019 smallnest) covers all of upstream's own files, pipe_test.go gets its own stanza for the 2009 Go Authors code under BSD-3-clause (with Go's licence text reproduced in full, since upstream's LICENSE file is smallnest's MIT and the file's own header points at an unresolvable 'LICENSE file'), and debian/* is under the packager's name. Both licences used are permissive and DFSG-free, neither is in /usr/share/common-licenses, and both full texts are present; nothing in the tree carries non-free terms, and there is no vendored third-party code, no minified or generated-without-source file and no build product. The only reservation is the animated GIF, whose origin the README itself attributes to Wikipedia while debian/copyright lists it under upstream's Expat grant; that is reported as a minor issue below.
Packaging
A clean, conventional Debian Go library package: 3.0 (quilt) with no patches, debhelper compat 14 with dh-go's golang addon, arch:all -dev package with Multi-Arch: foreign, XS-Go-Import-Path matching the package name, autopkgtest via the implicit autopkgtest-pkg-go suite (which dh-go's dh_golang_autopkgtest implements), Vcs-* and upstream metadata present, gbp.conf using DEP-14, Standards-Version 4.7.4 against Policy 4.7.4.1, and a changelog that is correct in scheme and distribution. Build dependencies are all satisfiable: dpkg-build-api (= 1) is provided by dpkg-dev 1.23.11, dh-go 1.69 is in the archive (and, being in the dh-go/dh-golang conflict pair, justifies the source lintian override), and golang-any is 2:1.27~1, newer than the go 1.26 go.mod requires.
Issues
minor licensing 1. Circular_Buffer_Animation.gif has no documented provenance and is listed under upstream's Expat grant although the README calls it Wikipedia's ◂
- Files:
Circular_Buffer_Animation.gif,README.md:7,debian/copyright:6-8 - Basis: inferred from what was read, not seen directly
- Evidence: README.md:7
[](https://github.com/smallnest/ringbuffer); debian/copyright:6-8Files: */Copyright: 2019 smallnest/License: Expat, with no stanza or comment for the image. The image is referenced only by README.md and is not installed by any binary package, but it is distributed in the source package. - Problem: The file carries no licence notice of its own, and the only attribution in the tree is the README's alt text, which names Wikipedia; the markdown looks like a copy of the image from Wikipedia's circular-buffer article with the link rewritten. If the image is a Wikimedia Commons file it is not smallnest's Expat-licensed work and needs its own Files stanza with the actual holder, licence and attribution (copyright-format 1.0 section 5.2; Policy section 12.5 requires the licence of every file to be stated, and DFSG 1/2 require a free licence for it). A file whose licence is unknown cannot be shipped.
- Fix: Ask upstream, or check the image's metadata, for where the file came from and under what licence; then either add a
Files: Circular_Buffer_Animation.gifstanza naming its actual copyright holder and licence (with the required attribution if it is CC BY-SA or similar, and the licence text if it is not one of /usr/share/common-licenses), or drop the file (Files-Excluded / repack) if no free licence can be established.
Verified ◂
- debian/copyright read in full: DEP-5, Format field exactly
https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/, stanzas Files: * (Expat, 2019 smallnest), Files: pipe_test.go (BSD-3-clause, 2009 The Go Authors), Files: pipe.go (Expat), Files: debian/* (2026 Juan Manuel Méndez Rey, Expat); both stand-alone License paragraphs carry the complete licence texts. - Complete inventory of upstream files (16 files plus debian/ and .github/): .gitignore, .travis.yml, Circular_Buffer_Animation.gif, LICENSE, Makefile, README.md, example_test.go, go.mod, issue23_test.go, notify_test.go, peekat_test.go, pipe.go, pipe_test.go, readfrom_idle_test.go, ring_buffer.go, ring_buffer_benchmark_test.go, ring_buffer_test.go, .github/workflows/go.yaml. No vendor/, no subdirectories with their own LICENSE/COPYING/NOTICE/AUTHORS, no embedded copies of third-party libraries.
- Grep for Copyright/(C)/©/SPDX/Licensed under/Permission is hereby/GNU/Apache/Mozilla/public domain/All rights reserved across the whole tree (gitignore false, .pc/ and debian/cargo-checksum.json excluded) returns exactly three upstream notices: LICENSE:1
Copyright (c) 2019 smallnest(MIT), ring_buffer.go:1 and pipe.go:1Copyright 2019 smallnest. All rights reserved.(MIT-style, pointing at the LICENSE file), pipe_test.go:1Copyright 2009 The Go Authors. All rights reserved.(BSD-style). Every other .go file is headerless, so Files: * is the only stanza that can apply, and it applies correctly; all of this matches debian/copyright (the prescan's author check found no unnamed holder). - pipe_test.go is the only file from outside upstream: its own header says BSD-style, its pointer to 'the LICENSE file' resolves to smallnest's MIT here, so the packager gave it its own stanza and reproduced Go's BSD-3-clause text. The reproduced text matches Go's licence wording (three conditions, 'Neither the name of Google LLC nor the names of its contributors').
- pipe.go's doc comments and API are those of Go's io.Pipe while its header claims MIT for smallnest; the method bodies are reimplementations over this package's ring buffer, and debian/copyright records the discrepancy in a Comment on
Files: pipe.goand says it was reported upstream. The file is matched by the right stanza (the patternpipe.gohas no wildcard, so it names that one path and does not also cover pipe_test.go) and its own notice and the stanza agree on the licence. - No minified JS/CSS, .jar, .class, .so, .dll, .exe, .pyc, firmware, PDF or generated code without input anywhere in the tree; no .pc/ or Cargo file was read. The only non-text file is Circular_Buffer_Animation.gif (an animation referenced by README.md), reported above.
- debian/control read in full: source golang-github-smallnest-ringbuffer, Section golang, Maintainer/Uploaders as in the .dsc, Build-Depends
debhelper-compat (= 14), dh-go, dpkg-build-api (= 1), golang-any, Testsuite autopkgtest-pkg-go, Standards-Version 4.7.4, Vcs-Browser/Vcs-Git on salsa go-team, Homepage equal to the copyright Source, XS-Go-Import-Path github.com/smallnest/ringbuffer (matching the -dev package name and the go.mod module path); one binary, Architecture: all, Multi-Arch: foreign, Depends: ${misc:Depends} only. - Standards-Version 4.7.4 against the reviewing system's Policy 4.7.4.1: first two components match, so it is current enough and not an issue (policy tool, table of contents).
- Build dependencies checked with the apt-cache tool: dpkg-build-api is a virtual package provided by dpkg-dev 1.23.11 as
(= 1), matchingdpkg-build-api (= 1); dh-go is 1.69 in the archive,Conflicts: dh-golang, and provides a debhelper sequence addon named golang, a buildsystem module named golang and the commands dh_golang and dh_golang_autopkgtest — so--with=golangin debian/rules resolves, and dh-golang (which Provides: dh-sequence-golang) is correctly not used; golang-any is 2:1.27~1, newer than thego 1.26directive in go.mod, so the toolchain requirement is satisfiable. - debian/source/lintian-overrides' single override (missing-build-dependency-for-dh-addon golang) is justified by dh-go's Conflicts: dh-golang and its missing dh-sequence-golang Provides, and the file documents that reasoning; the override is not hiding a real missing dependency.
- At compat 14 dh_gencontrol adds relationship substvars itself (debhelper tool, compat 14), so
Depends: ${misc:Depends}alone in the -dev package is correct, not a missing ${shlibs:Depends}. - Testsuite: autopkgtest-pkg-go with no debian/tests/control is the intended implicit form for Go packages: /usr/bin/dh_golang_autopkgtest on the reviewing system is the script that suite runs ('This script is to be called by autopkgtest'; it rebuilds the package and runs its tests against /usr/share/gocode/src, falling back to the source tree), so no test metadata file is required.
- debian/ read in full: changelog (0.2.0-1, unstable, urgency medium, single entry closing an ITP bug number), control, copyright, gbp.conf (DEP-14, debian/sid, ignore-branch), rules (
dh $@ --builddirectory=debian/_build --buildsystem=golang --with=golangand nothing else), salsa-ci.yml, source/format (3.0 (quilt)), source/lintian-overrides, upstream/metadata (Bug-Database/Bug-Submit/Repository/Repository-Browse), watch (not reviewed). No debian/patches/ directory at all, therefore no patch series to review, no maintainer scripts, no *.maintscript, no debian/tests. - The .dsc beside the tree declares no Files-Excluded and lists only the orig and debian tarballs, so nothing in debian/copyright claims to exclude files that are still in the tree (debian/copyright has no Files-Excluded field either).
- Upstream files that are not Debian's concern were looked at and are ordinary: .travis.yml (stale Go 1.15/1.16 CI with goveralls, carries no licence claim beyond Files: *), .github/workflows/go.yaml (GitHub Actions build/test), .gitignore, Makefile (developer targets, no build-time use), README.md (usage documentation, shipped by dh_installdocs), go.mod (module github.com/smallnest/ringbuffer, go 1.26, no dependencies).
- uscan found the packaged version as the newest upstream release (upstream
0.2.0, packaged0.2.0).
Not confirmed ◂
- The contents and metadata of Circular_Buffer_Animation.gif: binary file, not opened per instructions, so its origin and licence could not be established (see the issue above).
- No build or test run was possible in this read-only review: whether the package actually builds and whether
go testpasses in the autopkgtest environment were not exercised (nothing in the packaging suggests a failure; the dependencies and toolchain requirements were checked to exist and be new enough). - Whether upstream has since fixed the pipe.go provenance note or the unresolvable 'LICENSE file' pointer in the Go-derived test file; debian/copyright records the state of 0.2.0.
Proposed changes ◂
None.
Uploader's response to the LLM review
The uploader rejected this upload in response to the review.
Good catch, and found something else. The file is Wikimedia Commons'
Circular_Buffer_Animation.gif by MuhannadAjjan under CC BY-SA 4.0, so it
needed the attribution that licence asks for, not only a stanza.
This has been fixed in
https://salsa.debian.org/go-team/packages/golang-github-smallnest-ringbuffer/-/merge_requests/2
I've asked upstream to credit it in the README too:
https://github.com/smallnest/ringbuffer/pull/38
— Juan Manuel Méndez Rey (mendezr), 12 days ago
Upstream merged our copyright fix and tagged it as v0.2.1, which is that one commit and nothing else. Keeping the packaged version at 0.2.0 so the upload in the queue is not replaced; the copyright comment describes 0.2.0, which is what is packaged.
The fix will come in in future uploads.
— Juan Manuel Méndez Rey (mendezr), 12 days ago
Review Information
rejected — allocated to dfsg-uploader 11 days ago, started 11 days ago, completed 11 days ago.
Final Comment
The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.
The uploader said:
Rejecting, because we have a followup fix ready to upload.