Skip to content

Add OpenDocument Spreadsheet (ODS) support#91

Open
bact wants to merge 2 commits into
spdx:masterfrom
bact:ods-support
Open

Add OpenDocument Spreadsheet (ODS) support#91
bact wants to merge 2 commits into
spdx:masterfrom
bact:ods-support

Conversation

@bact

@bact bact commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Using SODS library https://github.com/miachm/SODS as suggested here spdx/tools-java#60 (comment)

Implement org.spdx.spreadsheetstore.ods package, a Apache POI adapter for SODS. Then use this with existing spreadsheet generation logic.

Due to SODS limitation, all datetime formats will be mapped to "YYYY-MM-DD" -- this will only affect the rendering. The underlying datetime value will still kept precise, including time (hours, minutes, etc).

The testSerializeOds() is copy of testSerialize().

Using SODS library https://github.com/miachm/SODS

Signed-off-by: Arthit Suriyawongkul <arthit@gmail.com>
@bact bact added the enhancement New feature or request label Jul 17, 2026
Signed-off-by: Arthit Suriyawongkul <arthit@gmail.com>
@goneall

goneall commented Jul 19, 2026

Copy link
Copy Markdown
Member

I did a quick review and it looks good so far. Thanks @bact !

I noticed the dependency uses the Unlicense, which should be compatible with Apache - so we're fine there.

No CVE's or security vulnerabilities reported from the dependency.

The adapter to POI looks like a good approach. I wonder if this my be valuable as a contribution to the upstream SODS project since there may be other projects mixing POI and SODS. The date format or any other SPDX specifics would need to be localized - but it looks like most of the code would be useful outside the SPDX context.

I'll do another, more thorough review after catching up.

@bact

bact commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator Author

Think about the SODS contribution too, probably as an optional layer since to include this adapter as a default will probably in a way against their lightweight approach. (update: put a question here miachm/SODS#107)

I'm now looking at how to better deal with data format in SODS. This one should go to SODS directly (see miachm/SODS#108).

@bact

bact commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator Author

I noticed the dependency uses the Unlicense, which should be compatible with Apache - so we're fine there.

Will put a notice somewhere on the license.

@goneall

goneall commented Jul 19, 2026

Copy link
Copy Markdown
Member

Will put a notice somewhere on the license.

I checked the upstream POM file and they do not use the SPDX standard license references, so the SPDX file won't pick up the unlincense.

I created an issue (miachm/SODS#109) and a PR in the upstream project. If/when that is merged and released, the SPDX file will contain the correct license information and we won't need to add additional notices.

@goneall goneall left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Finished a second pass - overall, looks good.

The only possible issue is the SPDX SBOM generated will include a "NOASSERTION" license for the dependency until the upstream POM file license information is addressed.

I think we can go ahead and merge and address the license information in a future update.

@bact

bact commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator Author

The only possible issue is the SPDX SBOM generated will include a "NOASSERTION" license for the dependency until the upstream POM file license information is addressed.

I think we can go ahead and merge and address the license information in a future update.

Maybe we can later add SODS license info in the NOTICE file, like this one:

https://github.com/spdx/spdx-online-tools/blob/main/NOTICE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants