Skip to content

Commit e7a6bc0

Browse files
committed
Change license from MIT to Apache 2.0 and enhance Docker workflow with improved tagging and metadata
- Replace MIT license with full Apache License 2.0 text and update copyright to QueryGym Contributors - Add Apache-2.0 license label to Docker image metadata - Improve Docker workflow tagging: add suffix to SHA tags, create standalone 'cpu' tag for CPU images, and add extra-tags matrix field - Update all documentation to use Docker Compose V2 syntax (docker compose instead of docker-compose) - Add citation
1 parent 0f80f16 commit e7a6bc0

10 files changed

Lines changed: 321 additions & 30 deletions

File tree

.github/workflows/docker.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ jobs:
2727
include:
2828
- dockerfile: Dockerfile
2929
tag-suffix: ""
30+
extra-tags: ""
3031
platforms: linux/amd64
3132
description: "GPU-enabled (default)"
3233
- dockerfile: Dockerfile.cpu
3334
tag-suffix: "-cpu"
35+
extra-tags: "type=raw,value=cpu,enable={{is_default_branch}}"
3436
platforms: linux/amd64,linux/arm64
3537
description: "CPU-only (lightweight)"
3638

@@ -59,12 +61,14 @@ jobs:
5961
tags: |
6062
type=semver,pattern={{version}}${{ matrix.tag-suffix }}
6163
type=semver,pattern={{major}}.{{minor}}${{ matrix.tag-suffix }}
62-
type=sha,prefix={{branch}}-
64+
type=sha,prefix={{branch}}-,suffix=${{ matrix.tag-suffix }}
6365
type=raw,value=latest${{ matrix.tag-suffix }},enable={{is_default_branch}}
66+
${{ matrix.extra-tags }}
6467
labels: |
6568
org.opencontainers.image.title=QueryGym
6669
org.opencontainers.image.description=LLM-based Query Reformulation Toolkit
6770
org.opencontainers.image.vendor=QueryGym Team
71+
org.opencontainers.image.licenses=Apache-2.0
6872
6973
- name: Build and push Docker image
7074
uses: docker/build-push-action@v5

DOCKER_SETUP.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ cd QueryGym
1515
export OPENAI_API_KEY="sk-..."
1616

1717
# 3. Run with Docker Compose
18-
docker-compose run --rm querygym
18+
docker compose run --rm querygym
1919

