Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 202 additions & 0 deletions 2026/09/2026-09-29-lmdbjava.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
Before disabling any content in relation to this takedown notice, GitHub
- contacted the owners of some or all of the affected repositories to give them an opportunity to [make changes](https://docs.github.com/en/github/site-policy/dmca-takedown-policy#a-how-does-this-actually-work).
- provided information on how to [submit a DMCA Counter Notice](https://docs.github.com/en/articles/guide-to-submitting-a-dmca-counter-notice).

To learn about when and why GitHub may process some notices this way, please visit our [README](https://github.com/github/dmca/blob/master/README.md#anatomy-of-a-takedown-notice).

---

**Are you the copyright holder or authorized to act on the copyright owner's behalf? If you are submitting this notice on behalf of a company, please be sure to use an email address on the company's domain. If you use a personal email address for a notice submitted on behalf of a company, we may not be able to process it.**

Yes, I am authorized to act on the copyright owner's behalf.

**Are you submitting a revised DMCA notice after GitHub Trust & Safety requested you make changes to your original notice?**

Yes

**Please provide the Zendesk ticket number of your previously submitted notice. Zendesk ticket numbers are 7 digit ID numbers located in the subject line or body of your confirmation email.**

4663072

**Does your claim involve content on GitHub or npm.js?**

GitHub

**Please describe the nature of your copyright ownership or authorization to act on the owner's behalf.**

I am the [private] and [private] [private] [private] of the LmdbJava project. This is a multi-contributor open-source project. [private] authored the substantial majority of the source files at issue and hold copyright in those contributions. I make this notice as an owner of an exclusive right that is being infringed.

**Please provide a detailed description of the original copyrighted work that has allegedly been infringed.**

The original work is the LmdbJava library.

The specific version copied is release lmdbjava-0.9.1 (source-identical to commit 154df33aa6b196a96e8abe7a3e145b62cc08f382). The individual source files that were copied are the Java files named in the mapping in a following section.

**If the original work referenced above is available online, please provide a URL.**

https://github.com/lmdbjava/lmdbjava/

**We ask that a DMCA takedown notice list every specific file in the repository that is infringing, unless the entire contents of the repository are infringing on your copyright. Please clearly state that the entire repository is infringing, OR provide the specific files within the repository you would like removed.**

**Based on the above, I confirm that:**

Specific files within the repository are infringing

**Identify only the specific file URLs within the repository that is infringing:**

https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/EnvInfo.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/ResultCodeMapper.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/TargetName.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/UnsafeAccess.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/Verifier.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Cursor.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/CursorIterable.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Dbi.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Env.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/KeyRange.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/KeyVal.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Library.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Meta.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Stat.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/db/Txn.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/enums/GetOp.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/enums/KeyRangeType.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/enums/SeekOp.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/exceptions/LmdbException.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/exceptions/LmdbNativeException.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/flags/CopyFlags.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/flags/DbiFlags.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/flags/MaskedFlag.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/flags/PutFlags.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/flags/TxnFlags.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/package-info.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/proxy/BufferProxy.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/proxy/ByteArrayProxy.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/proxy/ByteBufProxy.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/proxy/ByteBufferProxy.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/proxy/DirectBufferProxy.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/main/scala/torch/lmdb/utils/ReferenceUtil.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/ByteBufferProxyTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/ComparatorTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/CursorIterableTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/CursorParamTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/CursorTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/DbiTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/EnvTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/GarbageCollectionTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/KeyRangeTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/LibraryTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/MaskedFlagTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/MetaTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/ResultCodeMapperTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/TargetNameTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/TestUtils.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/TutorialTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/TxnTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/VerifierTest.scala
https://github.com/mullerhai/storch-lmdb/blob/a4835ac1729406503bbca04b600e9b33c730bb8b/src/test/scala/lmdbsuite/package-info.scala

**Do you claim to have any technological measures in place to control access to your copyrighted content? Please see our <a href="https://docs.github.com/articles/guide-to-submitting-a-dmca-takedown-notice#complaints-about-anti-circumvention-technology">Complaints about Anti-Circumvention Technology</a> if you are unsure.**

No

**If you are reporting an allegedly infringing fork, please note that each fork is a distinct repository and <i>must be identified separately</i>. Please read more about <a href="https://docs.github.com/articles/dmca-takedown-policy#b-what-about-forks-or-whats-a-fork">forks.</a> As forks may often contain different material than in the parent repository, if you believe any of the repositories or files in the forks are infringing, please list each fork URL below:**

**Is the work licensed under an open source license?**

Yes

**Which license?**

apache-license-2.0

**How do you believe the license is being violated?**

The 51 files listed are machine-transpiled copies of the correspondingly named LmdbJava source files, converted from Java to Scala. The copying is direct and substantial:

* All 51 files reproduce [private] Apache-2.0 copyright header byte-for-byte after a single mechanical substitution of "torch.lmdb" for "LmdbJava".
* The Javadoc/comment text, identifiers, and literal constants are carried over near-verbatim; automated-conversion artifacts of the original text survive in the copies.
* A per-file proximity analysis and the exact, reproducible method is provided below.
* The author of storch-lmdb has himself described the project as a conversion of LmdbJava, in LmdbJava issue [private] ([private], opened [private], titled "[private]").

The copying is demonstrated by the following proximity percentages, derived using difflib.SequenceMatcher over a lowercased token stream ignoring language keywords. This compares the storch-lmdb file (commit a4835ac1729406503bbca04b600e9b33c730bb8b) and the identically-named LmdbJava file (commit 154df33), after substituting 'torch.lmdb' with 'LmdbJava':

- src/main/scala/torch/lmdb/package-info.scala <= (100%) <= src/main/java/org/lmdbjava/package-info.java
- src/main/scala/torch/lmdb/utils/ReferenceUtil.scala <= (99%) <= src/main/java/org/lmdbjava/ReferenceUtil.java
- src/test/scala/lmdbsuite/package-info.scala <= (98%) <= src/test/java/org/lmdbjava/package-info.java
- src/main/scala/torch/lmdb/enums/KeyRangeType.scala <= (97%) <= src/main/java/org/lmdbjava/KeyRangeType.java
- src/main/scala/torch/lmdb/flags/PutFlags.scala <= (96%) <= src/main/java/org/lmdbjava/PutFlags.java
- src/main/scala/torch/lmdb/TargetName.scala <= (95%) <= src/main/java/org/lmdbjava/TargetName.java
- src/test/scala/lmdbsuite/MaskedFlagTest.scala <= (95%) <= src/test/java/org/lmdbjava/MaskedFlagTest.java
- src/main/scala/torch/lmdb/flags/DbiFlags.scala <= (95%) <= src/main/java/org/lmdbjava/DbiFlags.java
- src/main/scala/torch/lmdb/db/Meta.scala <= (95%) <= src/main/java/org/lmdbjava/Meta.java
- src/main/scala/torch/lmdb/flags/TxnFlags.scala <= (95%) <= src/main/java/org/lmdbjava/TxnFlags.java
- src/main/scala/torch/lmdb/proxy/BufferProxy.scala <= (94%) <= src/main/java/org/lmdbjava/BufferProxy.java
- src/main/scala/torch/lmdb/ResultCodeMapper.scala <= (94%) <= src/main/java/org/lmdbjava/ResultCodeMapper.java
- src/test/scala/lmdbsuite/TutorialTest.scala <= (94%) <= src/test/java/org/lmdbjava/TutorialTest.java
- src/main/scala/torch/lmdb/exceptions/LmdbException.scala <= (94%) <= src/main/java/org/lmdbjava/LmdbException.java
- src/test/scala/lmdbsuite/TargetNameTest.scala <= (94%) <= src/test/java/org/lmdbjava/TargetNameTest.java
- src/test/scala/lmdbsuite/MetaTest.scala <= (93%) <= src/test/java/org/lmdbjava/MetaTest.java
- src/test/scala/lmdbsuite/LibraryTest.scala <= (93%) <= src/test/java/org/lmdbjava/LibraryTest.java
- src/main/scala/torch/lmdb/UnsafeAccess.scala <= (92%) <= src/main/java/org/lmdbjava/UnsafeAccess.java
- src/test/scala/lmdbsuite/VerifierTest.scala <= (92%) <= src/test/java/org/lmdbjava/VerifierTest.java
- src/test/scala/lmdbsuite/TestUtils.scala <= (92%) <= src/test/java/org/lmdbjava/TestUtils.java
- src/main/scala/torch/lmdb/enums/GetOp.scala <= (91%) <= src/main/java/org/lmdbjava/GetOp.java
- src/main/scala/torch/lmdb/proxy/DirectBufferProxy.scala <= (91%) <= src/main/java/org/lmdbjava/DirectBufferProxy.java
- src/main/scala/torch/lmdb/proxy/ByteArrayProxy.scala <= (90%) <= src/main/java/org/lmdbjava/ByteArrayProxy.java
- src/main/scala/torch/lmdb/db/Cursor.scala <= (89%) <= src/main/java/org/lmdbjava/Cursor.java
- src/main/scala/torch/lmdb/flags/MaskedFlag.scala <= (89%) <= src/main/java/org/lmdbjava/MaskedFlag.java
- src/main/scala/torch/lmdb/enums/SeekOp.scala <= (88%) <= src/main/java/org/lmdbjava/SeekOp.java
- src/test/scala/lmdbsuite/ByteBufferProxyTest.scala <= (88%) <= src/test/java/org/lmdbjava/ByteBufferProxyTest.java
- src/test/scala/lmdbsuite/CursorIterableTest.scala <= (87%) <= src/test/java/org/lmdbjava/CursorIterableTest.java
- src/test/scala/lmdbsuite/CursorTest.scala <= (87%) <= src/test/java/org/lmdbjava/CursorTest.java
- src/main/scala/torch/lmdb/Verifier.scala <= (87%) <= src/main/java/org/lmdbjava/Verifier.java
- src/main/scala/torch/lmdb/EnvInfo.scala <= (86%) <= src/main/java/org/lmdbjava/EnvInfo.java
- src/main/scala/torch/lmdb/db/KeyVal.scala <= (86%) <= src/main/java/org/lmdbjava/KeyVal.java
- src/main/scala/torch/lmdb/proxy/ByteBufferProxy.scala <= (86%) <= src/main/java/org/lmdbjava/ByteBufferProxy.java
- src/test/scala/lmdbsuite/DbiTest.scala <= (85%) <= src/test/java/org/lmdbjava/DbiTest.java
- src/test/scala/lmdbsuite/TxnTest.scala <= (85%) <= src/test/java/org/lmdbjava/TxnTest.java
- src/test/scala/lmdbsuite/EnvTest.scala <= (84%) <= src/test/java/org/lmdbjava/EnvTest.java
- src/main/scala/torch/lmdb/db/KeyRange.scala <= (84%) <= src/main/java/org/lmdbjava/KeyRange.java
- src/test/scala/lmdbsuite/ResultCodeMapperTest.scala <= (84%) <= src/test/java/org/lmdbjava/ResultCodeMapperTest.java
- src/main/scala/torch/lmdb/db/Dbi.scala <= (84%) <= src/main/java/org/lmdbjava/Dbi.java
- src/test/scala/lmdbsuite/GarbageCollectionTest.scala <= (83%) <= src/test/java/org/lmdbjava/GarbageCollectionTest.java
- src/main/scala/torch/lmdb/flags/CopyFlags.scala <= (83%) <= src/main/java/org/lmdbjava/CopyFlags.java
- src/test/scala/lmdbsuite/CursorParamTest.scala <= (81%) <= src/test/java/org/lmdbjava/CursorParamTest.java
- src/main/scala/torch/lmdb/db/Stat.scala <= (79%) <= src/main/java/org/lmdbjava/Stat.java
- src/main/scala/torch/lmdb/proxy/ByteBufProxy.scala <= (78%) <= src/main/java/org/lmdbjava/ByteBufProxy.java
- src/main/scala/torch/lmdb/exceptions/LmdbNativeException.scala <= (77%) <= src/main/java/org/lmdbjava/LmdbNativeException.java
- src/main/scala/torch/lmdb/db/Library.scala <= (77%) <= src/main/java/org/lmdbjava/Library.java
- src/test/scala/lmdbsuite/KeyRangeTest.scala <= (75%) <= src/test/java/org/lmdbjava/KeyRangeTest.java
- src/main/scala/torch/lmdb/db/Env.scala <= (74%) <= src/main/java/org/lmdbjava/Env.java
- src/main/scala/torch/lmdb/db/CursorIterable.scala <= (70%) <= src/main/java/org/lmdbjava/CursorIterable.java
- src/test/scala/lmdbsuite/ComparatorTest.scala <= (67%) <= src/test/java/org/lmdbjava/ComparatorTest.java
- src/main/scala/torch/lmdb/db/Txn.scala <= (60%) <= src/main/java/org/lmdbjava/Txn.java

**What changes can be made to bring the project into compliance with the license? For example, adding attribution, adding a license, making the repository private.**

To bring the identified files into compliance with the Apache License, Version 2.0, the following is required:

1. Restore the original LmdbJava copyright and attribution notices in each of the 51 identified files, as required by license Section 4. Currently these files remove and alter [private] copyright notice, replacing the copyright owner with "The torch.lmdb Open Source Project".
2. Include readable copies of the LICENSE and NOTICE files from the original LmdbJava project (github.com/lmdbjava/lmdbjava/) within the storch-lmdb repository, as also required by license Section 4.
3. Alternatively, remove either the 51 identified files or the repository.

**Do you have the alleged infringer’s contact information? If so, please provide it.**

Github username mullerhai

**I have a good faith belief that use of the copyrighted materials described above on the infringing web pages is not authorized by the copyright owner, or its agent, or the law.**

**I have taken <a href="https://www.lumendatabase.org/topics/22">fair use</a> into consideration.**

**I swear, under penalty of perjury, that the information in this notification is accurate and that I am the copyright owner, or am authorized to act on behalf of the owner, of an exclusive right that is allegedly infringed.**

**I have read and understand GitHub's <a href="https://docs.github.com/articles/guide-to-submitting-a-dmca-takedown-notice/">Guide to Submitting a DMCA Takedown Notice</a>.**

**So that we can get back to you, please provide either your telephone number or physical address.**

[private]

**Please type your full name for your signature.**

[private]
Loading