aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/go.yml4
-rw-r--r--.gitignore4
-rw-r--r--AUTHORS4
-rw-r--r--LICENSE2
-rw-r--r--Makefile6
-rw-r--r--README.md6
-rw-r--r--REUSE.toml9
-rw-r--r--api/slack/message.go6
-rw-r--r--api/slack/slack.go6
-rw-r--r--api/slack/slack_example_test.go6
-rw-r--r--api/slack/webhook_client.go6
-rw-r--r--api/telegram/bot/animation.go6
-rw-r--r--api/telegram/bot/audio.go6
-rw-r--r--api/telegram/bot/bot.go6
-rw-r--r--api/telegram/bot/bot_test.go6
-rw-r--r--api/telegram/bot/callback_game.go6
-rw-r--r--api/telegram/bot/callback_query.go6
-rw-r--r--api/telegram/bot/chat.go6
-rw-r--r--api/telegram/bot/chat_permissions.go6
-rw-r--r--api/telegram/bot/chat_photo.go6
-rw-r--r--api/telegram/bot/chosen_inline_result.go6
-rw-r--r--api/telegram/bot/command.go6
-rw-r--r--api/telegram/bot/command_test.go6
-rw-r--r--api/telegram/bot/commands.go6
-rw-r--r--api/telegram/bot/contact.go6
-rw-r--r--api/telegram/bot/dice.go6
-rw-r--r--api/telegram/bot/doc.go6
-rw-r--r--api/telegram/bot/document.go6
-rw-r--r--api/telegram/bot/encrypted_credential.go6
-rw-r--r--api/telegram/bot/encrypted_passport_element.go6
-rw-r--r--api/telegram/bot/game.go6
-rw-r--r--api/telegram/bot/inline_keyboard_button.go6
-rw-r--r--api/telegram/bot/inline_keyboard_markup.go6
-rw-r--r--api/telegram/bot/inline_query.go6
-rw-r--r--api/telegram/bot/invoice.go6
-rw-r--r--api/telegram/bot/location.go6
-rw-r--r--api/telegram/bot/login_url.go6
-rw-r--r--api/telegram/bot/mask_position.go6
-rw-r--r--api/telegram/bot/message.go6
-rw-r--r--api/telegram/bot/message_entity.go6
-rw-r--r--api/telegram/bot/message_forward.go6
-rw-r--r--api/telegram/bot/message_request.go6
-rw-r--r--api/telegram/bot/message_test.go6
-rw-r--r--api/telegram/bot/options.go6
-rw-r--r--api/telegram/bot/order_info.go6
-rw-r--r--api/telegram/bot/passport_data.go6
-rw-r--r--api/telegram/bot/passport_file.go6
-rw-r--r--api/telegram/bot/photo_size.go6
-rw-r--r--api/telegram/bot/poll.go6
-rw-r--r--api/telegram/bot/poll_answer.go6
-rw-r--r--api/telegram/bot/poll_option.go6
-rw-r--r--api/telegram/bot/pre_checkout_query.go6
-rw-r--r--api/telegram/bot/response.go6
-rw-r--r--api/telegram/bot/response_parameters.go6
-rw-r--r--api/telegram/bot/shipping_address.go6
-rw-r--r--api/telegram/bot/shipping_query.go6
-rw-r--r--api/telegram/bot/sticker.go6
-rw-r--r--api/telegram/bot/successful_payment.go6
-rw-r--r--api/telegram/bot/update.go6
-rw-r--r--api/telegram/bot/user.go6
-rw-r--r--api/telegram/bot/venue.go6
-rw-r--r--api/telegram/bot/video.go6
-rw-r--r--api/telegram/bot/video_note.go6
-rw-r--r--api/telegram/bot/voice.go6
-rw-r--r--api/telegram/bot/webhook.go6
-rw-r--r--api/telegram/bot/webhook_info.go6
-rw-r--r--cmd/_cart/iris.dsv.license3
-rw-r--r--cmd/_cart/main.go6
-rw-r--r--cmd/_cascaded-random-forest/main.go6
-rw-r--r--cmd/_cascaded-random-forest/phoneme.dsv.license3
-rw-r--r--cmd/_gofilemode/main.go6
-rw-r--r--cmd/_lnsmote/main.go6
-rw-r--r--cmd/_lnsmote/phoneme.dsv.license3
-rw-r--r--cmd/_random-forest/iris.dsv.license3
-rw-r--r--cmd/_random-forest/main.go6
-rw-r--r--cmd/_random-forest/phoneme.dsv.license3
-rw-r--r--cmd/_smote/main.go6
-rw-r--r--cmd/_smote/phoneme.dsv.license3
-rw-r--r--cmd/ansua/README.md6
-rw-r--r--cmd/bcrypt/main.go4
-rw-r--r--cmd/emaildecode/main.go6
-rw-r--r--cmd/epoch/main.go6
-rw-r--r--cmd/gofmtcomment/main.go6
-rw-r--r--cmd/httpdfs/main.go6
-rw-r--r--cmd/ini/main.go6
-rw-r--r--cmd/sendemail/body.html.license3
-rw-r--r--cmd/sendemail/body.txt.license3
-rw-r--r--cmd/sendemail/main.go4
-rw-r--r--cmd/smtpcli/client.go6
-rw-r--r--cmd/smtpcli/main.go6
-rw-r--r--cmd/smtpcli/testdata/email_full.emf.license3
-rw-r--r--cmd/smtpcli/testdata/email_in.emf.license3
-rw-r--r--cmd/smtpcli/testdata/email_out.emf.license3
-rw-r--r--cmd/smtpcli/testdata/group_in.emf.license3
-rw-r--r--cmd/totp/main.go4
-rw-r--r--cmd/xtrk/main.go6
-rw-r--r--internal/bytes/bytes.go6
-rw-r--r--lib/totp/totp_example_test.go6
-rw-r--r--lib/totp/totp_test.go2
-rw-r--r--lib/websocket/AUTOBAHN.adoc4
-rw-r--r--lib/websocket/AUTOBAHN.html6
-rw-r--r--lib/websocket/BENCHMARK.html6
-rw-r--r--lib/websocket/BENCHMARK.md6
-rw-r--r--lib/websocket/clientmanager_test.go6
-rw-r--r--lib/websocket/closecode.go6
-rw-r--r--lib/websocket/contextkey.go6
-rw-r--r--lib/websocket/doc.go6
-rw-r--r--lib/websocket/examples/README.adoc4
-rw-r--r--lib/websocket/examples/README.html6
-rw-r--r--lib/websocket/examples/account.go6
-rw-r--r--lib/websocket/examples/cmd/client/main.go6
-rw-r--r--lib/websocket/examples/cmd/server/main.go6
-rw-r--r--lib/websocket/examples/examples.go6
-rw-r--r--lib/websocket/frames.go6
-rw-r--r--lib/websocket/funcs_test.go6
-rw-r--r--lib/websocket/handler.go6
-rw-r--r--lib/websocket/handshake_test.go6
-rw-r--r--lib/websocket/internal/autobahn/Makefile4
-rw-r--r--lib/websocket/internal/autobahn/autobahn.go4
-rw-r--r--lib/websocket/internal/autobahn/client/fuzzingserver.json.license3
-rw-r--r--lib/websocket/internal/autobahn/client/main.go6
-rw-r--r--lib/websocket/internal/autobahn/server/fuzzingclient.json.license3
-rw-r--r--lib/websocket/internal/autobahn/server/main.go6
-rw-r--r--lib/websocket/opcode.go6
-rw-r--r--lib/websocket/request_test.go6
-rw-r--r--lib/websocket/response_test.go6
-rw-r--r--lib/websocket/rootroute.go6
-rw-r--r--lib/websocket/rootroute_test.go6
-rw-r--r--lib/websocket/route.go6
-rw-r--r--lib/websocket/server_bench_test.go4
-rw-r--r--lib/websocket/server_options.go6
-rw-r--r--lib/websocket/server_test.go6
-rw-r--r--lib/websocket/targetparam.go6
-rw-r--r--lib/xmlrpc/client.go6
-rw-r--r--lib/xmlrpc/response.go6
-rw-r--r--lib/xmlrpc/response_test.go6
-rw-r--r--lib/xmlrpc/testdata/marshal_test.txt4
-rw-r--r--lib/xmlrpc/testdata/unmarshal_test.txt4
-rw-r--r--lib/xmlrpc/value_example_test.go6
-rw-r--r--lib/xmlrpc/xml.go6
-rw-r--r--lib/xmlrpc/xmlrpc.go6
-rw-r--r--pakakeh.go1
142 files changed, 457 insertions, 317 deletions
diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index d8dbad17..fdfef555 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
name: Go1.23.4
on: [push]
jobs:
diff --git a/.gitignore b/.gitignore
index 03d6f870..8e6a1344 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
**/testdata/bench
**/testdata/pprof
*.bak
diff --git a/AUTHORS b/AUTHORS
index 7779d640..a3c5278d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
Shulhan <ms@kilabit.info>
Wu Tingfeng <wutingfeng@outlook.com>
Youfu Zhang <zhangyoufu@gmail.com>
diff --git a/LICENSE b/LICENSE
index 2651e203..10583ea7 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018 M. Shulhan <ms@kilabit.info>
+Copyright (c) 2018 M. Shulhan <ms@kilabit.info>.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
diff --git a/Makefile b/Makefile
index 6b032399..ea24513e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
-## SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
-##
-## SPDX-License-Identifier: BSD-3-Clause
+# SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+#
+# SPDX-License-Identifier: BSD-3-Clause
COVER_OUT:=cover.out
COVER_HTML:=cover.html
diff --git a/README.md b/README.md
index fee622e7..8b10d659 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
+-->
+
# `import "git.sr.ht/~shulhan/pakakeh.go"`
[Go documentation](https://pkg.go.dev/git.sr.ht/~shulhan/pakakeh.go).
diff --git a/REUSE.toml b/REUSE.toml
new file mode 100644
index 00000000..7c59544e
--- /dev/null
+++ b/REUSE.toml
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# SPDX-FileCopyrightText: 2026 M. Shulhan <ms@kilabit.info>
+
+version = 1
+
+[[annotations]]
+path = ["lib/text/diff/testdata/**"]
+SPDX-FileCopyrightText = "2018 Shulhan <ms@kilabit.info>"
+SPDX-License-Identifier = "BSD-3-Clause"
diff --git a/api/slack/message.go b/api/slack/message.go
index 1483f20d..5f9437df 100644
--- a/api/slack/message.go
+++ b/api/slack/message.go
@@ -1,6 +1,6 @@
-// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package slack
diff --git a/api/slack/slack.go b/api/slack/slack.go
index 6e3092e2..a7e4c4c2 100644
--- a/api/slack/slack.go
+++ b/api/slack/slack.go
@@ -1,6 +1,6 @@
-// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package slack provide a simple API for sending message to Slack using only
// standard packages.
diff --git a/api/slack/slack_example_test.go b/api/slack/slack_example_test.go
index 4f2d4e9d..702ffdeb 100644
--- a/api/slack/slack_example_test.go
+++ b/api/slack/slack_example_test.go
@@ -1,6 +1,6 @@
-// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package slack
diff --git a/api/slack/webhook_client.go b/api/slack/webhook_client.go
index 27b778a7..a1b632be 100644
--- a/api/slack/webhook_client.go
+++ b/api/slack/webhook_client.go
@@ -1,6 +1,6 @@
-// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package slack
diff --git a/api/telegram/bot/animation.go b/api/telegram/bot/animation.go
index c692f6f4..ffcaf2b8 100644
--- a/api/telegram/bot/animation.go
+++ b/api/telegram/bot/animation.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/audio.go b/api/telegram/bot/audio.go
index f5117cb9..4e5485b8 100644
--- a/api/telegram/bot/audio.go
+++ b/api/telegram/bot/audio.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/bot.go b/api/telegram/bot/bot.go
index 6c0b8bc4..36e34514 100644
--- a/api/telegram/bot/bot.go
+++ b/api/telegram/bot/bot.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/bot_test.go b/api/telegram/bot/bot_test.go
index f1fbbf13..06d1a860 100644
--- a/api/telegram/bot/bot_test.go
+++ b/api/telegram/bot/bot_test.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/callback_game.go b/api/telegram/bot/callback_game.go
index 3ff8d4b7..a87c668e 100644
--- a/api/telegram/bot/callback_game.go
+++ b/api/telegram/bot/callback_game.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/callback_query.go b/api/telegram/bot/callback_query.go
index b12f3c04..43b47ea2 100644
--- a/api/telegram/bot/callback_query.go
+++ b/api/telegram/bot/callback_query.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/chat.go b/api/telegram/bot/chat.go
index ef4e290a..a2652e2c 100644
--- a/api/telegram/bot/chat.go
+++ b/api/telegram/bot/chat.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/chat_permissions.go b/api/telegram/bot/chat_permissions.go
index e42fd6cc..3bce60ca 100644
--- a/api/telegram/bot/chat_permissions.go
+++ b/api/telegram/bot/chat_permissions.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/chat_photo.go b/api/telegram/bot/chat_photo.go
index 9f67f402..5cc74a80 100644
--- a/api/telegram/bot/chat_photo.go
+++ b/api/telegram/bot/chat_photo.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/chosen_inline_result.go b/api/telegram/bot/chosen_inline_result.go
index 9914ca27..416d7812 100644
--- a/api/telegram/bot/chosen_inline_result.go
+++ b/api/telegram/bot/chosen_inline_result.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/command.go b/api/telegram/bot/command.go
index a4669519..652eea7b 100644
--- a/api/telegram/bot/command.go
+++ b/api/telegram/bot/command.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/command_test.go b/api/telegram/bot/command_test.go
index b2fc564d..edce3234 100644
--- a/api/telegram/bot/command_test.go
+++ b/api/telegram/bot/command_test.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/commands.go b/api/telegram/bot/commands.go
index d9bc0598..b0e45542 100644
--- a/api/telegram/bot/commands.go
+++ b/api/telegram/bot/commands.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/contact.go b/api/telegram/bot/contact.go
index 39edb93e..586de2c5 100644
--- a/api/telegram/bot/contact.go
+++ b/api/telegram/bot/contact.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/dice.go b/api/telegram/bot/dice.go
index 0ffa774c..ac536b8d 100644
--- a/api/telegram/bot/dice.go
+++ b/api/telegram/bot/dice.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/doc.go b/api/telegram/bot/doc.go
index d8090064..5882d761 100644
--- a/api/telegram/bot/doc.go
+++ b/api/telegram/bot/doc.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package bot implement the Telegram Bot API
// https://core.telegram.org/bots/api.
diff --git a/api/telegram/bot/document.go b/api/telegram/bot/document.go
index 25aa0bc6..d2cc067d 100644
--- a/api/telegram/bot/document.go
+++ b/api/telegram/bot/document.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/encrypted_credential.go b/api/telegram/bot/encrypted_credential.go
index 3cc34435..f259a025 100644
--- a/api/telegram/bot/encrypted_credential.go
+++ b/api/telegram/bot/encrypted_credential.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/encrypted_passport_element.go b/api/telegram/bot/encrypted_passport_element.go
index 2747b29e..20a1d725 100644
--- a/api/telegram/bot/encrypted_passport_element.go
+++ b/api/telegram/bot/encrypted_passport_element.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/game.go b/api/telegram/bot/game.go
index 3207e846..6b2ecf17 100644
--- a/api/telegram/bot/game.go
+++ b/api/telegram/bot/game.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/inline_keyboard_button.go b/api/telegram/bot/inline_keyboard_button.go
index 3b6fcfca..7f5027a4 100644
--- a/api/telegram/bot/inline_keyboard_button.go
+++ b/api/telegram/bot/inline_keyboard_button.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/inline_keyboard_markup.go b/api/telegram/bot/inline_keyboard_markup.go
index 66196d34..84362a8a 100644
--- a/api/telegram/bot/inline_keyboard_markup.go
+++ b/api/telegram/bot/inline_keyboard_markup.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/inline_query.go b/api/telegram/bot/inline_query.go
index 5ba9ad24..7c24b9df 100644
--- a/api/telegram/bot/inline_query.go
+++ b/api/telegram/bot/inline_query.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/invoice.go b/api/telegram/bot/invoice.go
index e9b9411b..e28590f3 100644
--- a/api/telegram/bot/invoice.go
+++ b/api/telegram/bot/invoice.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/location.go b/api/telegram/bot/location.go
index 34c76d86..514f7940 100644
--- a/api/telegram/bot/location.go
+++ b/api/telegram/bot/location.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/login_url.go b/api/telegram/bot/login_url.go
index 0f780d3a..45564af3 100644
--- a/api/telegram/bot/login_url.go
+++ b/api/telegram/bot/login_url.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/mask_position.go b/api/telegram/bot/mask_position.go
index 7b592cfb..f6089bf5 100644
--- a/api/telegram/bot/mask_position.go
+++ b/api/telegram/bot/mask_position.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/message.go b/api/telegram/bot/message.go
index 4bb2a2f9..4fc213fa 100644
--- a/api/telegram/bot/message.go
+++ b/api/telegram/bot/message.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/message_entity.go b/api/telegram/bot/message_entity.go
index fe66357f..a3f02a2f 100644
--- a/api/telegram/bot/message_entity.go
+++ b/api/telegram/bot/message_entity.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/message_forward.go b/api/telegram/bot/message_forward.go
index e6f793ce..dd3a3c2d 100644
--- a/api/telegram/bot/message_forward.go
+++ b/api/telegram/bot/message_forward.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/message_request.go b/api/telegram/bot/message_request.go
index c2183101..227abb3d 100644
--- a/api/telegram/bot/message_request.go
+++ b/api/telegram/bot/message_request.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/message_test.go b/api/telegram/bot/message_test.go
index 959393cd..1f1a3b7b 100644
--- a/api/telegram/bot/message_test.go
+++ b/api/telegram/bot/message_test.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/options.go b/api/telegram/bot/options.go
index 995f5228..2668c216 100644
--- a/api/telegram/bot/options.go
+++ b/api/telegram/bot/options.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/order_info.go b/api/telegram/bot/order_info.go
index a442b667..bfddbcca 100644
--- a/api/telegram/bot/order_info.go
+++ b/api/telegram/bot/order_info.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/passport_data.go b/api/telegram/bot/passport_data.go
index 3c3d077b..280b6a68 100644
--- a/api/telegram/bot/passport_data.go
+++ b/api/telegram/bot/passport_data.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/passport_file.go b/api/telegram/bot/passport_file.go
index e7a37420..fa3785ec 100644
--- a/api/telegram/bot/passport_file.go
+++ b/api/telegram/bot/passport_file.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/photo_size.go b/api/telegram/bot/photo_size.go
index c9f5bba4..bcebc55c 100644
--- a/api/telegram/bot/photo_size.go
+++ b/api/telegram/bot/photo_size.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/poll.go b/api/telegram/bot/poll.go
index 9b0adc54..52b991f0 100644
--- a/api/telegram/bot/poll.go
+++ b/api/telegram/bot/poll.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/poll_answer.go b/api/telegram/bot/poll_answer.go
index fce2027c..9d6c11de 100644
--- a/api/telegram/bot/poll_answer.go
+++ b/api/telegram/bot/poll_answer.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/poll_option.go b/api/telegram/bot/poll_option.go
index dc68caaf..509d8d82 100644
--- a/api/telegram/bot/poll_option.go
+++ b/api/telegram/bot/poll_option.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/pre_checkout_query.go b/api/telegram/bot/pre_checkout_query.go
index f2803598..7da288cb 100644
--- a/api/telegram/bot/pre_checkout_query.go
+++ b/api/telegram/bot/pre_checkout_query.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/response.go b/api/telegram/bot/response.go
index 1415a091..e68803d6 100644
--- a/api/telegram/bot/response.go
+++ b/api/telegram/bot/response.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/response_parameters.go b/api/telegram/bot/response_parameters.go
index 872809bc..7cd271f9 100644
--- a/api/telegram/bot/response_parameters.go
+++ b/api/telegram/bot/response_parameters.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/shipping_address.go b/api/telegram/bot/shipping_address.go
index c11b337f..9a9f9b54 100644
--- a/api/telegram/bot/shipping_address.go
+++ b/api/telegram/bot/shipping_address.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/shipping_query.go b/api/telegram/bot/shipping_query.go
index 117415fe..b442da5e 100644
--- a/api/telegram/bot/shipping_query.go
+++ b/api/telegram/bot/shipping_query.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/sticker.go b/api/telegram/bot/sticker.go
index 2076204c..e4799aa3 100644
--- a/api/telegram/bot/sticker.go
+++ b/api/telegram/bot/sticker.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/successful_payment.go b/api/telegram/bot/successful_payment.go
index 5a200894..c572b2b8 100644
--- a/api/telegram/bot/successful_payment.go
+++ b/api/telegram/bot/successful_payment.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/update.go b/api/telegram/bot/update.go
index 9321c9e3..f23f1e64 100644
--- a/api/telegram/bot/update.go
+++ b/api/telegram/bot/update.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/user.go b/api/telegram/bot/user.go
index 37a760f4..01742e1e 100644
--- a/api/telegram/bot/user.go
+++ b/api/telegram/bot/user.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/venue.go b/api/telegram/bot/venue.go
index 71e57877..67660f90 100644
--- a/api/telegram/bot/venue.go
+++ b/api/telegram/bot/venue.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/video.go b/api/telegram/bot/video.go
index d0b41318..58feaaf6 100644
--- a/api/telegram/bot/video.go
+++ b/api/telegram/bot/video.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/video_note.go b/api/telegram/bot/video_note.go
index 03871698..32ce0fb1 100644
--- a/api/telegram/bot/video_note.go
+++ b/api/telegram/bot/video_note.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/voice.go b/api/telegram/bot/voice.go
index 5e642deb..10534015 100644
--- a/api/telegram/bot/voice.go
+++ b/api/telegram/bot/voice.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/webhook.go b/api/telegram/bot/webhook.go
index 5a7387c2..dd75896f 100644
--- a/api/telegram/bot/webhook.go
+++ b/api/telegram/bot/webhook.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/api/telegram/bot/webhook_info.go b/api/telegram/bot/webhook_info.go
index ecb45d5d..d2745599 100644
--- a/api/telegram/bot/webhook_info.go
+++ b/api/telegram/bot/webhook_info.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package bot
diff --git a/cmd/_cart/iris.dsv.license b/cmd/_cart/iris.dsv.license
new file mode 100644
index 00000000..aef1f2fa
--- /dev/null
+++ b/cmd/_cart/iris.dsv.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/_cart/main.go b/cmd/_cart/main.go
index fa9bba8d..83dd6f71 100644
--- a/cmd/_cart/main.go
+++ b/cmd/_cart/main.go
@@ -1,6 +1,6 @@
-// Copyright 2016 Mhd Sulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package main
diff --git a/cmd/_cascaded-random-forest/main.go b/cmd/_cascaded-random-forest/main.go
index be687c22..6d39d2d6 100644
--- a/cmd/_cascaded-random-forest/main.go
+++ b/cmd/_cascaded-random-forest/main.go
@@ -1,6 +1,6 @@
-// Copyright 2016 Mhd Sulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package main
diff --git a/cmd/_cascaded-random-forest/phoneme.dsv.license b/cmd/_cascaded-random-forest/phoneme.dsv.license
new file mode 100644
index 00000000..aef1f2fa
--- /dev/null
+++ b/cmd/_cascaded-random-forest/phoneme.dsv.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/_gofilemode/main.go b/cmd/_gofilemode/main.go
index 9cceb9fc..2f6b352d 100644
--- a/cmd/_gofilemode/main.go
+++ b/cmd/_gofilemode/main.go
@@ -1,6 +1,6 @@
-// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Program gofilemode inspect the Go file mode [1].
// Usage,
diff --git a/cmd/_lnsmote/main.go b/cmd/_lnsmote/main.go
index ecd14a31..d21dd430 100644
--- a/cmd/_lnsmote/main.go
+++ b/cmd/_lnsmote/main.go
@@ -1,6 +1,6 @@
-// Copyright 2016 Mhd Sulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package main
diff --git a/cmd/_lnsmote/phoneme.dsv.license b/cmd/_lnsmote/phoneme.dsv.license
new file mode 100644
index 00000000..aef1f2fa
--- /dev/null
+++ b/cmd/_lnsmote/phoneme.dsv.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/_random-forest/iris.dsv.license b/cmd/_random-forest/iris.dsv.license
new file mode 100644
index 00000000..aef1f2fa
--- /dev/null
+++ b/cmd/_random-forest/iris.dsv.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/_random-forest/main.go b/cmd/_random-forest/main.go
index 11641d18..25b2ec9d 100644
--- a/cmd/_random-forest/main.go
+++ b/cmd/_random-forest/main.go
@@ -1,6 +1,6 @@
-// Copyright 2016 Mhd Sulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package main
diff --git a/cmd/_random-forest/phoneme.dsv.license b/cmd/_random-forest/phoneme.dsv.license
new file mode 100644
index 00000000..aef1f2fa
--- /dev/null
+++ b/cmd/_random-forest/phoneme.dsv.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/_smote/main.go b/cmd/_smote/main.go
index 29c310ce..3cea6da9 100644
--- a/cmd/_smote/main.go
+++ b/cmd/_smote/main.go
@@ -1,6 +1,6 @@
-// Copyright 2016 Mhd Sulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package main
diff --git a/cmd/_smote/phoneme.dsv.license b/cmd/_smote/phoneme.dsv.license
new file mode 100644
index 00000000..aef1f2fa
--- /dev/null
+++ b/cmd/_smote/phoneme.dsv.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2016 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/ansua/README.md b/cmd/ansua/README.md
index f44d5780..1ff616f1 100644
--- a/cmd/ansua/README.md
+++ b/cmd/ansua/README.md
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2024 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
+-->
+
# ansua
ansua is a command line interface to help tracking time.
diff --git a/cmd/bcrypt/main.go b/cmd/bcrypt/main.go
index 73d2bd65..73b11136 100644
--- a/cmd/bcrypt/main.go
+++ b/cmd/bcrypt/main.go
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
// Command bcrypt implements command-line interface to generate and compare
// bcrypt hash.
package main
diff --git a/cmd/emaildecode/main.go b/cmd/emaildecode/main.go
index 4bf69511..17085213 100644
--- a/cmd/emaildecode/main.go
+++ b/cmd/emaildecode/main.go
@@ -1,6 +1,6 @@
-// Copyright 2023, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Program emaildecode convert the email body from quoted-printable to plain
// text.
diff --git a/cmd/epoch/main.go b/cmd/epoch/main.go
index 04198908..dee39785 100644
--- a/cmd/epoch/main.go
+++ b/cmd/epoch/main.go
@@ -1,6 +1,6 @@
-// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Program epoch print the current date and time (Unix seconds, milliseconds,
// nanoseconds, local time, and UTC time) or the date and time based on the
diff --git a/cmd/gofmtcomment/main.go b/cmd/gofmtcomment/main.go
index 7f914ffc..430413e4 100644
--- a/cmd/gofmtcomment/main.go
+++ b/cmd/gofmtcomment/main.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Command gofmtcomment is a program to convert "/**/" comment into "//".
package main
diff --git a/cmd/httpdfs/main.go b/cmd/httpdfs/main.go
index 92b32650..c2f377ac 100644
--- a/cmd/httpdfs/main.go
+++ b/cmd/httpdfs/main.go
@@ -1,6 +1,6 @@
-// Copyright 2023, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Program httpdfs implement [libhttp.Server] with [memfs.MemFS].
package main
diff --git a/cmd/ini/main.go b/cmd/ini/main.go
index dff05c35..2ef02a93 100644
--- a/cmd/ini/main.go
+++ b/cmd/ini/main.go
@@ -1,6 +1,6 @@
-// Copyright 2022, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2022 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Command ini provide a command line interface to get and set values in the
// [INI file format].
diff --git a/cmd/sendemail/body.html.license b/cmd/sendemail/body.html.license
new file mode 100644
index 00000000..3911dd1e
--- /dev/null
+++ b/cmd/sendemail/body.html.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2022 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/sendemail/body.txt.license b/cmd/sendemail/body.txt.license
new file mode 100644
index 00000000..3911dd1e
--- /dev/null
+++ b/cmd/sendemail/body.txt.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2022 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/sendemail/main.go b/cmd/sendemail/main.go
index 97460e2b..ab8f7b16 100644
--- a/cmd/sendemail/main.go
+++ b/cmd/sendemail/main.go
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2022 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
// Program sendemail is command line interface that use lib/email and lib/smtp
// to send email.
package main
diff --git a/cmd/smtpcli/client.go b/cmd/smtpcli/client.go
index 70c7b392..7ab1d75c 100644
--- a/cmd/smtpcli/client.go
+++ b/cmd/smtpcli/client.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package main
diff --git a/cmd/smtpcli/main.go b/cmd/smtpcli/main.go
index 7fc5107c..3c319c05 100644
--- a/cmd/smtpcli/main.go
+++ b/cmd/smtpcli/main.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Command smtpcli provide a command line interface to SMTP client protocol.
// This is an example of implementation Client from
diff --git a/cmd/smtpcli/testdata/email_full.emf.license b/cmd/smtpcli/testdata/email_full.emf.license
new file mode 100644
index 00000000..4c22e3a9
--- /dev/null
+++ b/cmd/smtpcli/testdata/email_full.emf.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/smtpcli/testdata/email_in.emf.license b/cmd/smtpcli/testdata/email_in.emf.license
new file mode 100644
index 00000000..4c22e3a9
--- /dev/null
+++ b/cmd/smtpcli/testdata/email_in.emf.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/smtpcli/testdata/email_out.emf.license b/cmd/smtpcli/testdata/email_out.emf.license
new file mode 100644
index 00000000..4c22e3a9
--- /dev/null
+++ b/cmd/smtpcli/testdata/email_out.emf.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/smtpcli/testdata/group_in.emf.license b/cmd/smtpcli/testdata/group_in.emf.license
new file mode 100644
index 00000000..4c22e3a9
--- /dev/null
+++ b/cmd/smtpcli/testdata/group_in.emf.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/cmd/totp/main.go b/cmd/totp/main.go
index bdd59ee2..764e1311 100644
--- a/cmd/totp/main.go
+++ b/cmd/totp/main.go
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
// Program totp generate Time-based One-time Password from secret key.
// This is just an example of implementation of [lib/totp]
// See [gotp] for a complete implementation that support encryption.
diff --git a/cmd/xtrk/main.go b/cmd/xtrk/main.go
index 994ba4ca..9d415ace 100644
--- a/cmd/xtrk/main.go
+++ b/cmd/xtrk/main.go
@@ -1,6 +1,6 @@
-// Copyright 2022, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2022 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Command xtrk is command line interface to uncompress and/or unarchive a
// file.
diff --git a/internal/bytes/bytes.go b/internal/bytes/bytes.go
index cdd64532..b780be5c 100644
--- a/internal/bytes/bytes.go
+++ b/internal/bytes/bytes.go
@@ -1,6 +1,6 @@
-// Copyright 2023, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package bytes is the internal, shared functions for manipulating bytes,
// created to prevent import cycle.
diff --git a/lib/totp/totp_example_test.go b/lib/totp/totp_example_test.go
index 6c92267a..f02fec01 100644
--- a/lib/totp/totp_example_test.go
+++ b/lib/totp/totp_example_test.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package totp_test
diff --git a/lib/totp/totp_test.go b/lib/totp/totp_test.go
index 49f29c65..62f54dad 100644
--- a/lib/totp/totp_test.go
+++ b/lib/totp/totp_test.go
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
//
// SPDX-License-Identifier: BSD-3-Clause
diff --git a/lib/websocket/AUTOBAHN.adoc b/lib/websocket/AUTOBAHN.adoc
index e9039b90..b45c5bea 100644
--- a/lib/websocket/AUTOBAHN.adoc
+++ b/lib/websocket/AUTOBAHN.adoc
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
= Autobahn WebSocket Testsuite Status Report
This document track the status report from autobahn testsuite [1].
diff --git a/lib/websocket/AUTOBAHN.html b/lib/websocket/AUTOBAHN.html
index c46d67ae..f90e47aa 100644
--- a/lib/websocket/AUTOBAHN.html
+++ b/lib/websocket/AUTOBAHN.html
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
+-->
+
<!DOCTYPE html>
<html>
<head>
diff --git a/lib/websocket/BENCHMARK.html b/lib/websocket/BENCHMARK.html
index 93ea2c24..960c1a74 100644
--- a/lib/websocket/BENCHMARK.html
+++ b/lib/websocket/BENCHMARK.html
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
+-->
+
<!DOCTYPE html>
<html>
<head>
diff --git a/lib/websocket/BENCHMARK.md b/lib/websocket/BENCHMARK.md
index d9aabaa1..0b6c4ee2 100644
--- a/lib/websocket/BENCHMARK.md
+++ b/lib/websocket/BENCHMARK.md
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
+-->
+
This note document a benchmark between gobwas vs our websocket library.
# github.com/gobwas/ws@v0.1.0
diff --git a/lib/websocket/clientmanager_test.go b/lib/websocket/clientmanager_test.go
index cb815fe1..41a12f3b 100644
--- a/lib/websocket/clientmanager_test.go
+++ b/lib/websocket/clientmanager_test.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/closecode.go b/lib/websocket/closecode.go
index 15236c18..8ba7dc4e 100644
--- a/lib/websocket/closecode.go
+++ b/lib/websocket/closecode.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/contextkey.go b/lib/websocket/contextkey.go
index 93e020d5..7f338366 100644
--- a/lib/websocket/contextkey.go
+++ b/lib/websocket/contextkey.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/doc.go b/lib/websocket/doc.go
index dbe3792a..932fc2ad 100644
--- a/lib/websocket/doc.go
+++ b/lib/websocket/doc.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package websocket provide a library for WebSocket server or client based on
// [RFC6455].
diff --git a/lib/websocket/examples/README.adoc b/lib/websocket/examples/README.adoc
index da90ea8b..e50f2931 100644
--- a/lib/websocket/examples/README.adoc
+++ b/lib/websocket/examples/README.adoc
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
== WebSocket examples
This package contains an example of chat server and client written using
diff --git a/lib/websocket/examples/README.html b/lib/websocket/examples/README.html
index 71aec923..88dcc3ba 100644
--- a/lib/websocket/examples/README.html
+++ b/lib/websocket/examples/README.html
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
+-->
+
<!DOCTYPE html>
<html>
<head>
diff --git a/lib/websocket/examples/account.go b/lib/websocket/examples/account.go
index 17b50668..372071e1 100644
--- a/lib/websocket/examples/account.go
+++ b/lib/websocket/examples/account.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package examples
diff --git a/lib/websocket/examples/cmd/client/main.go b/lib/websocket/examples/cmd/client/main.go
index 0ecd9a87..326a5c82 100644
--- a/lib/websocket/examples/cmd/client/main.go
+++ b/lib/websocket/examples/cmd/client/main.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Program client provide an example of chat client that connect to WebSocket
// server.
diff --git a/lib/websocket/examples/cmd/server/main.go b/lib/websocket/examples/cmd/server/main.go
index 96d09a9a..6ccd5fc6 100644
--- a/lib/websocket/examples/cmd/server/main.go
+++ b/lib/websocket/examples/cmd/server/main.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Program server provide an example of WebSocket server as group chat.
// The client that connect to the server must be authenticated using key.
diff --git a/lib/websocket/examples/examples.go b/lib/websocket/examples/examples.go
index 34c926e7..458b1dc1 100644
--- a/lib/websocket/examples/examples.go
+++ b/lib/websocket/examples/examples.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package examples provide an example on how to use WebSocket server and
// client.
diff --git a/lib/websocket/frames.go b/lib/websocket/frames.go
index 018c0b89..1c924920 100644
--- a/lib/websocket/frames.go
+++ b/lib/websocket/frames.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/funcs_test.go b/lib/websocket/funcs_test.go
index a8c9acf3..ff2d8ecf 100644
--- a/lib/websocket/funcs_test.go
+++ b/lib/websocket/funcs_test.go
@@ -1,6 +1,6 @@
-// Copyright 2023, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/handler.go b/lib/websocket/handler.go
index 50cd74cf..d3778260 100644
--- a/lib/websocket/handler.go
+++ b/lib/websocket/handler.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/handshake_test.go b/lib/websocket/handshake_test.go
index 9ef51410..55cf35ab 100644
--- a/lib/websocket/handshake_test.go
+++ b/lib/websocket/handshake_test.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/internal/autobahn/Makefile b/lib/websocket/internal/autobahn/Makefile
index 24883c94..d51e9ddd 100644
--- a/lib/websocket/internal/autobahn/Makefile
+++ b/lib/websocket/internal/autobahn/Makefile
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
##
## Run autobahn client to test our server.
##
diff --git a/lib/websocket/internal/autobahn/autobahn.go b/lib/websocket/internal/autobahn/autobahn.go
index 01c89481..ccdc392d 100644
--- a/lib/websocket/internal/autobahn/autobahn.go
+++ b/lib/websocket/internal/autobahn/autobahn.go
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2023 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
// Package autobahn provides an helper to parse and print reports from
// result of Autobahn test suite.
package autobahn
diff --git a/lib/websocket/internal/autobahn/client/fuzzingserver.json.license b/lib/websocket/internal/autobahn/client/fuzzingserver.json.license
new file mode 100644
index 00000000..4c22e3a9
--- /dev/null
+++ b/lib/websocket/internal/autobahn/client/fuzzingserver.json.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/lib/websocket/internal/autobahn/client/main.go b/lib/websocket/internal/autobahn/client/main.go
index 0966c2ad..12b4302c 100644
--- a/lib/websocket/internal/autobahn/client/main.go
+++ b/lib/websocket/internal/autobahn/client/main.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package client provide a program to test WebSocket client implementation
// with autobahn testsuite.
diff --git a/lib/websocket/internal/autobahn/server/fuzzingclient.json.license b/lib/websocket/internal/autobahn/server/fuzzingclient.json.license
new file mode 100644
index 00000000..4c22e3a9
--- /dev/null
+++ b/lib/websocket/internal/autobahn/server/fuzzingclient.json.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+
+SPDX-License-Identifier: BSD-3-Clause
diff --git a/lib/websocket/internal/autobahn/server/main.go b/lib/websocket/internal/autobahn/server/main.go
index 78c45624..1b00b28c 100644
--- a/lib/websocket/internal/autobahn/server/main.go
+++ b/lib/websocket/internal/autobahn/server/main.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package server provide a program for testing WebSocket server implement
// with autobahn testsuite.
diff --git a/lib/websocket/opcode.go b/lib/websocket/opcode.go
index 0001b017..5fe190cd 100644
--- a/lib/websocket/opcode.go
+++ b/lib/websocket/opcode.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/request_test.go b/lib/websocket/request_test.go
index d8dd7372..bdebd720 100644
--- a/lib/websocket/request_test.go
+++ b/lib/websocket/request_test.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/response_test.go b/lib/websocket/response_test.go
index 642cfe79..bfcf275f 100644
--- a/lib/websocket/response_test.go
+++ b/lib/websocket/response_test.go
@@ -1,6 +1,6 @@
-// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2019 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/rootroute.go b/lib/websocket/rootroute.go
index 0d2f6027..12f5a67e 100644
--- a/lib/websocket/rootroute.go
+++ b/lib/websocket/rootroute.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/rootroute_test.go b/lib/websocket/rootroute_test.go
index 29c861ab..74bf0ba7 100644
--- a/lib/websocket/rootroute_test.go
+++ b/lib/websocket/rootroute_test.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/route.go b/lib/websocket/route.go
index 51d16c45..90960482 100644
--- a/lib/websocket/route.go
+++ b/lib/websocket/route.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/server_bench_test.go b/lib/websocket/server_bench_test.go
index d63b7c57..4e0d0ef2 100644
--- a/lib/websocket/server_bench_test.go
+++ b/lib/websocket/server_bench_test.go
@@ -1,3 +1,7 @@
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
+
// This benchmark is taken from github.com/gobwas/ws [1][2].
//
// [1] https://github.com/gobwas/ws/blob/master/server_test.go
diff --git a/lib/websocket/server_options.go b/lib/websocket/server_options.go
index 0c169188..e736d19a 100644
--- a/lib/websocket/server_options.go
+++ b/lib/websocket/server_options.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/server_test.go b/lib/websocket/server_test.go
index fe8d640a..cbce1f44 100644
--- a/lib/websocket/server_test.go
+++ b/lib/websocket/server_test.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/websocket/targetparam.go b/lib/websocket/targetparam.go
index bbebe230..b8b5ab32 100644
--- a/lib/websocket/targetparam.go
+++ b/lib/websocket/targetparam.go
@@ -1,6 +1,6 @@
-// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package websocket
diff --git a/lib/xmlrpc/client.go b/lib/xmlrpc/client.go
index 3bc537a5..dd8114d3 100644
--- a/lib/xmlrpc/client.go
+++ b/lib/xmlrpc/client.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package xmlrpc
diff --git a/lib/xmlrpc/response.go b/lib/xmlrpc/response.go
index 934bdd46..3fcce8f7 100644
--- a/lib/xmlrpc/response.go
+++ b/lib/xmlrpc/response.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package xmlrpc
diff --git a/lib/xmlrpc/response_test.go b/lib/xmlrpc/response_test.go
index d02814b2..7880bfae 100644
--- a/lib/xmlrpc/response_test.go
+++ b/lib/xmlrpc/response_test.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package xmlrpc
diff --git a/lib/xmlrpc/testdata/marshal_test.txt b/lib/xmlrpc/testdata/marshal_test.txt
index 9ad3d896..bef67c20 100644
--- a/lib/xmlrpc/testdata/marshal_test.txt
+++ b/lib/xmlrpc/testdata/marshal_test.txt
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
Test marshaling.
<<< method.name
diff --git a/lib/xmlrpc/testdata/unmarshal_test.txt b/lib/xmlrpc/testdata/unmarshal_test.txt
index 0b4535d2..03c3f5ca 100644
--- a/lib/xmlrpc/testdata/unmarshal_test.txt
+++ b/lib/xmlrpc/testdata/unmarshal_test.txt
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
Test unmarshaling.
>>> Multiple param
diff --git a/lib/xmlrpc/value_example_test.go b/lib/xmlrpc/value_example_test.go
index 5933e5b8..95bee82f 100644
--- a/lib/xmlrpc/value_example_test.go
+++ b/lib/xmlrpc/value_example_test.go
@@ -1,6 +1,6 @@
-// Copyright 2022, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package xmlrpc
diff --git a/lib/xmlrpc/xml.go b/lib/xmlrpc/xml.go
index ca77abe7..3df1fcaf 100644
--- a/lib/xmlrpc/xml.go
+++ b/lib/xmlrpc/xml.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
package xmlrpc
diff --git a/lib/xmlrpc/xmlrpc.go b/lib/xmlrpc/xmlrpc.go
index e35ce765..19b3458d 100644
--- a/lib/xmlrpc/xmlrpc.go
+++ b/lib/xmlrpc/xmlrpc.go
@@ -1,6 +1,6 @@
-// Copyright 2020, Shulhan <ms@kilabit.info>. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
+//
+// SPDX-License-Identifier: BSD-3-Clause
// Package xmlrpc provide an implementation of XML-RPC specification,
// http://xmlrpc.com/spec.md.
diff --git a/pakakeh.go b/pakakeh.go
index 0b24a4ac..a6cfe587 100644
--- a/pakakeh.go
+++ b/pakakeh.go
@@ -1,4 +1,5 @@
// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
+//
// SPDX-License-Identifier: BSD-3-Clause
// Package pakakeh contains public APIs and libraries for working with Go