2020
# Or start Jupyter
21-
docker-compose up jupyter
21+
docker compose up jupyter
2222
```
2323

2424
### Option 2: Direct Docker Run
@@ -56,7 +56,7 @@ The `Makefile` is for **local development only**. End users should use pre-built
5656

5757
## Files Overview
5858

59-
- **`docker-compose.yml`** - Uses pre-built GHCR images (for end users)
59+
- **`compose.yml`** / **`docker-compose.yml`** - Uses pre-built GHCR images (for end users)
6060
- **`Dockerfile`** - GPU image definition (for building)
6161
- **`Dockerfile.cpu`** - CPU image definition (for building)
6262
- **`.dockerignore`** - Build optimization

LICENSE

Lines changed: 216 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,217 @@
1-
MIT License
1+
Copyright 2024-2025 QueryGym Contributors
22

3-
Copyright (c) ...
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
7+
http://www.apache.org/licenses/LICENSE-2.0
8+
9+
Unless required by applicable law or agreed to in writing, software
10+
distributed under the License is distributed on an "AS IS" BASIS,
11+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
See the License for the specific language governing permissions and
13+
limitations under the License.
14+
15+
================================================================================
16+
17+
Apache License
18+
Version 2.0, January 2004
19+
http://www.apache.org/licenses/
20+
21+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
22+
23+
1. Definitions.
24+
25+
"License" shall mean the terms and conditions for use, reproduction,
26+
and distribution as defined by Sections 1 through 9 of this document.
27+
28+
"Licensor" shall mean the copyright owner or entity authorized by
29+
the copyright owner that is granting the License.
30+
31+
"Legal Entity" shall mean the union of the acting entity and all
32+
other entities that control, are controlled by, or are under common
33+
control with that entity. For the purposes of this definition,
34+
"control" means (i) the power, direct or indirect, to cause the
35+
direction or management of such entity, whether by contract or
36+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
37+
outstanding shares, or (iii) beneficial ownership of such entity.
38+
39+
"You" (or "Your") shall mean an individual or Legal Entity
40+
exercising permissions granted by this License.
41+
42+
"Source" form shall mean the preferred form for making modifications,
43+
including but not limited to software source code, documentation
44+
source, and configuration files.
45+
46+
"Object" form shall mean any form resulting from mechanical
47+
transformation or translation of a Source form, including but
48+
not limited to compiled object code, generated documentation,
49+
and conversions to other media types.
50+
51+
"Work" shall mean the work of authorship, whether in Source or
52+
Object form, made available under the License, as indicated by a
53+
copyright notice that is included in or attached to the work
54+
(an example is provided in the Appendix below).
55+
56+
"Derivative Works" shall mean any work, whether in Source or Object
57+
form, that is based on (or derived from) the Work and for which the
58+
editorial revisions, annotations, elaborations, or other modifications
59+
represent, as a whole, an original work of authorship. For the purposes
60+
of this License, Derivative Works shall not include works that remain
61+
separable from, or merely link (or bind by name) to the interfaces of,
62+
the Work and Derivative Works thereof.
63+
64+
"Contribution" shall mean any work of authorship, including
65+
the original version of the Work and any modifications or additions
66+
to that Work or Derivative Works thereof, that is intentionally
67+
submitted to Licensor for inclusion in the Work by the copyright owner
68+
or by an individual or Legal Entity authorized to submit on behalf of
69+
the copyright owner. For the purposes of this definition, "submitted"
70+
means any form of electronic, verbal, or written communication sent
71+
to the Licensor or its representatives, including but not limited to
72+
communication on electronic mailing lists, source code control systems,
73+
and issue tracking systems that are managed by, or on behalf of, the
74+
Licensor for the purpose of discussing and improving the Work, but
75+
excluding communication that is conspicuously marked or otherwise
76+
designated in writing by the copyright owner as "Not a Contribution."
77+
78+
"Contributor" shall mean Licensor and any individual or Legal Entity
79+
on behalf of whom a Contribution has been received by Licensor and
80+
subsequently incorporated within the Work.
81+
82+
2. Grant of Copyright License. Subject to the terms and conditions of
83+
this License, each Contributor hereby grants to You a perpetual,
84+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
85+
copyright license to reproduce, prepare Derivative Works of,
86+
publicly display, publicly perform, sublicense, and distribute the
87+
Work and such Derivative Works in Source or Object form.
88+
89+
3. Grant of Patent License. Subject to the terms and conditions of
90+
this License, each Contributor hereby grants to You a perpetual,
91+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
92+
(except as stated in this section) patent license to make, have made,
93+
use, offer to sell, sell, import, and otherwise transfer the Work,
94+
where such license applies only to those patent claims licensable
95+
by such Contributor that are necessarily infringed by their
96+
Contribution(s) alone or by combination of their Contribution(s)
97+
with the Work to which such Contribution(s) was submitted. If You
98+
institute patent litigation against any entity (including a
99+
cross-claim or counterclaim in a lawsuit) alleging that the Work
100+
or a Contribution incorporated within the Work constitutes direct
101+
or contributory patent infringement, then any patent licenses
102+
granted to You under this License for that Work shall terminate
103+
as of the date such litigation is filed.
104+
105+
4. Redistribution. You may reproduce and distribute copies of the
106+
Work or Derivative Works thereof in any medium, with or without
107+
modifications, and in Source or Object form, provided that You
108+
meet the following conditions:
109+
110+
(a) You must give any other recipients of the Work or
111+
Derivative Works a copy of this License; and
112+
113+
(b) You must cause any modified files to carry prominent notices
114+
stating that You changed the files; and
115+
116+
(c) You must retain, in the Source form of any Derivative Works
117+
that You distribute, all copyright, patent, trademark, and
118+
attribution notices from the Source form of the Work,
119+
excluding those notices that do not pertain to any part of
120+
the Derivative Works; and
121+
122+
(d) If the Work includes a "NOTICE" text file as part of its
123+
distribution, then any Derivative Works that You distribute must
124+
include a readable copy of the attribution notices contained
125+
within such NOTICE file, excluding those notices that do not
126+
pertain to any part of the Derivative Works, in at least one
127+
of the following places: within a NOTICE text file distributed
128+
as part of the Derivative Works; within the Source form or
129+
documentation, if provided along with the Derivative Works; or,
130+
within a display generated by the Derivative Works, if and
131+
wherever such third-party notices normally appear. The contents
132+
of the NOTICE file are for informational purposes only and
133+
do not modify the License. You may add Your own attribution
134+
notices within Derivative Works that You distribute, alongside
135+
or as an addendum to the NOTICE text from the Work, provided
136+
that such additional attribution notices cannot be construed
137+
as modifying the License.
138+
139+
You may add Your own copyright statement to Your modifications and
140+
may provide additional or different license terms and conditions
141+
for use, reproduction, or distribution of Your modifications, or
142+
for any such Derivative Works as a whole, provided Your use,
143+
reproduction, and distribution of the Work otherwise complies with
144+
the conditions stated in this License.
145+
146+
5. Submission of Contributions. Unless You explicitly state otherwise,
147+
any Contribution intentionally submitted for inclusion in the Work
148+
by You to the Licensor shall be under the terms and conditions of
149+
this License, without any additional terms or conditions.
150+
Notwithstanding the above, nothing herein shall supersede or modify
151+
the terms of any separate license agreement you may have executed
152+
with Licensor regarding such Contributions.
153+
154+
6. Trademarks. This License does not grant permission to use the trade
155+
names, trademarks, service marks, or product names of the Licensor,
156+
except as required for reasonable and customary use in describing the
157+
origin of the Work and reproducing the content of the NOTICE file.
158+
159+
7. Disclaimer of Warranty. Unless required by applicable law or
160+
agreed to in writing, Licensor provides the Work (and each
161+
Contributor provides its Contributions) on an "AS IS" BASIS,
162+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
163+
implied, including, without limitation, any warranties or conditions
164+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
165+
PARTICULAR PURPOSE. You are solely responsible for determining the
166+
appropriateness of using or redistributing the Work and assume any
167+
risks associated with Your exercise of permissions under this License.
168+
169+
8. Limitation of Liability. In no event and under no legal theory,
170+
whether in tort (including negligence), contract, or otherwise,
171+
unless required by applicable law (such as deliberate and grossly
172+
negligent acts) or agreed to in writing, shall any Contributor be
173+
liable to You for damages, including any direct, indirect, special,
174+
incidental, or consequential damages of any character arising as a
175+
result of this License or out of the use or inability to use the
176+
Work (including but not limited to damages for loss of goodwill,
177+
work stoppage, computer failure or malfunction, or any and all
178+
other commercial damages or losses), even if such Contributor
179+
has been advised of the possibility of such damages.
180+
181+
9. Accepting Warranty or Additional Liability. While redistributing
182+
the Work or Derivative Works thereof, You may choose to offer,
183+
and charge a fee for, acceptance of support, warranty, indemnity,
184+
or other liability obligations and/or rights consistent with this
185+
License. However, in accepting such obligations, You may act only
186+
on Your own behalf and on Your sole responsibility, not on behalf
187+
of any other Contributor, and only if You agree to indemnify,
188+
defend, and hold each Contributor harmless for any liability
189+
incurred by, or claims asserted against, such Contributor by reason
190+
of your accepting any such warranty or additional liability.
191+
192+
END OF TERMS AND CONDITIONS
193+
194+
APPENDIX: How to apply the Apache License to your work.
195+
196+
To apply the Apache License to your work, attach the following
197+
boilerplate notice, with the fields enclosed by brackets "[]"
198+
replaced with your own identifying information. (Don't include
199+
the brackets!) The text should be enclosed in the appropriate
200+
comment syntax for the file format. We also recommend that a
201+
file or class name and description of purpose be included on the
202+
same "printed page" as the copyright notice for easier
203+
identification within third-party archives.
204+
205+
Copyright [yyyy] [name of copyright owner]
206+
207+
Licensed under the Apache License, Version 2.0 (the "License");
208+
you may not use this file except in compliance with the License.
209+
You may obtain a copy of the License at
210+
211+
http://www.apache.org/licenses/LICENSE-2.0
212+
213+
Unless required by applicable law or agreed to in writing, software
214+
distributed under the License is distributed on an "AS IS" BASIS,
215+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
216+
See the License for the specific language governing permissions and
217+
limitations under the License.

README.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,16 @@ pip install querygym
2929

3030
### Option 2: Use Docker (Recommended for Quick Start)
3131
```bash
32-
# Pull and run pre-built image
32+
# GPU version (default)
3333
docker pull ghcr.io/radinhamidi/querygym:latest
3434
docker run -it --gpus all ghcr.io/radinhamidi/querygym:latest
3535

36-
# Or use docker-compose
37-
docker-compose run --rm querygym
36+
# CPU version (lightweight)
37+
docker pull ghcr.io/radinhamidi/querygym:cpu
38+
docker run -it ghcr.io/radinhamidi/querygym:cpu
39+
40+
# Or use Docker Compose
41+
docker compose run --rm querygym
3842
```
3943

4044
📖 **Docker Setup:** See [DOCKER_SETUP.md](DOCKER_SETUP.md) for quick start or the [full Docker guide](https://querygym.readthedocs.io/en/latest/user-guide/docker/) for detailed usage.
@@ -126,3 +130,23 @@ We welcome contributions! Here's how you can help:
126130
- Have a feature request? We'd love to hear it!
127131

128132
For detailed development guidelines, see the [Contributing Guide](https://querygym.readthedocs.io/en/latest/development/contributing/) in our documentation.
133+
134+
## License
135+
136+
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
137+
138+
### Citation
139+
140+
If you use QueryGym in your research, please cite:
141+
142+
```bibtex
143+
@misc{bigdeli2025querygymtoolkitreproduciblellmbased,
144+
title={QueryGym: A Toolkit for Reproducible LLM-Based Query Reformulation},
145+
author={Amin Bigdeli and Radin Hamidi Rad and Mert Incesu and Negar Arabzadeh and Charles L. A. Clarke and Ebrahim Bagheri},
146+
year={2025},
147+
eprint={2511.15996},
148+
archivePrefix={arXiv},
149+
primaryClass={cs.IR},
150+
url={https://arxiv.org/abs/2511.15996},
151+
}
152+
```

docs/about/changelog.md

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,53 @@ All notable changes to querygym will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [0.1.1] - 2025-11-17
8+
## [0.1.4] - 2025-11-21
9+
10+
### Added
11+
- Docker support with pre-built images on GitHub Container Registry (GHCR)
12+
- GPU-enabled image (`ghcr.io/radinhamidi/querygym:latest`)
13+
- CPU-only image (`ghcr.io/radinhamidi/querygym:cpu`)
14+
- Multi-platform support (linux/amd64, linux/arm64 for CPU)
15+
- Docker Compose configuration for easy setup
16+
- Comprehensive Docker documentation and examples
17+
- GitHub Actions workflow for automated Docker image building and publishing
18+
- Example notebooks and scripts in `examples/` directory
19+
- Code snippets for quick reference
20+
- Docker examples with Jupyter notebooks
21+
- QueryGym + Pyserini integration examples
22+
- DOCKER_SETUP.md quick reference guide
23+
- Makefile for local Docker development
24+
25+
### Changed
26+
- **License changed from MIT to Apache License 2.0**
27+
- Reorganized examples into three categories: snippets, docker, querygym_pyserini
28+
- Updated to OpenJDK 21 (from 17) in Docker images
29+
- Migrated to Docker Compose V2 syntax (`docker compose` instead of `docker-compose`)
30+
- Improved Docker image tagging strategy (separate tags for GPU and CPU)
31+
- Enhanced README with Docker installation options and citation information
32+
- Updated all documentation to use modern Docker Compose commands
33+
34+
### Fixed
35+
- Docker build issues with OpenJDK availability in Debian Trixie
36+
- Docker Compose tag conflicts between GPU and CPU images
37+
- Inconsistent command examples across documentation
38+
39+
## [0.1.3] - 2025-11-19
40+
41+
### Added
42+
- Apache License 2.0
43+
- Citation information with arXiv paper reference in README
44+
45+
### Changed
46+
- Package metadata updated with Apache 2.0 license
47+
48+
## [0.1.2] - 2025-11-18
49+
50+
### Changed
51+
- Updated author information with email addresses for Mert Incesu and Negar Arabzadeh
52+
- Version bump for metadata updates
53+
54+
## [0.1.1] - 2025-11-18
955

1056
### Added
1157
- Added `tqdm` as core dependency for progress bars
@@ -22,7 +68,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2268
### Fixed
2369
- Fixed missing `tqdm` dependency in core package
2470

25-
## [0.1.0] - 2025-01-XX
71+
## [0.1.0] - 2025-11-17
2672

2773
### Added
2874
- Initial release of querygym
@@ -54,5 +100,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
54100
- Export to TSV/JSONL formats
55101
- Script generation for Pyserini + trec_eval
56102

103+
[Unreleased]: https://github.com/radinhamidi/QueryGym/compare/v0.1.3...HEAD
104+
[0.1.3]: https://github.com/radinhamidi/QueryGym/compare/v0.1.2...v0.1.3
105+
[0.1.2]: https://github.com/radinhamidi/QueryGym/compare/v0.1.1...v0.1.2
57106
[0.1.1]: https://github.com/radinhamidi/QueryGym/compare/v0.1.0...v0.1.1
58107
[0.1.0]: https://github.com/radinhamidi/QueryGym/releases/tag/v0.1.0

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ pip install querygym
4949
# Pull pre-built image
5050
docker pull ghcr.io/radinhamidi/querygym:latest
5151

52-
# Run with docker-compose
53-
docker-compose run --rm querygym
52+
# Run with Docker Compose
53+
docker compose run --rm querygym
5454
```
5555

5656
See the [Docker Guide](user-guide/docker.md) for detailed setup and usage.

0 commit comments

Comments
 (0)