diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index a3453511a5c..5746719ec28 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -748,6 +748,7 @@ lib/gitlab/checks/** /doc/api/project_aliases.md @msedlakjakubowski /doc/api/project_badges.md @msedlakjakubowski /doc/api/project_clusters.md @phillipwells +/doc/api/project_container_registry_protection_rules.md @marcel.amirault /doc/api/project_import_export.md @eread /doc/api/project_job_token_scopes.md @marcel.amirault /doc/api/project_level_variables.md @marcel.amirault @@ -830,8 +831,12 @@ lib/gitlab/checks/** /doc/ci/testing/code_quality.md @rdickenson /doc/ci/testing/code_quality_troubleshooting.md @rdickenson @phillipwells /doc/ci/variables/ @marcel.amirault +/doc/ci/yaml/ci_job_log_timestamps.md @ashrafkhamis /doc/ci/yaml/signing_examples.md @marcel.amirault /doc/development/advanced_search.md @gitlab-org/search-team/migration-maintainers +/doc/development/ai_architecture.md @gitlab-org/ai-powered +/doc/development/ai_features/ @gitlab-org/ai-powered +/doc/development/ai_features/embeddings.md @gitlab-org/search-team/migration-maintainers /doc/development/application_limits.md @gitlab-org/distribution /doc/development/audit_event_guide/ @gitlab-org/govern/security-policies-frontend @gitlab-org/govern/threat-insights-frontend-team @gitlab-org/govern/threat-insights-backend-team /doc/development/avoiding_required_stops.md @gitlab-org/distribution @@ -1013,9 +1018,7 @@ lib/gitlab/checks/** /doc/user/project/remote_development/ @ashrafkhamis /doc/user/project/repository/code_explain.md @sselhorn @jglassman1 @fneill /doc/user/project/repository/code_suggestions/ @jglassman1 -/doc/user/project/repository/files/geojson.md @msedlakjakubowski /doc/user/project/repository/files/index.md @ashrafkhamis -/doc/user/project/repository/files/jupyter_notebooks/ @msedlakjakubowski /doc/user/project/repository/monorepos/ @eread /doc/user/project/repository/web_editor.md @ashrafkhamis /doc/user/project/settings/import_export.md @eread diff --git a/.gitlab/ci/release-environments/main.gitlab-ci.yml b/.gitlab/ci/release-environments/main.gitlab-ci.yml index 78927ac2874..10e2f791ecc 100644 --- a/.gitlab/ci/release-environments/main.gitlab-ci.yml +++ b/.gitlab/ci/release-environments/main.gitlab-ci.yml @@ -2,7 +2,7 @@ include: - local: .gitlab/ci/cng/main.gitlab-ci.yml - project: 'gitlab-org/quality/pipeline-common' - ref: '8.18.0' + ref: '8.18.1' file: ci/base.gitlab-ci.yml stages: diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index f488eb0eb68..24c8f75ae96 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -2706,7 +2706,6 @@ RSpec/FeatureCategory: - 'spec/lib/gitlab/email/message/repository_push_spec.rb' - 'spec/lib/gitlab/email/smime/signer_spec.rb' - 'spec/lib/gitlab/emoji_spec.rb' - - 'spec/lib/gitlab/empty_search_results_spec.rb' - 'spec/lib/gitlab/encrypted_configuration_spec.rb' - 'spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb' - 'spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb' diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml index ba650163e2e..b1f8d3e1d22 100644 --- a/.rubocop_todo/rspec/named_subject.yml +++ b/.rubocop_todo/rspec/named_subject.yml @@ -2042,7 +2042,6 @@ RSpec/NamedSubject: - 'spec/lib/gitlab/doctor/secrets_spec.rb' - 'spec/lib/gitlab/email/handler/service_desk_handler_spec.rb' - 'spec/lib/gitlab/email/html_to_markdown_parser_spec.rb' - - 'spec/lib/gitlab/empty_search_results_spec.rb' - 'spec/lib/gitlab/encoding_helper_spec.rb' - 'spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb' - 'spec/lib/gitlab/etag_caching/store_spec.rb' diff --git a/.rubocop_todo/rspec/repeated_example_group_body.yml b/.rubocop_todo/rspec/repeated_example_group_body.yml index 2647dca6c78..d6cd19cf67a 100644 --- a/.rubocop_todo/rspec/repeated_example_group_body.yml +++ b/.rubocop_todo/rspec/repeated_example_group_body.yml @@ -33,7 +33,6 @@ RSpec/RepeatedExampleGroupBody: - 'spec/lib/gitlab/ci/pipeline/seed/build_spec.rb' - 'spec/lib/gitlab/ci/yaml_processor_spec.rb' - 'spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb' - - 'spec/lib/gitlab/empty_search_results_spec.rb' - 'spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb' - 'spec/lib/gitlab/lfs/client_spec.rb' - 'spec/lib/gitlab/sanitizers/exif_spec.rb' diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index b3e26eca3fe..c797b4c2b01 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -117d83886351afe9c05c3a3464cba7e22bc234a3 +01ac062b95b09b5d2f6390a7b73799d26ef42de2 diff --git a/app/assets/javascripts/import_entities/import_groups/constants.js b/app/assets/javascripts/import_entities/import_groups/constants.js index c0d7a8b56e1..d6624cb3304 100644 --- a/app/assets/javascripts/import_entities/import_groups/constants.js +++ b/app/assets/javascripts/import_entities/import_groups/constants.js @@ -30,12 +30,12 @@ export const TARGET_NAMESPACE_FIELD = 'targetNamespace'; export const ROOT_NAMESPACE = { fullPath: '', id: null }; const PLACEHOLDER_STATUS_PENDING_ASSIGNMENT = 'pending_assignment'; -const PLACEHOLDER_STATUS_AWAITING_APPROVAL = 'awaiting_approval'; +export const PLACEHOLDER_STATUS_AWAITING_APPROVAL = 'awaiting_approval'; const PLACEHOLDER_STATUS_REJECTED = 'rejected'; -const PLACEHOLDER_STATUS_REASSIGNING = 'reassigning'; // backend state still pending +export const PLACEHOLDER_STATUS_REASSIGNING = 'reassignment_in_progress'; const PLACEHOLDER_STATUS_FAILED = 'failed'; -const PLACEHOLDER_STATUS_SAVED = 'saved'; // backend state still pending -const PLACEHOLDER_STATUS_COMPLETED = 'completed'; +export const PLACEHOLDER_STATUS_KEPT_AS_PLACEHOLDER = 'keep_as_placeholder'; +export const PLACEHOLDER_STATUS_COMPLETED = 'completed'; export const placeholderUserBadges = { [PLACEHOLDER_STATUS_PENDING_ASSIGNMENT]: { @@ -63,7 +63,7 @@ export const placeholderUserBadges = { variant: 'danger', tooltip: s__('UserMapping|Reassignment failed.'), }, - [PLACEHOLDER_STATUS_SAVED]: { + [PLACEHOLDER_STATUS_KEPT_AS_PLACEHOLDER]: { text: s__('UserMapping|Kept as placeholder'), variant: 'success', tooltip: s__('UserMapping|Placeholder user was made permanent.'), diff --git a/app/assets/javascripts/members/components/placeholders/placeholder_actions.vue b/app/assets/javascripts/members/components/placeholders/placeholder_actions.vue index b355948c0a4..76501e922b2 100644 --- a/app/assets/javascripts/members/components/placeholders/placeholder_actions.vue +++ b/app/assets/javascripts/members/components/placeholders/placeholder_actions.vue @@ -7,6 +7,10 @@ import { createAlert } from '~/alert'; import searchUsersQuery from '~/graphql_shared/queries/users_search_all_paginated.query.graphql'; import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants'; +import { + PLACEHOLDER_STATUS_AWAITING_APPROVAL, + PLACEHOLDER_STATUS_REASSIGNING, +} from '~/import_entities/import_groups/constants'; const USERS_PER_PAGE = 20; @@ -36,6 +40,7 @@ export default { return { isLoadingInitial: true, isLoadingMore: false, + isValidated: false, search: '', selectedUser: null, }; @@ -74,6 +79,10 @@ export default { return this.$apollo.queries.users.loading && !this.isLoadingMore; }, + userSelectInvalid() { + return this.isValidated && !this.selectedUser; + }, + userItems() { return this.users?.nodes?.map((user) => createUserObject(user)); }, @@ -101,9 +110,20 @@ export default { confirmText() { return this.dontReassignSelected ? __('Confirm') : s__('UserMapping|Reassign'); }, + + statusIsAwaitingApproval() { + return this.placeholder.status === PLACEHOLDER_STATUS_AWAITING_APPROVAL; + }, + statusIsReassigning() { + return this.placeholder.status === PLACEHOLDER_STATUS_REASSIGNING; + }, }, created() { + if (this.statusIsAwaitingApproval || this.statusIsReassigning) { + this.selectedUser = this.placeholder.reassignToUser; + } + this.debouncedSetSearch = debounce(this.setSearch, DEFAULT_DEBOUNCE_AND_THROTTLE_MS); }, @@ -154,56 +174,87 @@ export default { this.selectedUser = this.userItems.find((user) => user.value === value); } }, + + onNotify() { + this.$toast.show(s__('UserMapping|Notification email sent.')); + }, + onCancel() { + this.$emit('cancel'); + }, + onConfirm() { + this.isValidated = true; + if (!this.userSelectInvalid) { + this.$emit('confirm', this.selectedUserValue); + } + }, }, }; + - {{ confirmText }} + + {{ __('This field is required.') }} + + + + + {{ + confirmText + }} diff --git a/app/assets/javascripts/members/components/placeholders/placeholders_table.vue b/app/assets/javascripts/members/components/placeholders/placeholders_table.vue index afed6890ea5..8d7ca7431a3 100644 --- a/app/assets/javascripts/members/components/placeholders/placeholders_table.vue +++ b/app/assets/javascripts/members/components/placeholders/placeholders_table.vue @@ -2,7 +2,11 @@ import { GlAvatarLabeled, GlBadge, GlTableLite, GlTooltipDirective } from '@gitlab/ui'; import { s__ } from '~/locale'; -import { placeholderUserBadges } from '~/import_entities/import_groups/constants'; +import { + PLACEHOLDER_STATUS_KEPT_AS_PLACEHOLDER, + PLACEHOLDER_STATUS_COMPLETED, + placeholderUserBadges, +} from '~/import_entities/import_groups/constants'; import PlaceholderActions from './placeholder_actions.vue'; export default { @@ -59,6 +63,21 @@ export default { statusBadge(item) { return placeholderUserBadges[item.status]; }, + + isReassignedItem(item) { + return ( + (item.status === PLACEHOLDER_STATUS_KEPT_AS_PLACEHOLDER || + item.status === PLACEHOLDER_STATUS_COMPLETED) && + item.reassignToUser + ); + }, + + onCancel(item) { + this.$emit('cancel', item); + }, + onConfirm(item, selectedUserId) { + this.$emit('confirm', item, selectedUserId); + }, }, }; @@ -88,8 +107,20 @@ export default { > - diff --git a/app/assets/javascripts/members/components/table/role_details_drawer.vue b/app/assets/javascripts/members/components/table/drawer/role_details_drawer.vue similarity index 95% rename from app/assets/javascripts/members/components/table/role_details_drawer.vue rename to app/assets/javascripts/members/components/table/drawer/role_details_drawer.vue index 90267358b23..fec5c92c285 100644 --- a/app/assets/javascripts/members/components/table/role_details_drawer.vue +++ b/app/assets/javascripts/members/components/table/drawer/role_details_drawer.vue @@ -1,5 +1,5 @@ diff --git a/app/assets/javascripts/organizations/groups_and_projects/constants.js b/app/assets/javascripts/organizations/groups_and_projects/constants.js index de1cb4b6f4f..e3bf7cfc1ca 100644 --- a/app/assets/javascripts/organizations/groups_and_projects/constants.js +++ b/app/assets/javascripts/organizations/groups_and_projects/constants.js @@ -1,5 +1,12 @@ import { __ } from '~/locale'; -import { SORT_ITEM_NAME, SORT_ITEM_CREATED_AT, SORT_ITEM_UPDATED_AT } from '../shared/constants'; +import { + SORT_ITEM_NAME, + SORT_ITEM_CREATED_AT, + SORT_ITEM_UPDATED_AT, + SORT_NAME, + SORT_CREATED_AT, + SORT_UPDATED_AT, +} from '../shared/constants'; export const DISPLAY_QUERY_GROUPS = 'groups'; export const DISPLAY_QUERY_PROJECTS = 'projects'; @@ -19,3 +26,9 @@ export const DISPLAY_LISTBOX_ITEMS = [ ]; export const SORT_ITEMS = [SORT_ITEM_NAME, SORT_ITEM_CREATED_AT, SORT_ITEM_UPDATED_AT]; + +export const SORT_ITEMS_GRAPHQL_ENUMS = { + [SORT_NAME]: 'NAME', + [SORT_CREATED_AT]: 'CREATED', + [SORT_UPDATED_AT]: 'UPDATED', +}; diff --git a/app/assets/javascripts/organizations/groups_and_projects/graphql/mutations/user_preferences_update.mutation.graphql b/app/assets/javascripts/organizations/groups_and_projects/graphql/mutations/user_preferences_update.mutation.graphql new file mode 100644 index 00000000000..78a9926eb28 --- /dev/null +++ b/app/assets/javascripts/organizations/groups_and_projects/graphql/mutations/user_preferences_update.mutation.graphql @@ -0,0 +1,8 @@ +mutation userPreferencesUpdate($input: UserPreferencesUpdateInput!) { + userPreferencesUpdate(input: $input) { + userPreferences { + organizationGroupsProjectsSort + organizationGroupsProjectsDisplay + } + } +} diff --git a/app/assets/javascripts/organizations/groups_and_projects/index.js b/app/assets/javascripts/organizations/groups_and_projects/index.js index e3b8fa151fc..eb28428588c 100644 --- a/app/assets/javascripts/organizations/groups_and_projects/index.js +++ b/app/assets/javascripts/organizations/groups_and_projects/index.js @@ -4,6 +4,7 @@ import VueRouter from 'vue-router'; import createDefaultClient from '~/lib/graphql'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { ORGANIZATION_ROOT_ROUTE_NAME } from '~/organizations/shared/constants'; +import { userPreferenceSortName, userPreferenceSortDirection } from './utils'; import App from './components/app.vue'; export const createRouter = () => { @@ -35,6 +36,8 @@ export const initOrganizationsGroupsAndProjects = () => { canCreateGroup, canCreateProject, hasGroups, + userPreferenceSort, + userPreferenceDisplay, } = convertObjectPropsToCamelCase(JSON.parse(appData)); Vue.use(VueRouter); @@ -57,6 +60,9 @@ export const initOrganizationsGroupsAndProjects = () => { canCreateGroup, canCreateProject, hasGroups, + userPreferenceSortName: userPreferenceSortName(userPreferenceSort), + userPreferenceSortDirection: userPreferenceSortDirection(userPreferenceSort), + userPreferenceDisplay, }, render(createElement) { return createElement(App); diff --git a/app/assets/javascripts/organizations/groups_and_projects/utils.js b/app/assets/javascripts/organizations/groups_and_projects/utils.js new file mode 100644 index 00000000000..25d3e061da4 --- /dev/null +++ b/app/assets/javascripts/organizations/groups_and_projects/utils.js @@ -0,0 +1,29 @@ +import { + SORT_DIRECTION_ASC, + SORT_DIRECTION_DESC, + SORT_ITEM_NAME, +} from '~/organizations/shared/constants'; +import { SORT_ITEMS_GRAPHQL_ENUMS } from './constants'; + +export const userPreferenceSortName = (userPreferenceSort) => { + if (!userPreferenceSort) { + return SORT_ITEM_NAME.value; + } + + const userPreferenceSortNameGraphQLEnum = userPreferenceSort + .replace(`_${SORT_DIRECTION_ASC}`, '') + .replace(`_${SORT_DIRECTION_DESC}`, '') + .toUpperCase(); + + return ( + Object.entries(SORT_ITEMS_GRAPHQL_ENUMS).find( + ([, sortNameGraphQLEnum]) => sortNameGraphQLEnum === userPreferenceSortNameGraphQLEnum, + )?.[0] || SORT_ITEM_NAME.value + ); +}; + +export const userPreferenceSortDirection = (userPreferenceSort) => { + return userPreferenceSort?.endsWith(SORT_DIRECTION_DESC) + ? SORT_DIRECTION_DESC + : SORT_DIRECTION_ASC; +}; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 980fa09210f..765b4fedbbc 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -33,6 +33,7 @@ import { STATE_MACHINE, MT_SKIP_TRAIN, MT_RESTART_TRAIN, + MWCP_MERGE_STRATEGY, } from '../../constants'; import eventHub from '../../event_hub'; import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables'; @@ -243,6 +244,9 @@ export default { this.state.availableAutoMergeStrategies, ); }, + isPreferredAutoMergeStrategyMWPC() { + return this.preferredAutoMergeStrategy === MWCP_MERGE_STRATEGY; + }, squashIsSelected() { return this.isSquashReadOnly ? this.state.squashOnMerge : this.state.squash; }, diff --git a/app/assets/javascripts/vue_merge_request_widget/mixins/auto_merge.js b/app/assets/javascripts/vue_merge_request_widget/mixins/auto_merge.js index de77ed7ec9c..33b590fba28 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mixins/auto_merge.js +++ b/app/assets/javascripts/vue_merge_request_widget/mixins/auto_merge.js @@ -1,8 +1,17 @@ import { s__ } from '~/locale'; +import { MWCP_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants'; export default { computed: { statusText() { + const { autoMergeStrategy } = this.state; + + if (autoMergeStrategy === MWCP_MERGE_STRATEGY) { + return s__( + 'mrWidget|Set by %{merge_author} to be merged automatically when all merge checks pass', + ); + } + return s__( 'mrWidget|Set by %{merge_author} to be merged automatically when the pipeline succeeds', ); diff --git a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js index 1ce6c4c3f9e..6c6f266e008 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js +++ b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js @@ -10,6 +10,11 @@ export const PIPELINE_MUST_SUCCEED_CONFLICT_TEXT = __( ); export const PIPELINE_SKIPPED_STATUS = 'SKIPPED'; +// TODO: Add documentation +const MERGE_WHEN_CHECKS_PASS_HELP = helpPagePath( + '/user/project/merge_requests/merge_when_checks_pass.html', +); + export default { computed: { isMergeButtonDisabled() { @@ -28,9 +33,23 @@ export default { return __('Set to auto-merge'); }, autoMergeHelperText() { + if (this.isPreferredAutoMergeStrategyMWPC) { + return __('Merge when all merge checks pass'); + } + return __('Merge when pipeline succeeds'); }, autoMergePopoverSettings() { + if (this.isPreferredAutoMergeStrategyMWPC) { + return { + helpLink: MERGE_WHEN_CHECKS_PASS_HELP, + bodyText: __( + 'When all the merge checks for this merge request pass, it will %{linkStart}automatically merge%{linkEnd}.', + ), + title: __('Merge when checks pass'), + }; + } + return { helpLink: helpPagePath('/user/project/merge_requests/merge_when_pipeline_succeeds.html'), bodyText: __( diff --git a/app/assets/javascripts/vue_merge_request_widget/stores/get_state_key.js b/app/assets/javascripts/vue_merge_request_widget/stores/get_state_key.js index b8513dbdacd..3db0e00a871 100644 --- a/app/assets/javascripts/vue_merge_request_widget/stores/get_state_key.js +++ b/app/assets/javascripts/vue_merge_request_widget/stores/get_state_key.js @@ -1,4 +1,4 @@ -import { DETAILED_MERGE_STATUS } from '../constants'; +import { DETAILED_MERGE_STATUS, MWCP_MERGE_STRATEGY } from '../constants'; import { stateKey } from './state_maps'; export default function deviseState() { @@ -22,7 +22,8 @@ export default function deviseState() { } if ( this.detailedMergeStatus === DETAILED_MERGE_STATUS.MERGEABLE || - this.detailedMergeStatus === DETAILED_MERGE_STATUS.CI_STILL_RUNNING + this.detailedMergeStatus === DETAILED_MERGE_STATUS.CI_STILL_RUNNING || + (!this.autoMergeEnabled && this.preferredAutoMergeStrategy === MWCP_MERGE_STRATEGY) ) { return stateKey.readyToMerge; } diff --git a/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js b/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js index ed0e499d055..6ad3b70817d 100644 --- a/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js +++ b/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js @@ -394,7 +394,7 @@ export default class MergeRequestStore { } get preventMerge() { - return this.isApprovalNeeded; + return this.isApprovalNeeded && this.preferredAutoMergeStrategy !== MWCP_MERGE_STRATEGY; } // Because the state machine doesn't yet handle every state and transition, diff --git a/app/controllers/groups/packages_controller.rb b/app/controllers/groups/packages_controller.rb index e06ccfddad5..668f1a2d124 100644 --- a/app/controllers/groups/packages_controller.rb +++ b/app/controllers/groups/packages_controller.rb @@ -7,7 +7,9 @@ module Groups feature_category :package_registry urgency :low - before_action :set_feature_flag_packages_protected_packages, only: :show + before_action :set_feature_flag_packages_protected_packages, only: [:show, :index] + + def index; end # The show action renders index to allow frontend routing to work on page refresh def show diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 14d8b2c1674..867247929b3 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -528,7 +528,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo AutoMergeService.new(project, current_user, merge_params) .execute( merge_request, - params[:auto_merge_strategy] || AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS + params[:auto_merge_strategy] || merge_request.default_auto_merge_strategy ) end else diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 377f7f75906..ffc4e8dde36 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -56,7 +56,7 @@ class SearchController < ApplicationController @group = search_service.group @search_service_presenter = Gitlab::View::Presenter::Factory.new(search_service, current_user: current_user).fabricate! - return unless search_term_valid? + return unless search_term_valid? && search_type_valid? return if check_single_commit_result? @@ -73,7 +73,7 @@ class SearchController < ApplicationController @search_highlight = @search_service_presenter.search_highlight end - return if @search_results.respond_to?(:failed?) && @search_results.failed? + return if @search_results.respond_to?(:failed?) && @search_results.failed?(@scope) Gitlab::Metrics::GlobalSearchSlis.record_apdex( elapsed: @global_search_duration_s, @@ -186,6 +186,17 @@ class SearchController < ApplicationController true end + def search_type_valid? + search_type_errors = search_service.search_type_errors + + if search_type_errors + flash[:alert] = search_type_errors + return false + end + + true + end + def check_single_commit_result? return false if params[:force_search_results] return false unless @project.present? diff --git a/app/finders/import/source_users_finder.rb b/app/finders/import/source_users_finder.rb new file mode 100644 index 00000000000..d4e573bfabc --- /dev/null +++ b/app/finders/import/source_users_finder.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Import + class SourceUsersFinder + def initialize(namespace, current_user, params = {}) + @namespace = namespace + @current_user = current_user + @params = params + end + + def execute + return Import::SourceUser.none unless authorized? + + namespace.import_source_users + end + + private + + attr_reader :namespace, :current_user, :params + + def authorized? + Ability.allowed?(current_user, :admin_namespace, namespace) + end + end +end diff --git a/app/finders/packages/conan/package_finder.rb b/app/finders/packages/conan/package_finder.rb index 3671a13a2cb..c014bd6cd07 100644 --- a/app/finders/packages/conan/package_finder.rb +++ b/app/finders/packages/conan/package_finder.rb @@ -4,29 +4,31 @@ module Packages module Conan class PackageFinder MAX_PACKAGES_COUNT = 500 + QUERY_SEPARATOR = '/' def initialize(current_user, params, project: nil) @current_user = current_user - @query = params[:query] + @name, @version = params[:query].to_s.split(QUERY_SEPARATOR) @project = project end def execute - return ::Packages::Conan::Package.none unless query + return ::Packages::Conan::Package.none unless name.present? packages end private - attr_reader :current_user, :query, :project + attr_reader :current_user, :name, :project, :version def packages - base - .installable - .preload_conan_metadatum - .with_name_like(query) - .limit_recent(MAX_PACKAGES_COUNT) + matching_packages = base + .installable + .preload_conan_metadatum + .with_name_like(name) + matching_packages = matching_packages.with_version(version) if version + matching_packages.limit_recent(MAX_PACKAGES_COUNT) end def base diff --git a/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb b/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb index 4ce9baff8cb..7f46518ab57 100644 --- a/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb +++ b/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb @@ -23,3 +23,5 @@ module BatchLoaders end end end + +BatchLoaders::AwardEmojiVotesBatchLoader.prepend_mod diff --git a/app/graphql/mutations/import/source_users/cancel_reassignment.rb b/app/graphql/mutations/import/source_users/cancel_reassignment.rb new file mode 100644 index 00000000000..8b8bd34cfe2 --- /dev/null +++ b/app/graphql/mutations/import/source_users/cancel_reassignment.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Mutations + module Import + module SourceUsers + class CancelReassignment < BaseMutation + graphql_name 'ImportSourceUserCancelReassignment' + + argument :id, Types::GlobalIDType[::Import::SourceUser], + required: true, + description: 'Global ID of the mapping of a user on source instance to a user on destination instance.' + + field :import_source_user, + Types::Import::SourceUserType, + null: true, + description: "Mapping of a user on source instance to a user on destination instance after mutation." + + authorize :admin_import_source_user + + def resolve(args) + if Feature.disabled?(:bulk_import_user_mapping, current_user) + raise_resource_not_available_error! '`bulk_import_user_mapping` feature flag is disabled.' + end + + import_source_user = authorized_find!(id: args[:id]) + result = ::Import::SourceUsers::CancelReassignmentService.new(import_source_user, + current_user: current_user).execute + + { import_source_user: result.payload, errors: result.errors } + end + end + end + end +end diff --git a/app/graphql/mutations/import/source_users/keep_as_placeholder.rb b/app/graphql/mutations/import/source_users/keep_as_placeholder.rb new file mode 100644 index 00000000000..7b83fa0ce82 --- /dev/null +++ b/app/graphql/mutations/import/source_users/keep_as_placeholder.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Mutations + module Import + module SourceUsers + class KeepAsPlaceholder < BaseMutation + graphql_name 'ImportSourceUserKeepAsPlaceholder' + + argument :id, Types::GlobalIDType[::Import::SourceUser], + required: true, + description: 'Global ID of the mapping of a user on source instance to a user on destination instance.' + + field :import_source_user, + Types::Import::SourceUserType, + null: true, + description: "Mapping of a user on source instance to a user on destination instance after mutation." + + authorize :admin_import_source_user + + def resolve(args) + if Feature.disabled?(:bulk_import_user_mapping, current_user) + raise_resource_not_available_error! '`bulk_import_user_mapping` feature flag is disabled.' + end + + import_source_user = authorized_find!(id: args[:id]) + result = ::Import::SourceUsers::KeepAsPlaceholderService.new(import_source_user, + current_user: current_user).execute + + { import_source_user: result.payload, errors: result.errors } + end + end + end + end +end diff --git a/app/graphql/mutations/import/source_users/reassign.rb b/app/graphql/mutations/import/source_users/reassign.rb new file mode 100644 index 00000000000..909dc919986 --- /dev/null +++ b/app/graphql/mutations/import/source_users/reassign.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Mutations + module Import + module SourceUsers + class Reassign < BaseMutation + graphql_name 'ImportSourceUserReassign' + + argument :id, Types::GlobalIDType[::Import::SourceUser], + required: true, + description: 'Global ID of the mapping of a user on source instance to a user on destination instance.' + + argument :assignee_user_id, Types::GlobalIDType[::User], + required: true, + loads: Types::UserType, + description: 'Global ID of the assignee user.' + + field :import_source_user, + Types::Import::SourceUserType, + null: true, + description: "Mapping of a user on source instance to a user on destination instance after mutation." + + authorize :admin_import_source_user + + def resolve(args) + if Feature.disabled?(:bulk_import_user_mapping, current_user) + raise_resource_not_available_error! '`bulk_import_user_mapping` feature flag is disabled.' + end + + import_source_user = authorized_find!(id: args[:id]) + result = ::Import::SourceUsers::ReassignService.new(import_source_user, args[:assignee_user], + current_user: current_user).execute + + { import_source_user: result.payload, errors: result.errors } + end + end + end + end +end diff --git a/app/graphql/resolvers/import/source_users_resolver.rb b/app/graphql/resolvers/import/source_users_resolver.rb new file mode 100644 index 00000000000..57210e3b6b1 --- /dev/null +++ b/app/graphql/resolvers/import/source_users_resolver.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module Resolvers + module Import + class SourceUsersResolver < BaseResolver + include ::LooksAhead + include Gitlab::Graphql::Authorize::AuthorizeResource + + authorizes_object! + authorize :admin_namespace + + type Types::Import::SourceUserType.connection_type, null: true + + alias_method :namespace, :object + + def resolve_with_lookahead(**args) + return [] if Feature.disabled?(:bulk_import_user_mapping, current_user) + + apply_lookahead(::Import::SourceUsersFinder.new(namespace, context[:current_user], args).execute) + end + + private + + def preloads + { + reassign_to_user: [:reassign_to_user], + placeholder_user: [:placeholder_user], + reassigned_by_user: [:reassigned_by_user] + } + end + end + end +end diff --git a/app/graphql/types/ci/catalog/resources/component_type.rb b/app/graphql/types/ci/catalog/resources/component_type.rb index 41304f4477a..853747549ef 100644 --- a/app/graphql/types/ci/catalog/resources/component_type.rb +++ b/app/graphql/types/ci/catalog/resources/component_type.rb @@ -21,13 +21,14 @@ module Types description: 'Inputs for the component.' def inputs - spec_inputs = object.spec.fetch('inputs', {}) - - spec_inputs.map do |key, value| + object.spec.fetch('inputs', {}).map do |key, value| { name: key, required: !value&.key?('default'), - default: value&.dig('default') + default: value&.dig('default'), + description: value&.dig('description'), + regex: value&.dig('regex'), + type: value&.dig('type') || 'string' } end end diff --git a/app/graphql/types/ci/catalog/resources/components/input_type.rb b/app/graphql/types/ci/catalog/resources/components/input_type.rb index 261b88e7db7..070d3a5038a 100644 --- a/app/graphql/types/ci/catalog/resources/components/input_type.rb +++ b/app/graphql/types/ci/catalog/resources/components/input_type.rb @@ -10,8 +10,16 @@ module Types graphql_name 'CiCatalogResourceComponentInput' field :default, GraphQL::Types::String, null: true, description: 'Default value for the input.' + field :description, GraphQL::Types::String, null: true, description: 'Description of the input.' field :name, GraphQL::Types::String, null: true, description: 'Name of the input.' + + field :regex, GraphQL::Types::String, null: true, + description: 'Pattern that the input value must match. Only applicable to string inputs.' + field :required, GraphQL::Types::Boolean, null: true, description: 'Indicates if an input is required.' + + field :type, Types::Ci::Catalog::Resources::Components::InputTypeEnum, null: true, + description: 'Type of the input.' end # rubocop: enable Graphql/AuthorizeTypes end diff --git a/app/graphql/types/ci/catalog/resources/components/input_type_enum.rb b/app/graphql/types/ci/catalog/resources/components/input_type_enum.rb new file mode 100644 index 00000000000..934d76d6cbb --- /dev/null +++ b/app/graphql/types/ci/catalog/resources/components/input_type_enum.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module Types + module Ci + module Catalog + module Resources + module Components + class InputTypeEnum < BaseEnum + graphql_name 'CiCatalogResourceComponentInputType' + description 'Available input types' + + ::Gitlab::Ci::Config::Interpolation::Inputs.input_types.each do |input_type| + value input_type.upcase, description: "#{input_type.capitalize} input", value: input_type + end + end + end + end + end + end +end diff --git a/app/graphql/types/ci/pipeline_type.rb b/app/graphql/types/ci/pipeline_type.rb index f1b05e5335d..99a91d59a7b 100644 --- a/app/graphql/types/ci/pipeline_type.rb +++ b/app/graphql/types/ci/pipeline_type.rb @@ -206,6 +206,8 @@ module Types field :trigger, GraphQL::Types::Boolean, method: :trigger?, null: false, description: "If the pipeline was created by a Trigger request." + field :manual_variables, ManualVariableType.connection_type, null: true, description: 'CI/CD variables added to a manual pipeline.' + def commit BatchLoader::GraphQL.wrap(object.commit) end @@ -242,6 +244,13 @@ module Types pipeline.sha end + def manual_variables + variables = object.variables + return variables if Ability.allowed?(current_user, :read_pipeline_variable, pipeline) + + variables.map { |variable| { key: variable.key, value: nil } } + end + alias_method :pipeline, :object end end diff --git a/app/graphql/types/import/import_source_enum.rb b/app/graphql/types/import/import_source_enum.rb index 66fe3b2b8bb..4f5a154d50f 100644 --- a/app/graphql/types/import/import_source_enum.rb +++ b/app/graphql/types/import/import_source_enum.rb @@ -11,7 +11,7 @@ module Types def import_source_description(import_source) return "Not imported" if import_source == :none - "Imported from #{import_source.to_s.titleize}." + import_source.to_s.titleize end end diff --git a/app/graphql/types/import/source_user_status_enum.rb b/app/graphql/types/import/source_user_status_enum.rb new file mode 100644 index 00000000000..def158beab4 --- /dev/null +++ b/app/graphql/types/import/source_user_status_enum.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Types + module Import + class SourceUserStatusEnum < BaseEnum + graphql_name 'ImportSourceUserStatus' + + ::Import::SourceUser.state_machines[:status].states.each do |state| + value state.name.upcase, + description: "An import source user mapping that is #{state.human_name}.", + value: state.value + end + end + end +end diff --git a/app/graphql/types/import/source_user_type.rb b/app/graphql/types/import/source_user_type.rb new file mode 100644 index 00000000000..5a2805d6b3a --- /dev/null +++ b/app/graphql/types/import/source_user_type.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +module Types + module Import + class SourceUserType < BaseObject + graphql_name 'ImportSourceUser' + + authorize :admin_import_source_user + + field :id, + Types::GlobalIDType[::Import::SourceUser], + null: false, + description: 'Global ID of the mapping of a user on source instance to a user on destination instance.' + + field :placeholder_user, + Types::UserType, + null: true, + description: 'Placeholder user associated with the import source user.' + + field :reassign_to_user, + Types::UserType, + null: true, + description: 'User that contributions are reassigned to.' + + field :reassigned_by_user, + Types::UserType, + null: true, + description: 'User that did the reassignment.' + + # rubocop:disable GraphQL/ExtractType -- no need to extract allowed types into a separate field + field :source_user_identifier, + GraphQL::Types::String, + null: false, + description: 'ID of the user in the source instance.' + + field :source_username, + GraphQL::Types::String, + null: true, + description: 'Username of user in the source instance.' + + field :source_name, + GraphQL::Types::String, + null: true, + description: 'Name of user in the source instance.' + + field :source_hostname, + GraphQL::Types::String, + null: false, + description: 'Source instance hostname.' + # rubocop:enable GraphQL/ExtractType + + field :import_type, + Types::Import::ImportSourceEnum, + null: false, + description: 'Name of the importer.' + + field :status, + Types::Import::SourceUserStatusEnum, + null: false, + description: 'Status of the mapping.' + end + end +end diff --git a/app/graphql/types/mutation_type.rb b/app/graphql/types/mutation_type.rb index f70b9438c8c..9d1747bf2d8 100644 --- a/app/graphql/types/mutation_type.rb +++ b/app/graphql/types/mutation_type.rb @@ -58,6 +58,9 @@ module Types mount_mutation Mutations::Environments::Delete mount_mutation Mutations::Environments::Stop mount_mutation Mutations::Environments::Update + mount_mutation Mutations::Import::SourceUsers::CancelReassignment, alpha: { milestone: '17.2' } + mount_mutation Mutations::Import::SourceUsers::KeepAsPlaceholder, alpha: { milestone: '17.2' } + mount_mutation Mutations::Import::SourceUsers::Reassign, alpha: { milestone: '17.2' } mount_mutation Mutations::IncidentManagement::TimelineEvent::Create, alpha: { milestone: '15.6' } mount_mutation Mutations::IncidentManagement::TimelineEvent::PromoteFromNote mount_mutation Mutations::IncidentManagement::TimelineEvent::Update diff --git a/app/graphql/types/namespace_type.rb b/app/graphql/types/namespace_type.rb index 783f484d9ba..5d45d123c5d 100644 --- a/app/graphql/types/namespace_type.rb +++ b/app/graphql/types/namespace_type.rb @@ -90,6 +90,15 @@ module Types connection: true, description: "List of the namespaces's Pages Deployments." + field :import_source_users, Import::SourceUserType.connection_type, + null: true, + alpha: { milestone: '17.2' }, + resolver: Resolvers::Import::SourceUsersResolver, + description: 'Import source users of the namespace. This field can only be resolved for one namespace in any ' \ + 'single request.' do + extension(::Gitlab::Graphql::Limit::FieldCallCount, limit: 1) + end + markdown_field :description_html, null: true def achievements_path diff --git a/app/graphql/types/work_items/widgets/award_emoji_type.rb b/app/graphql/types/work_items/widgets/award_emoji_type.rb index eee04696df2..ba260ada88e 100644 --- a/app/graphql/types/work_items/widgets/award_emoji_type.rb +++ b/app/graphql/types/work_items/widgets/award_emoji_type.rb @@ -39,3 +39,5 @@ module Types end end end + +Types::WorkItems::Widgets::AwardEmojiType.prepend_mod diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index 12f04e69d2e..545f796b001 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -89,7 +89,7 @@ module MergeRequestsHelper def merge_params(merge_request) { - auto_merge_strategy: AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS, + auto_merge_strategy: merge_request.default_auto_merge_strategy, should_remove_source_branch: true, sha: merge_request.diff_head_sha, squash: merge_request.squash_on_merge? diff --git a/app/helpers/organizations/organization_helper.rb b/app/helpers/organizations/organization_helper.rb index d527bcee63a..230cc3289ab 100644 --- a/app/helpers/organizations/organization_helper.rb +++ b/app/helpers/organizations/organization_helper.rb @@ -30,7 +30,10 @@ module Organizations end def organization_groups_and_projects_app_data(organization) - shared_groups_and_projects_app_data(organization).to_json + { + user_preference_sort: current_user&.user_preference&.organization_groups_projects_sort, + user_preference_display: current_user&.user_preference&.organization_groups_projects_display + }.merge(shared_groups_and_projects_app_data(organization)).to_json end def organization_index_app_data diff --git a/app/models/award_emoji.rb b/app/models/award_emoji.rb index 55ef95236d9..6db92efa8a0 100644 --- a/app/models/award_emoji.rb +++ b/app/models/award_emoji.rb @@ -88,3 +88,5 @@ class AwardEmoji < ApplicationRecord Gitlab::HookData::EmojiBuilder.new(self).build end end + +AwardEmoji.prepend_mod diff --git a/app/models/concerns/enums/vulnerability.rb b/app/models/concerns/enums/vulnerability.rb index 5c70e3a5464..b178e85ef3c 100644 --- a/app/models/concerns/enums/vulnerability.rb +++ b/app/models/concerns/enums/vulnerability.rb @@ -46,40 +46,49 @@ module Enums dismissed: 2 }.with_indifferent_access.freeze - OWASP_TOP_10 = { - "A1:2017-Injection" => 1, - "A2:2017-Broken Authentication" => 2, - "A3:2017-Sensitive Data Exposure" => 3, - "A4:2017-XML External Entities (XXE)" => 4, - "A5:2017-Broken Access Control" => 5, - "A6:2017-Security Misconfiguration" => 6, - "A7:2017-Cross-Site Scripting (XSS)" => 7, - "A8:2017-Insecure Deserialization" => 8, - "A9:2017-Using Components with Known Vulnerabilities" => 9, - "A10:2017-Insufficient Logging & Monitoring" => 10, + OWASP_TOP_10_BY_YEAR = { + '2017' => { + "A1:2017-Injection" => 1, + "A2:2017-Broken Authentication" => 2, + "A3:2017-Sensitive Data Exposure" => 3, + "A4:2017-XML External Entities (XXE)" => 4, + "A5:2017-Broken Access Control" => 5, + "A6:2017-Security Misconfiguration" => 6, + "A7:2017-Cross-Site Scripting (XSS)" => 7, + "A8:2017-Insecure Deserialization" => 8, + "A9:2017-Using Components with Known Vulnerabilities" => 9, + "A10:2017-Insufficient Logging & Monitoring" => 10 + }, + '2021' => { + # 2021 switched to zero-padded identifiers, previous mapping is temporary + # to be fixed with https://gitlab.com/gitlab-org/gitlab/-/issues/429565 + "A1:2021-Broken Access Control" => 11, + "A01:2021-Broken Access Control" => 11, + "A2:2021-Cryptographic Failures" => 12, + "A02:2021-Cryptographic Failures" => 12, + "A3:2021-Injection" => 13, + "A03:2021-Injection" => 13, + "A4:2021-Insecure Design" => 14, + "A04:2021-Insecure Design" => 14, + "A5:2021-Security Misconfiguration" => 15, + "A05:2021-Security Misconfiguration" => 15, + "A6:2021-Vulnerable and Outdated Components" => 16, + "A06:2021-Vulnerable and Outdated Components" => 16, + "A7:2021-Identification and Authentication Failures" => 17, + "A07:2021-Identification and Authentication Failures" => 17, + "A8:2021-Software and Data Integrity Failures" => 18, + "A08:2021-Software and Data Integrity Failures" => 18, + "A9:2021-Security Logging and Monitoring Failures" => 19, + "A09:2021-Security Logging and Monitoring Failures" => 19, + "A10:2021-Server-Side Request Forgery" => 20 + } + }.freeze - # 2021 switched to zero-padded identifiers, previous mapping is temporary - # to be fixed with https://gitlab.com/gitlab-org/gitlab/-/issues/429565 - "A1:2021-Broken Access Control" => 11, - "A01:2021-Broken Access Control" => 11, - "A2:2021-Cryptographic Failures" => 12, - "A02:2021-Cryptographic Failures" => 12, - "A3:2021-Injection" => 13, - "A03:2021-Injection" => 13, - "A4:2021-Insecure Design" => 14, - "A04:2021-Insecure Design" => 14, - "A5:2021-Security Misconfiguration" => 15, - "A05:2021-Security Misconfiguration" => 15, - "A6:2021-Vulnerable and Outdated Components" => 16, - "A06:2021-Vulnerable and Outdated Components" => 16, - "A7:2021-Identification and Authentication Failures" => 17, - "A07:2021-Identification and Authentication Failures" => 17, - "A8:2021-Software and Data Integrity Failures" => 18, - "A08:2021-Software and Data Integrity Failures" => 18, - "A9:2021-Security Logging and Monitoring Failures" => 19, - "A09:2021-Security Logging and Monitoring Failures" => 19, - "A10:2021-Server-Side Request Forgery" => 20 - }.with_indifferent_access.freeze + OWASP_TOP_10 = OWASP_TOP_10_BY_YEAR.values.inject(&:merge).with_indifferent_access.freeze + + OWASP_CATEGORIES = OWASP_TOP_10.keys.map { |key| key.split(':').first }.uniq.freeze + + OWASP_YEARS = OWASP_TOP_10_BY_YEAR.keys.freeze def self.confidence_levels CONFIDENCE_LEVELS @@ -112,6 +121,14 @@ module Enums def self.owasp_top_10 OWASP_TOP_10 end + + def self.owasp_categories + OWASP_CATEGORIES + end + + def self.owasp_years + OWASP_YEARS + end end end diff --git a/app/models/import/source_user.rb b/app/models/import/source_user.rb index 609aed78e76..1c92e9bd4c9 100644 --- a/app/models/import/source_user.rb +++ b/app/models/import/source_user.rb @@ -22,12 +22,16 @@ module Import state :completed, value: 5 state :keep_as_placeholder, value: 6 - event :cancel_assignment do + event :reassign do + transition [:pending_assignment, :rejected] => :awaiting_approval + end + + event :cancel_reassignment do transition [:awaiting_approval, :rejected] => :pending_assignment end event :keep_as_placeholder do - transition [:pending_assignment, :awaiting_approval, :rejected] => :keep_as_placeholder + transition [:pending_assignment, :rejected] => :keep_as_placeholder end event :accept do @@ -61,5 +65,13 @@ module Import import_type: import_type ) end + + def reassignable_status? + pending_assignment? || rejected? + end + + def cancelable_status? + awaiting_approval? || rejected? + end end end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index e70e684db42..65f6655d79d 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -1361,7 +1361,15 @@ class MergeRequest < ApplicationRecord def auto_merge_strategy return unless auto_merge_enabled? - merge_params['auto_merge_strategy'] || AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS + merge_params['auto_merge_strategy'] || default_auto_merge_strategy + end + + def default_auto_merge_strategy + if Feature.enabled?(:merge_when_checks_pass, project) + AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS + else + AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS + end end def auto_merge_strategy=(strategy) diff --git a/app/models/namespace.rb b/app/models/namespace.rb index a4c8c55bf00..9b03771857e 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -110,6 +110,8 @@ class Namespace < ApplicationRecord has_many :jira_connect_subscriptions, class_name: 'JiraConnectSubscription', foreign_key: :namespace_id, inverse_of: :namespace + has_many :import_source_users, class_name: 'Import::SourceUser', foreign_key: :namespace_id, inverse_of: :namespace + validates :owner, presence: true, if: ->(n) { n.owner_required? } validates :name, presence: true, diff --git a/app/models/project.rb b/app/models/project.rb index 9b395fc9dd3..def7d6151c0 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -3354,6 +3354,11 @@ class Project < ApplicationRecord false end + # Overridden in EE + def merge_trains_enabled? + false + end + private # overridden in EE diff --git a/app/policies/import/source_user_policy.rb b/app/policies/import/source_user_policy.rb new file mode 100644 index 00000000000..fa6e63e35fb --- /dev/null +++ b/app/policies/import/source_user_policy.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +module Import + class SourceUserPolicy < ::BasePolicy + condition(:admin_source_user_namespace) { can?(:admin_namespace, @subject.namespace) } + desc "User can administrate namespace" + + rule { admin_source_user_namespace }.policy do + enable :admin_import_source_user + end + end +end diff --git a/app/services/auto_merge/merge_when_checks_pass_service.rb b/app/services/auto_merge/merge_when_checks_pass_service.rb new file mode 100644 index 00000000000..ab1b1d51409 --- /dev/null +++ b/app/services/auto_merge/merge_when_checks_pass_service.rb @@ -0,0 +1,76 @@ +# frozen_string_literal: true + +# rubocop:disable Gitlab/BoundedContexts -- Existing module +module AutoMerge + class MergeWhenChecksPassService < AutoMerge::BaseService + extend Gitlab::Utils::Override + + override :execute + def execute(merge_request) + super do + add_system_note(merge_request) + end + end + + override :process + def process(merge_request) + logger.info("Processing Automerge - MWCP") + + return if merge_request.has_ci_enabled? && !merge_request.diff_head_pipeline_success? + + logger.info("Pipeline Success - MWCP") + + return unless merge_request.mergeable? + + logger.info("Merge request mergeable - MWCP") + + merge_request.merge_async(merge_request.merge_user_id, merge_request.merge_params) + end + + override :cancel + def cancel(merge_request) + super do + SystemNoteService.cancel_auto_merge(merge_request, project, current_user) + end + end + + override :abort + def abort(merge_request, reason) + super do + SystemNoteService.abort_auto_merge(merge_request, project, current_user, reason) + end + end + + override :available_for + def available_for?(merge_request) + super do + next false if Feature.disabled?(:merge_when_checks_pass, merge_request.project) + next false if merge_request.project.merge_trains_enabled? + next false if merge_request.mergeable? && !merge_request.diff_head_pipeline_considered_in_progress? + + next true + end + end + + private + + def add_system_note(merge_request) + return unless merge_request.saved_change_to_auto_merge_enabled? + + SystemNoteService.merge_when_checks_pass( + merge_request, + project, + current_user, + merge_request.merge_params.symbolize_keys[:sha] + ) + end + + def notify(merge_request) + return unless merge_request.saved_change_to_auto_merge_enabled? + + notification_service.async.merge_when_pipeline_succeeds(merge_request, + current_user) + end + end +end +# rubocop:enable Gitlab/BoundedContexts diff --git a/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb b/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb index 1d631f98ad8..143dfa3f8b8 100644 --- a/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb +++ b/app/services/auto_merge/merge_when_pipeline_succeeds_service.rb @@ -34,6 +34,8 @@ module AutoMerge def available_for?(merge_request) super do + next false if Feature.enabled?(:merge_when_checks_pass, merge_request.project) + merge_request.diff_head_pipeline_considered_in_progress? end end diff --git a/app/services/auto_merge_service.rb b/app/services/auto_merge_service.rb index 71a2a324136..8feec26661c 100644 --- a/app/services/auto_merge_service.rb +++ b/app/services/auto_merge_service.rb @@ -4,9 +4,9 @@ class AutoMergeService < BaseService include Gitlab::Utils::StrongMemoize STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS = 'merge_when_pipeline_succeeds' - # Currently only EE but will be moved to CE in (https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146730) + # `merge_when_checks_pass` enables auto-merge to be set before all merge checks are passing STRATEGY_MERGE_WHEN_CHECKS_PASS = 'merge_when_checks_pass' - STRATEGIES = [STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS].freeze + STRATEGIES = [STRATEGY_MERGE_WHEN_CHECKS_PASS, STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS].freeze class << self def all_strategies_ordered_by_preference diff --git a/app/services/import/source_users/base_service.rb b/app/services/import/source_users/base_service.rb new file mode 100644 index 00000000000..2a9146dc012 --- /dev/null +++ b/app/services/import/source_users/base_service.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module Import + module SourceUsers + class BaseService + private + + def error_invalid_permissions + ServiceResponse.error( + message: s_('Import|You have insufficient permissions to update the import source user'), + reason: :forbidden + ) + end + + def error_invalid_status + ServiceResponse.error( + message: s_('Import|Import source user has an invalid status for this operation'), + reason: :invalid_status, + payload: import_source_user + ) + end + end + end +end diff --git a/app/services/import/source_users/cancel_reassignment_service.rb b/app/services/import/source_users/cancel_reassignment_service.rb new file mode 100644 index 00000000000..e4a3a57a7c7 --- /dev/null +++ b/app/services/import/source_users/cancel_reassignment_service.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module Import + module SourceUsers + class CancelReassignmentService < BaseService + def initialize(import_source_user, current_user:) + @import_source_user = import_source_user + @current_user = current_user + end + + def execute + return error_invalid_permissions unless current_user.can?(:admin_import_source_user, import_source_user) + return error_invalid_status unless import_source_user.cancelable_status? + + if cancel_reassignment + ServiceResponse.success(payload: import_source_user) + else + ServiceResponse.error(payload: import_source_user, message: import_source_user.errors.full_messages) + end + end + + private + + attr_reader :import_source_user, :current_user, :params + + def cancel_reassignment + import_source_user.reassign_to_user = nil + import_source_user.reassigned_by_user = nil + import_source_user.cancel_reassignment + end + end + end +end diff --git a/app/services/import/source_users/keep_as_placeholder_service.rb b/app/services/import/source_users/keep_as_placeholder_service.rb new file mode 100644 index 00000000000..08c104d78ee --- /dev/null +++ b/app/services/import/source_users/keep_as_placeholder_service.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module Import + module SourceUsers + class KeepAsPlaceholderService < BaseService + def initialize(import_source_user, current_user:) + @import_source_user = import_source_user + @current_user = current_user + end + + def execute + return error_invalid_permissions unless current_user.can?(:admin_import_source_user, import_source_user) + return error_invalid_status unless import_source_user.reassignable_status? + + if keep_as_placeholder + ServiceResponse.success(payload: import_source_user) + else + ServiceResponse.error(payload: import_source_user, message: import_source_user.errors.full_messages) + end + end + + private + + attr_reader :import_source_user, :current_user, :params + + def keep_as_placeholder + import_source_user.reassigned_by_user = current_user + import_source_user.keep_as_placeholder + end + end + end +end diff --git a/app/services/import/source_users/reassign_service.rb b/app/services/import/source_users/reassign_service.rb new file mode 100644 index 00000000000..e880e70468c --- /dev/null +++ b/app/services/import/source_users/reassign_service.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Import + module SourceUsers + class ReassignService < BaseService + def initialize(import_source_user, assignee_user, current_user:) + @import_source_user = import_source_user + @current_user = current_user + @assignee_user = assignee_user + end + + def execute + return error_invalid_permissions unless current_user.can?(:admin_import_source_user, import_source_user) + return error_invalid_status unless import_source_user.reassignable_status? + return error_invalid_assignee unless valid_assignee?(assignee_user) + + if reassign_user + ServiceResponse.success(payload: import_source_user) + else + ServiceResponse.error(payload: import_source_user, message: import_source_user.errors.full_messages) + end + end + + private + + attr_reader :import_source_user, :current_user, :assignee_user + + def reassign_user + import_source_user.reassign_to_user = assignee_user + import_source_user.reassigned_by_user = current_user + import_source_user.reassign + end + + def error_invalid_assignee + ServiceResponse.error( + message: s_('Import|Only active regular, auditor, or administrator users can be assigned'), + reason: :invalid_assignee, + payload: import_source_user + ) + end + + def valid_assignee?(user) + user.present? && user.human? && user.active? + end + end + end +end diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 3d413ed9f7b..6f4a8aa689b 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -40,6 +40,10 @@ class SearchService # overridden in EE end + def search_type_errors + # overridden in EE + end + def global_search? project.blank? && group.blank? end @@ -58,10 +62,9 @@ class SearchService delegate :valid_terms_count?, :valid_query_length?, to: :params def search_results - strong_memoize(:search_results) do - abuse_detected? ? Gitlab::EmptySearchResults.new : search_service.execute - end + abuse_detected? ? ::Search::EmptySearchResults.new : search_service.execute end + strong_memoize_attr :search_results def search_objects(preload_method = nil) @search_objects ||= redact_unauthorized_results( diff --git a/app/views/admin/dev_ops_report/show.html.haml b/app/views/admin/dev_ops_report/show.html.haml index c079dd6b581..bfc8cd9cde9 100644 --- a/app/views/admin/dev_ops_report/show.html.haml +++ b/app/views/admin/dev_ops_report/show.html.haml @@ -1,7 +1,7 @@ - page_title _('DevOps Reports') - add_page_specific_style 'page_bundles/dev_ops_reports' -.gl-mt-3 +.gl-mt-3{ data: { event_tracking_load: 'true', event_tracking: 'view_admin_dev_ops_reports_pageload' } } - if show_adoption? = render_if_exists 'admin/dev_ops_report/devops_tabs' - else diff --git a/app/views/search/_results_list.html.haml b/app/views/search/_results_list.html.haml index 5d4033396b9..67ded568738 100644 --- a/app/views/search/_results_list.html.haml +++ b/app/views/search/_results_list.html.haml @@ -3,7 +3,7 @@ - if @timeout = render partial: "search/results/timeout" -- elsif @search_results.respond_to?(:failed?) && @search_results.failed? +- elsif @search_results.respond_to?(:failed?) && @search_results.failed?(@scope) = render partial: "search/results/error" - elsif @search_objects.blank? = render partial: "search/results/empty" diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml index bc0aa538d64..b28988e2e83 100644 --- a/app/views/search/show.html.haml +++ b/app/views/search/show.html.haml @@ -9,7 +9,7 @@ - group_attributes = @group&.attributes&.slice('id', 'name')&.merge(full_name: @group&.full_name) - project_attributes = @project&.attributes&.slice('id', 'namespace_id', 'name')&.merge(name_with_namespace: @project&.name_with_namespace) -- if @search_results && !(@search_results.respond_to?(:failed?) && @search_results.failed?) +- if @search_results && !(@search_results.respond_to?(:failed?) && @search_results.failed?(@scope)) - if @search_service_presenter.without_count? - page_description(_("%{scope} results for term '%{term}'") % { scope: @scope, term: @search_term }) - else diff --git a/config/events/view_admin_audit_logs_pageload.yml b/config/events/view_admin_audit_logs_pageload.yml new file mode 100644 index 00000000000..fc95d49aaf8 --- /dev/null +++ b/config/events/view_admin_audit_logs_pageload.yml @@ -0,0 +1,16 @@ +--- +description: Tracks pageviews for the admin audit events / logs page +internal_events: true +action: view_admin_audit_logs_pageload +identifiers: +- user +product_group: personal_productivity +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156830 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/config/events/view_admin_dev_ops_reports_pageload.yml b/config/events/view_admin_dev_ops_reports_pageload.yml new file mode 100644 index 00000000000..0f6d46e62ec --- /dev/null +++ b/config/events/view_admin_dev_ops_reports_pageload.yml @@ -0,0 +1,16 @@ +--- +description: Tracks pageviews for the admin devops reports page +internal_events: true +action: view_admin_dev_ops_reports_pageload +identifiers: +- user +product_group: personal_productivity +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156816 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/config/feature_flags/gitlab_com_derisk/ci_expand_variables_in_compare_to.yml b/config/feature_flags/gitlab_com_derisk/ci_expand_variables_in_compare_to.yml new file mode 100644 index 00000000000..9cd3269cf88 --- /dev/null +++ b/config/feature_flags/gitlab_com_derisk/ci_expand_variables_in_compare_to.yml @@ -0,0 +1,9 @@ +--- +name: ci_expand_variables_in_compare_to +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369916 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157147 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/466374 +milestone: '17.2' +group: group::pipeline security +type: gitlab_com_derisk +default_enabled: false diff --git a/config/gitlab_loose_foreign_keys.yml b/config/gitlab_loose_foreign_keys.yml index 7b545f01800..9b35cb3e6aa 100644 --- a/config/gitlab_loose_foreign_keys.yml +++ b/config/gitlab_loose_foreign_keys.yml @@ -193,10 +193,6 @@ dast_scanner_profiles_builds: - table: p_ci_builds column: ci_build_id on_delete: async_delete -dast_scanner_profiles_tags: - - table: tags - column: tag_id - on_delete: async_delete dast_site_profiles_builds: - table: ci_builds column: ci_build_id @@ -204,10 +200,6 @@ dast_site_profiles_builds: - table: p_ci_builds column: ci_build_id on_delete: async_delete -dast_site_profiles_pipelines: - - table: ci_pipelines - column: ci_pipeline_id - on_delete: async_delete deployment_clusters: - table: clusters column: cluster_id diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_view_admin_audit_logs_pageload_monthly.yml b/config/metrics/counts_28d/count_distinct_user_id_from_view_admin_audit_logs_pageload_monthly.yml new file mode 100644 index 00000000000..6cd4c5da0e9 --- /dev/null +++ b/config/metrics/counts_28d/count_distinct_user_id_from_view_admin_audit_logs_pageload_monthly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_view_admin_audit_logs_pageload_monthly +description: Monthly count of unique users who visited the admin audit events / audit logs page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156830 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_audit_logs_pageload + unique: user.id diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_monthly.yml b/config/metrics/counts_28d/count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_monthly.yml new file mode 100644 index 00000000000..b912b871e4f --- /dev/null +++ b/config/metrics/counts_28d/count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_monthly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_monthly +description: Monthly count of unique users who visit the devops reports page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156816 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_dev_ops_reports_pageload + unique: user.id diff --git a/config/metrics/counts_28d/count_total_view_admin_audit_logs_pageload_monthly.yml b/config/metrics/counts_28d/count_total_view_admin_audit_logs_pageload_monthly.yml new file mode 100644 index 00000000000..94438249d9b --- /dev/null +++ b/config/metrics/counts_28d/count_total_view_admin_audit_logs_pageload_monthly.yml @@ -0,0 +1,21 @@ +--- +key_path: counts.count_total_view_admin_audit_logs_pageload_monthly +description: Monthly count of total users who visited the admin audit events / audit logs page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156830 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_audit_logs_pageload diff --git a/config/metrics/counts_28d/count_total_view_admin_dev_ops_reports_pageload_monthly.yml b/config/metrics/counts_28d/count_total_view_admin_dev_ops_reports_pageload_monthly.yml new file mode 100644 index 00000000000..5e34d829c50 --- /dev/null +++ b/config/metrics/counts_28d/count_total_view_admin_dev_ops_reports_pageload_monthly.yml @@ -0,0 +1,21 @@ +--- +key_path: counts.count_total_view_admin_dev_ops_reports_pageload_monthly +description: Monthly count of total users who visit the admin devops reports page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156816 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_dev_ops_reports_pageload diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_view_admin_audit_logs_pageload_weekly.yml b/config/metrics/counts_7d/count_distinct_user_id_from_view_admin_audit_logs_pageload_weekly.yml new file mode 100644 index 00000000000..6ddeff80473 --- /dev/null +++ b/config/metrics/counts_7d/count_distinct_user_id_from_view_admin_audit_logs_pageload_weekly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_view_admin_audit_logs_pageload_weekly +description: Weekly count of unique users who visited the admin audit events / audit logs page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156830 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_audit_logs_pageload + unique: user.id diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_weekly.yml b/config/metrics/counts_7d/count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_weekly.yml new file mode 100644 index 00000000000..a82d57e7463 --- /dev/null +++ b/config/metrics/counts_7d/count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_weekly.yml @@ -0,0 +1,22 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_view_admin_dev_ops_reports_pageload_weekly +description: Weekly count of unique users who visit the devops reports page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156816 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_dev_ops_reports_pageload + unique: user.id diff --git a/config/metrics/counts_7d/count_total_view_admin_audit_logs_pageload_weekly.yml b/config/metrics/counts_7d/count_total_view_admin_audit_logs_pageload_weekly.yml new file mode 100644 index 00000000000..cfddf83d92a --- /dev/null +++ b/config/metrics/counts_7d/count_total_view_admin_audit_logs_pageload_weekly.yml @@ -0,0 +1,21 @@ +--- +key_path: counts.count_total_view_admin_audit_logs_pageload_weekly +description: Weekly count of total users who visited the admin audit events / audit logs page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156830 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_audit_logs_pageload diff --git a/config/metrics/counts_7d/count_total_view_admin_dev_ops_reports_pageload_weekly.yml b/config/metrics/counts_7d/count_total_view_admin_dev_ops_reports_pageload_weekly.yml new file mode 100644 index 00000000000..4fff5b7fee1 --- /dev/null +++ b/config/metrics/counts_7d/count_total_view_admin_dev_ops_reports_pageload_weekly.yml @@ -0,0 +1,21 @@ +--- +key_path: counts.count_total_view_admin_dev_ops_reports_pageload_weekly +description: Weekly count of total users who visit the admin devops reports page +product_group: personal_productivity +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.2' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156816 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: view_admin_dev_ops_reports_pageload diff --git a/db/database_connections/ci.yaml b/db/database_connections/ci.yaml index 5331765214e..212b053a98a 100644 --- a/db/database_connections/ci.yaml +++ b/db/database_connections/ci.yaml @@ -9,6 +9,7 @@ lock_gitlab_schemas: - gitlab_main_clusterwide - gitlab_main_cell - gitlab_pm + - gitlab_sec klass: Ci::ApplicationRecord # if CI database is not configured, use this database fallback_database: main diff --git a/db/database_connections/main.yaml b/db/database_connections/main.yaml index 9eadd26ec26..d46c25b0223 100644 --- a/db/database_connections/main.yaml +++ b/db/database_connections/main.yaml @@ -8,6 +8,7 @@ gitlab_schemas: - gitlab_pm lock_gitlab_schemas: - gitlab_ci + - gitlab_sec # Note that we use ActiveRecord::Base here and not ApplicationRecord. # This is deliberate, as: # - the load balancer must be enabled for _all_ models diff --git a/db/database_connections/sec.yaml b/db/database_connections/sec.yaml new file mode 100644 index 00000000000..a758d4e852b --- /dev/null +++ b/db/database_connections/sec.yaml @@ -0,0 +1,16 @@ +name: sec +description: Cell-local GitLab database holding Security feature related tables. +gitlab_schemas: + - gitlab_internal + - gitlab_shared + - gitlab_sec +lock_gitlab_schemas: + - gitlab_main + - gitlab_main_clusterwide + - gitlab_main_cell + - gitlab_ci + - gitlab_pm +klass: Gitlab::Database::SecApplicationRecord +# if Sec database is not configured, use this database +fallback_database: main +uses_load_balancing: true diff --git a/db/docs/dast_scanner_profiles_tags.yml b/db/docs/deleted_tables/dast_scanner_profiles_tags.yml similarity index 74% rename from db/docs/dast_scanner_profiles_tags.yml rename to db/docs/deleted_tables/dast_scanner_profiles_tags.yml index e423680f862..1c1614c8a67 100644 --- a/db/docs/dast_scanner_profiles_tags.yml +++ b/db/docs/deleted_tables/dast_scanner_profiles_tags.yml @@ -5,5 +5,7 @@ feature_categories: - dynamic_application_security_testing description: Join Table for Runner tags and DAST Scanner Profiles introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/104909 +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153443 milestone: '15.7' +removed_in_milestone: '17.2' gitlab_schema: gitlab_main diff --git a/db/docs/dast_site_profiles_pipelines.yml b/db/docs/deleted_tables/dast_site_profiles_pipelines.yml similarity index 74% rename from db/docs/dast_site_profiles_pipelines.yml rename to db/docs/deleted_tables/dast_site_profiles_pipelines.yml index 21f622fad6b..f32ca7bed34 100644 --- a/db/docs/dast_site_profiles_pipelines.yml +++ b/db/docs/deleted_tables/dast_site_profiles_pipelines.yml @@ -5,5 +5,7 @@ feature_categories: - dynamic_application_security_testing description: Join table between DAST Site Profiles and CI Pipelines introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60090 +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153443 milestone: '13.12' +removed_in_milestone: '17.2' gitlab_schema: gitlab_main diff --git a/db/post_migrate/20240625125416_drop_table_dast_scanner_profiles_tags.rb b/db/post_migrate/20240625125416_drop_table_dast_scanner_profiles_tags.rb new file mode 100644 index 00000000000..58a041996c0 --- /dev/null +++ b/db/post_migrate/20240625125416_drop_table_dast_scanner_profiles_tags.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class DropTableDastScannerProfilesTags < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + + def up + drop_table :dast_scanner_profiles_tags if table_exists? :dast_scanner_profiles_tags + end + + def down + unless table_exists?(:dast_scanner_profiles_tags) + create_table :dast_scanner_profiles_tags do |t| + t.bigint :dast_scanner_profile_id, null: false + t.bigint :tag_id, null: false + t.index :dast_scanner_profile_id, name: :i_dast_scanner_profiles_tags_on_scanner_profiles_id + t.index :tag_id, name: :index_dast_scanner_profiles_tags_on_tag_id + end + end + + return if foreign_key_exists?(:dast_scanner_profiles_tags, :dast_scanner_profiles, name: :fk_rails_deb79b7f19) + + add_concurrent_foreign_key( + :dast_scanner_profiles_tags, + :dast_scanner_profiles, + column: :dast_scanner_profile_id, + name: :fk_rails_deb79b7f19) + end +end diff --git a/db/post_migrate/20240625125434_drop_table_dast_site_profiles_pipelines.rb b/db/post_migrate/20240625125434_drop_table_dast_site_profiles_pipelines.rb new file mode 100644 index 00000000000..6e4f7d0a2df --- /dev/null +++ b/db/post_migrate/20240625125434_drop_table_dast_site_profiles_pipelines.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class DropTableDastSiteProfilesPipelines < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + + def up + drop_table :dast_site_profiles_pipelines if table_exists? :dast_site_profiles_pipelines + end + + def down + unless table_exists?(:dast_site_profiles_pipelines) + create_table :dast_site_profiles_pipelines, id: false do |t| + t.bigint :dast_site_profile_id, null: false + t.bigint :ci_pipeline_id, null: false + t.index [:dast_site_profile_id, :ci_pipeline_id], name: :dast_site_profiles_pipelines_pkey, unique: true + t.index :ci_pipeline_id, name: :index_dast_site_profiles_pipelines_on_ci_pipeline_id, unique: true + end + end + + add_primary_key_using_index( + :dast_site_profiles_pipelines, + :dast_site_profiles_pipelines_pkey, + :dast_site_profiles_pipelines_pkey + ) + + return if foreign_key_exists?(:dast_site_profiles_pipelines, :dast_site_profiles, name: :fk_cf05cf8fe1) + + add_concurrent_foreign_key( + :dast_site_profiles_pipelines, + :dast_site_profiles, + column: :dast_site_profile_id, + name: :fk_cf05cf8fe1) + + execute(<<~SQL) + COMMENT ON TABLE dast_site_profiles_pipelines IS '{"owner":"group::dynamic analysis","description":"Join table between DAST Site Profiles and CI Pipelines"}'; + SQL + end +end diff --git a/db/schema_migrations/20240625125416 b/db/schema_migrations/20240625125416 new file mode 100644 index 00000000000..02b77f036ca --- /dev/null +++ b/db/schema_migrations/20240625125416 @@ -0,0 +1 @@ +ca71b00a277e322207a71d3916a3db50c13a9bef9b85653236b017de6821a45f \ No newline at end of file diff --git a/db/schema_migrations/20240625125434 b/db/schema_migrations/20240625125434 new file mode 100644 index 00000000000..9cdfd263ce7 --- /dev/null +++ b/db/schema_migrations/20240625125434 @@ -0,0 +1 @@ +e197e135ef13ee40965df703ffbc23c830b39887c3914f3c541a128ddac0ba01 \ No newline at end of file diff --git a/db/sec_structure.sql b/db/sec_structure.sql new file mode 100644 index 00000000000..ac12bc008eb --- /dev/null +++ b/db/sec_structure.sql @@ -0,0 +1 @@ +db/structure.sql diff --git a/db/structure.sql b/db/structure.sql index d87b0a55ed2..cb040209916 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -1997,502 +1997,6 @@ RETURN NULL; END $$; -CREATE TABLE audit_events ( - id bigint NOT NULL, - author_id integer NOT NULL, - entity_id integer NOT NULL, - entity_type character varying NOT NULL, - details text, - ip_address inet, - author_name text, - entity_path text, - target_details text, - created_at timestamp without time zone NOT NULL, - target_type text, - target_id bigint, - CONSTRAINT check_492aaa021d CHECK ((char_length(entity_path) <= 5500)), - CONSTRAINT check_83ff8406e2 CHECK ((char_length(author_name) <= 255)), - CONSTRAINT check_97a8c868e7 CHECK ((char_length(target_type) <= 255)), - CONSTRAINT check_d493ec90b5 CHECK ((char_length(target_details) <= 5500)) -) -PARTITION BY RANGE (created_at); - -CREATE TABLE batched_background_migration_job_transition_logs ( - id bigint NOT NULL, - batched_background_migration_job_id bigint NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL, - previous_status smallint NOT NULL, - next_status smallint NOT NULL, - exception_class text, - exception_message text, - CONSTRAINT check_50e580811a CHECK ((char_length(exception_message) <= 1000)), - CONSTRAINT check_76e202c37a CHECK ((char_length(exception_class) <= 100)) -) -PARTITION BY RANGE (created_at); - -CREATE TABLE p_ci_build_names ( - build_id bigint NOT NULL, - partition_id bigint NOT NULL, - project_id bigint NOT NULL, - name text NOT NULL, - search_vector tsvector GENERATED ALWAYS AS (to_tsvector('english'::regconfig, COALESCE(name, ''::text))) STORED, - CONSTRAINT check_1722c96346 CHECK ((char_length(name) <= 255)) -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_build_sources ( - build_id bigint NOT NULL, - partition_id bigint NOT NULL, - project_id bigint NOT NULL, - source smallint NOT NULL -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_builds ( - status character varying, - finished_at timestamp without time zone, - created_at timestamp without time zone, - updated_at timestamp without time zone, - started_at timestamp without time zone, - runner_id_convert_to_bigint integer, - coverage double precision, - commit_id_convert_to_bigint integer, - name character varying, - options text, - allow_failure boolean DEFAULT false NOT NULL, - stage character varying, - trigger_request_id_convert_to_bigint integer, - stage_idx integer, - tag boolean, - ref character varying, - user_id_convert_to_bigint integer, - type character varying, - target_url character varying, - description character varying, - project_id_convert_to_bigint integer, - erased_by_id_convert_to_bigint integer, - erased_at timestamp without time zone, - artifacts_expire_at timestamp without time zone, - environment character varying, - "when" character varying, - yaml_variables text, - queued_at timestamp without time zone, - lock_version integer DEFAULT 0, - coverage_regex character varying, - auto_canceled_by_id_convert_to_bigint integer, - retried boolean, - protected boolean, - failure_reason integer, - scheduled_at timestamp with time zone, - token_encrypted character varying, - upstream_pipeline_id_convert_to_bigint integer, - resource_group_id bigint, - waiting_for_resource_at timestamp with time zone, - processed boolean, - scheduling_type smallint, - id bigint NOT NULL, - stage_id bigint, - partition_id bigint NOT NULL, - auto_canceled_by_partition_id bigint, - auto_canceled_by_id bigint, - commit_id bigint, - erased_by_id bigint, - project_id bigint, - runner_id bigint, - trigger_request_id bigint, - upstream_pipeline_id bigint, - user_id bigint, - execution_config_id bigint, - CONSTRAINT check_1e2fbd1b39 CHECK ((lock_version IS NOT NULL)) -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_builds_execution_configs ( - id bigint NOT NULL, - partition_id bigint NOT NULL, - project_id bigint NOT NULL, - pipeline_id bigint NOT NULL, - run_steps jsonb DEFAULT '{}'::jsonb NOT NULL -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_builds_metadata ( - project_id integer NOT NULL, - timeout integer, - timeout_source integer DEFAULT 1 NOT NULL, - interruptible boolean, - config_options jsonb, - config_variables jsonb, - has_exposed_artifacts boolean, - environment_auto_stop_in character varying(255), - expanded_environment_name character varying(255), - secrets jsonb DEFAULT '{}'::jsonb NOT NULL, - build_id bigint NOT NULL, - id bigint NOT NULL, - runtime_runner_features jsonb DEFAULT '{}'::jsonb NOT NULL, - id_tokens jsonb DEFAULT '{}'::jsonb NOT NULL, - partition_id bigint NOT NULL, - debug_trace_enabled boolean DEFAULT false NOT NULL, - exit_code smallint -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_job_annotations ( - id bigint NOT NULL, - partition_id bigint NOT NULL, - job_id bigint NOT NULL, - name text NOT NULL, - data jsonb DEFAULT '[]'::jsonb NOT NULL, - CONSTRAINT check_bac9224e45 CHECK ((char_length(name) <= 255)), - CONSTRAINT data_is_array CHECK ((jsonb_typeof(data) = 'array'::text)) -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_job_artifacts ( - project_id integer NOT NULL, - file_type integer NOT NULL, - size bigint, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL, - expire_at timestamp with time zone, - file character varying, - file_store integer DEFAULT 1, - file_sha256 bytea, - file_format smallint, - file_location smallint, - id bigint NOT NULL, - job_id bigint NOT NULL, - locked smallint DEFAULT 2, - partition_id bigint NOT NULL, - accessibility smallint DEFAULT 0 NOT NULL, - file_final_path text, - CONSTRAINT check_27f0f6dbab CHECK ((file_store IS NOT NULL)), - CONSTRAINT check_9f04410cf4 CHECK ((char_length(file_final_path) <= 1024)) -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_pipeline_variables ( - key character varying NOT NULL, - value text, - encrypted_value text, - encrypted_value_salt character varying, - encrypted_value_iv character varying, - variable_type smallint DEFAULT 1 NOT NULL, - partition_id bigint NOT NULL, - raw boolean DEFAULT false NOT NULL, - id bigint NOT NULL, - pipeline_id bigint NOT NULL -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_runner_machine_builds ( - partition_id bigint NOT NULL, - build_id bigint NOT NULL, - runner_machine_id bigint NOT NULL -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_stages ( - project_id integer, - created_at timestamp without time zone, - updated_at timestamp without time zone, - name character varying, - status integer, - lock_version integer DEFAULT 0, - "position" integer, - id bigint NOT NULL, - partition_id bigint NOT NULL, - pipeline_id bigint, - CONSTRAINT check_81b431e49b CHECK ((lock_version IS NOT NULL)) -) -PARTITION BY LIST (partition_id); - -CREATE SEQUENCE shared_audit_event_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -CREATE TABLE group_audit_events ( - id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, - created_at timestamp with time zone NOT NULL, - group_id bigint NOT NULL, - author_id bigint NOT NULL, - target_id bigint, - event_name text, - details text, - ip_address inet, - author_name text, - entity_path text, - target_details text, - target_type text, - CONSTRAINT group_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), - CONSTRAINT group_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), - CONSTRAINT group_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), - CONSTRAINT group_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), - CONSTRAINT group_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) -) -PARTITION BY RANGE (created_at); - -CREATE TABLE groups_visits ( - id bigint NOT NULL, - entity_id bigint NOT NULL, - user_id bigint NOT NULL, - visited_at timestamp with time zone NOT NULL -) -PARTITION BY RANGE (visited_at); - -CREATE TABLE incident_management_pending_alert_escalations ( - id bigint NOT NULL, - rule_id bigint NOT NULL, - alert_id bigint NOT NULL, - process_at timestamp with time zone NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL -) -PARTITION BY RANGE (process_at); - -CREATE TABLE incident_management_pending_issue_escalations ( - id bigint NOT NULL, - rule_id bigint NOT NULL, - issue_id bigint NOT NULL, - process_at timestamp with time zone NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL -) -PARTITION BY RANGE (process_at); - -CREATE TABLE instance_audit_events ( - id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, - created_at timestamp with time zone NOT NULL, - author_id bigint NOT NULL, - target_id bigint, - event_name text, - details text, - ip_address inet, - author_name text, - entity_path text, - target_details text, - target_type text, - CONSTRAINT instance_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), - CONSTRAINT instance_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), - CONSTRAINT instance_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), - CONSTRAINT instance_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), - CONSTRAINT instance_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) -) -PARTITION BY RANGE (created_at); - -CREATE TABLE loose_foreign_keys_deleted_records ( - id bigint NOT NULL, - partition bigint DEFAULT 1 NOT NULL, - primary_key_value bigint NOT NULL, - status smallint DEFAULT 1 NOT NULL, - created_at timestamp with time zone DEFAULT now() NOT NULL, - fully_qualified_table_name text NOT NULL, - consume_after timestamp with time zone DEFAULT now(), - cleanup_attempts smallint DEFAULT 0, - CONSTRAINT check_1a541f3235 CHECK ((char_length(fully_qualified_table_name) <= 150)) -) -PARTITION BY LIST (partition); - -CREATE TABLE merge_request_diff_commits_b5377a7a34 ( - authored_date timestamp without time zone, - committed_date timestamp without time zone, - sha bytea NOT NULL, - message text, - trailers jsonb DEFAULT '{}'::jsonb NOT NULL, - commit_author_id bigint, - committer_id bigint, - merge_request_diff_id bigint NOT NULL, - relative_order integer NOT NULL -) -PARTITION BY RANGE (merge_request_diff_id); - -CREATE TABLE merge_request_diff_files_99208b8fac ( - new_file boolean NOT NULL, - renamed_file boolean NOT NULL, - deleted_file boolean NOT NULL, - too_large boolean NOT NULL, - a_mode character varying NOT NULL, - b_mode character varying NOT NULL, - new_path text NOT NULL, - old_path text NOT NULL, - diff text, - "binary" boolean, - external_diff_offset integer, - external_diff_size integer, - generated boolean, - merge_request_diff_id bigint NOT NULL, - relative_order integer NOT NULL -) -PARTITION BY RANGE (merge_request_diff_id); - -CREATE TABLE p_batched_git_ref_updates_deletions ( - id bigint NOT NULL, - project_id bigint NOT NULL, - partition_id bigint DEFAULT 1 NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL, - status smallint DEFAULT 1 NOT NULL, - ref text NOT NULL, - CONSTRAINT check_f322d53b92 CHECK ((char_length(ref) <= 1024)) -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_catalog_resource_component_usages ( - id bigint NOT NULL, - component_id bigint NOT NULL, - catalog_resource_id bigint NOT NULL, - project_id bigint NOT NULL, - used_by_project_id bigint NOT NULL, - used_date date NOT NULL -) -PARTITION BY RANGE (used_date); - -CREATE TABLE p_catalog_resource_sync_events ( - id bigint NOT NULL, - catalog_resource_id bigint NOT NULL, - project_id bigint NOT NULL, - partition_id bigint DEFAULT 1 NOT NULL, - status smallint DEFAULT 1 NOT NULL, - created_at timestamp with time zone DEFAULT now() NOT NULL, - updated_at timestamp with time zone DEFAULT now() NOT NULL -) -PARTITION BY LIST (partition_id); - -CREATE TABLE p_ci_finished_build_ch_sync_events ( - build_id bigint NOT NULL, - partition bigint DEFAULT 1 NOT NULL, - build_finished_at timestamp without time zone NOT NULL, - processed boolean DEFAULT false NOT NULL -) -PARTITION BY LIST (partition); - -CREATE TABLE project_audit_events ( - id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, - created_at timestamp with time zone NOT NULL, - project_id bigint NOT NULL, - author_id bigint NOT NULL, - target_id bigint, - event_name text, - details text, - ip_address inet, - author_name text, - entity_path text, - target_details text, - target_type text, - CONSTRAINT project_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), - CONSTRAINT project_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), - CONSTRAINT project_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), - CONSTRAINT project_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), - CONSTRAINT project_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) -) -PARTITION BY RANGE (created_at); - -CREATE TABLE projects_visits ( - id bigint NOT NULL, - entity_id bigint NOT NULL, - user_id bigint NOT NULL, - visited_at timestamp with time zone NOT NULL -) -PARTITION BY RANGE (visited_at); - -CREATE TABLE security_findings ( - id bigint NOT NULL, - scan_id bigint NOT NULL, - scanner_id bigint NOT NULL, - severity smallint NOT NULL, - confidence smallint, - project_fingerprint text, - deduplicated boolean DEFAULT false NOT NULL, - uuid uuid, - overridden_uuid uuid, - partition_number integer DEFAULT 1 NOT NULL, - finding_data jsonb DEFAULT '{}'::jsonb NOT NULL, - CONSTRAINT check_6c2851a8c9 CHECK ((uuid IS NOT NULL)), - CONSTRAINT check_b9508c6df8 CHECK ((char_length(project_fingerprint) <= 40)) -) -PARTITION BY LIST (partition_number); - -CREATE TABLE user_audit_events ( - id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, - created_at timestamp with time zone NOT NULL, - user_id bigint NOT NULL, - author_id bigint NOT NULL, - target_id bigint, - event_name text, - details text, - ip_address inet, - author_name text, - entity_path text, - target_details text, - target_type text, - CONSTRAINT user_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), - CONSTRAINT user_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), - CONSTRAINT user_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), - CONSTRAINT user_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), - CONSTRAINT user_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) -) -PARTITION BY RANGE (created_at); - -CREATE TABLE value_stream_dashboard_counts ( - id bigint NOT NULL, - namespace_id bigint NOT NULL, - count bigint NOT NULL, - recorded_at timestamp with time zone NOT NULL, - metric smallint NOT NULL -) -PARTITION BY RANGE (recorded_at); - -CREATE TABLE verification_codes ( - created_at timestamp with time zone DEFAULT now() NOT NULL, - visitor_id_code text NOT NULL, - code text NOT NULL, - phone text NOT NULL, - CONSTRAINT check_9b84e6aaff CHECK ((char_length(code) <= 8)), - CONSTRAINT check_ccc542256b CHECK ((char_length(visitor_id_code) <= 64)), - CONSTRAINT check_f5684c195b CHECK ((char_length(phone) <= 50)) -) -PARTITION BY RANGE (created_at); - -COMMENT ON TABLE verification_codes IS 'JiHu-specific table'; - -CREATE TABLE web_hook_logs ( - id bigint NOT NULL, - web_hook_id integer NOT NULL, - trigger character varying, - url character varying, - request_headers text, - request_data text, - response_headers text, - response_body text, - response_status character varying, - execution_duration double precision, - internal_error_message character varying, - updated_at timestamp without time zone NOT NULL, - created_at timestamp without time zone NOT NULL, - url_hash text -) -PARTITION BY RANGE (created_at); - -CREATE TABLE zoekt_tasks ( - id bigint NOT NULL, - partition_id bigint DEFAULT 1 NOT NULL, - zoekt_node_id bigint NOT NULL, - zoekt_repository_id bigint NOT NULL, - project_identifier bigint NOT NULL, - perform_at timestamp with time zone DEFAULT now() NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL, - state smallint DEFAULT 0 NOT NULL, - task_type smallint NOT NULL, - retries_left smallint DEFAULT 5 NOT NULL, - CONSTRAINT c_zoekt_tasks_on_retries_left CHECK (((retries_left > 0) OR ((retries_left = 0) AND (state = 255)))) -) -PARTITION BY LIST (partition_id); - CREATE TABLE analytics_cycle_analytics_issue_stage_events ( stage_event_hash_id bigint NOT NULL, issue_id bigint NOT NULL, @@ -6097,6 +5601,26 @@ CREATE SEQUENCE atlassian_identities_user_id_seq ALTER SEQUENCE atlassian_identities_user_id_seq OWNED BY atlassian_identities.user_id; +CREATE TABLE audit_events ( + id bigint NOT NULL, + author_id integer NOT NULL, + entity_id integer NOT NULL, + entity_type character varying NOT NULL, + details text, + ip_address inet, + author_name text, + entity_path text, + target_details text, + created_at timestamp without time zone NOT NULL, + target_type text, + target_id bigint, + CONSTRAINT check_492aaa021d CHECK ((char_length(entity_path) <= 5500)), + CONSTRAINT check_83ff8406e2 CHECK ((char_length(author_name) <= 255)), + CONSTRAINT check_97a8c868e7 CHECK ((char_length(target_type) <= 255)), + CONSTRAINT check_d493ec90b5 CHECK ((char_length(target_details) <= 5500)) +) +PARTITION BY RANGE (created_at); + CREATE TABLE audit_events_amazon_s3_configurations ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -6577,6 +6101,20 @@ CREATE TABLE banned_users ( user_id bigint NOT NULL ); +CREATE TABLE batched_background_migration_job_transition_logs ( + id bigint NOT NULL, + batched_background_migration_job_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + previous_status smallint NOT NULL, + next_status smallint NOT NULL, + exception_class text, + exception_message text, + CONSTRAINT check_50e580811a CHECK ((char_length(exception_message) <= 1000)), + CONSTRAINT check_76e202c37a CHECK ((char_length(exception_class) <= 100)) +) +PARTITION BY RANGE (created_at); + CREATE SEQUENCE batched_background_migration_job_transition_logs_id_seq START WITH 1 INCREMENT BY 1 @@ -7362,6 +6900,65 @@ CREATE TABLE ci_build_trace_metadata ( partition_id bigint NOT NULL ); +CREATE TABLE p_ci_builds ( + status character varying, + finished_at timestamp without time zone, + created_at timestamp without time zone, + updated_at timestamp without time zone, + started_at timestamp without time zone, + runner_id_convert_to_bigint integer, + coverage double precision, + commit_id_convert_to_bigint integer, + name character varying, + options text, + allow_failure boolean DEFAULT false NOT NULL, + stage character varying, + trigger_request_id_convert_to_bigint integer, + stage_idx integer, + tag boolean, + ref character varying, + user_id_convert_to_bigint integer, + type character varying, + target_url character varying, + description character varying, + project_id_convert_to_bigint integer, + erased_by_id_convert_to_bigint integer, + erased_at timestamp without time zone, + artifacts_expire_at timestamp without time zone, + environment character varying, + "when" character varying, + yaml_variables text, + queued_at timestamp without time zone, + lock_version integer DEFAULT 0, + coverage_regex character varying, + auto_canceled_by_id_convert_to_bigint integer, + retried boolean, + protected boolean, + failure_reason integer, + scheduled_at timestamp with time zone, + token_encrypted character varying, + upstream_pipeline_id_convert_to_bigint integer, + resource_group_id bigint, + waiting_for_resource_at timestamp with time zone, + processed boolean, + scheduling_type smallint, + id bigint NOT NULL, + stage_id bigint, + partition_id bigint NOT NULL, + auto_canceled_by_partition_id bigint, + auto_canceled_by_id bigint, + commit_id bigint, + erased_by_id bigint, + project_id bigint, + runner_id bigint, + trigger_request_id bigint, + upstream_pipeline_id bigint, + user_id bigint, + execution_config_id bigint, + CONSTRAINT check_1e2fbd1b39 CHECK ((lock_version IS NOT NULL)) +) +PARTITION BY LIST (partition_id); + CREATE TABLE ci_builds ( status character varying, finished_at timestamp without time zone, @@ -7429,6 +7026,27 @@ CREATE SEQUENCE ci_builds_id_seq ALTER SEQUENCE ci_builds_id_seq OWNED BY p_ci_builds.id; +CREATE TABLE p_ci_builds_metadata ( + project_id integer NOT NULL, + timeout integer, + timeout_source integer DEFAULT 1 NOT NULL, + interruptible boolean, + config_options jsonb, + config_variables jsonb, + has_exposed_artifacts boolean, + environment_auto_stop_in character varying(255), + expanded_environment_name character varying(255), + secrets jsonb DEFAULT '{}'::jsonb NOT NULL, + build_id bigint NOT NULL, + id bigint NOT NULL, + runtime_runner_features jsonb DEFAULT '{}'::jsonb NOT NULL, + id_tokens jsonb DEFAULT '{}'::jsonb NOT NULL, + partition_id bigint NOT NULL, + debug_trace_enabled boolean DEFAULT false NOT NULL, + exit_code smallint +) +PARTITION BY LIST (partition_id); + CREATE SEQUENCE ci_builds_metadata_id_seq START WITH 1 INCREMENT BY 1 @@ -7612,6 +7230,29 @@ CREATE TABLE ci_job_artifact_states ( CONSTRAINT check_df832b66ea CHECK ((char_length(verification_failure) <= 255)) ); +CREATE TABLE p_ci_job_artifacts ( + project_id integer NOT NULL, + file_type integer NOT NULL, + size bigint, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + expire_at timestamp with time zone, + file character varying, + file_store integer DEFAULT 1, + file_sha256 bytea, + file_format smallint, + file_location smallint, + id bigint NOT NULL, + job_id bigint NOT NULL, + locked smallint DEFAULT 2, + partition_id bigint NOT NULL, + accessibility smallint DEFAULT 0 NOT NULL, + file_final_path text, + CONSTRAINT check_27f0f6dbab CHECK ((file_store IS NOT NULL)), + CONSTRAINT check_9f04410cf4 CHECK ((char_length(file_final_path) <= 1024)) +) +PARTITION BY LIST (partition_id); + CREATE TABLE ci_job_artifacts ( project_id integer NOT NULL, file_type integer NOT NULL, @@ -7910,6 +7551,20 @@ CREATE SEQUENCE ci_pipeline_schedules_id_seq ALTER SEQUENCE ci_pipeline_schedules_id_seq OWNED BY ci_pipeline_schedules.id; +CREATE TABLE p_ci_pipeline_variables ( + key character varying NOT NULL, + value text, + encrypted_value text, + encrypted_value_salt character varying, + encrypted_value_iv character varying, + variable_type smallint DEFAULT 1 NOT NULL, + partition_id bigint NOT NULL, + raw boolean DEFAULT false NOT NULL, + id bigint NOT NULL, + pipeline_id bigint NOT NULL +) +PARTITION BY LIST (partition_id); + CREATE TABLE ci_pipeline_variables ( key character varying NOT NULL, value text, @@ -8297,6 +7952,21 @@ CREATE SEQUENCE ci_sources_projects_id_seq ALTER SEQUENCE ci_sources_projects_id_seq OWNED BY ci_sources_projects.id; +CREATE TABLE p_ci_stages ( + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + name character varying, + status integer, + lock_version integer DEFAULT 0, + "position" integer, + id bigint NOT NULL, + partition_id bigint NOT NULL, + pipeline_id bigint, + CONSTRAINT check_81b431e49b CHECK ((lock_version IS NOT NULL)) +) +PARTITION BY LIST (partition_id); + CREATE TABLE ci_stages ( project_id integer, created_at timestamp without time zone, @@ -9183,21 +8853,6 @@ CREATE SEQUENCE dast_scanner_profiles_id_seq ALTER SEQUENCE dast_scanner_profiles_id_seq OWNED BY dast_scanner_profiles.id; -CREATE TABLE dast_scanner_profiles_tags ( - id bigint NOT NULL, - dast_scanner_profile_id bigint NOT NULL, - tag_id bigint NOT NULL -); - -CREATE SEQUENCE dast_scanner_profiles_tags_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE dast_scanner_profiles_tags_id_seq OWNED BY dast_scanner_profiles_tags.id; - CREATE TABLE dast_site_profile_secret_variables ( id bigint NOT NULL, dast_site_profile_id bigint NOT NULL, @@ -9266,13 +8921,6 @@ CREATE SEQUENCE dast_site_profiles_id_seq ALTER SEQUENCE dast_site_profiles_id_seq OWNED BY dast_site_profiles.id; -CREATE TABLE dast_site_profiles_pipelines ( - dast_site_profile_id bigint NOT NULL, - ci_pipeline_id bigint NOT NULL -); - -COMMENT ON TABLE dast_site_profiles_pipelines IS '{"owner":"group::dynamic analysis","description":"Join table between DAST Site Profiles and CI Pipelines"}'; - CREATE TABLE dast_site_tokens ( id bigint NOT NULL, project_id bigint NOT NULL, @@ -10729,6 +10377,34 @@ CREATE SEQUENCE grafana_integrations_id_seq ALTER SEQUENCE grafana_integrations_id_seq OWNED BY grafana_integrations.id; +CREATE SEQUENCE shared_audit_event_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +CREATE TABLE group_audit_events ( + id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, + created_at timestamp with time zone NOT NULL, + group_id bigint NOT NULL, + author_id bigint NOT NULL, + target_id bigint, + event_name text, + details text, + ip_address inet, + author_name text, + entity_path text, + target_details text, + target_type text, + CONSTRAINT group_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), + CONSTRAINT group_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), + CONSTRAINT group_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), + CONSTRAINT group_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), + CONSTRAINT group_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) +) +PARTITION BY RANGE (created_at); + CREATE TABLE group_crm_settings ( group_id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -10981,6 +10657,14 @@ CREATE SEQUENCE group_wiki_repository_states_id_seq ALTER SEQUENCE group_wiki_repository_states_id_seq OWNED BY group_wiki_repository_states.id; +CREATE TABLE groups_visits ( + id bigint NOT NULL, + entity_id bigint NOT NULL, + user_id bigint NOT NULL, + visited_at timestamp with time zone NOT NULL +) +PARTITION BY RANGE (visited_at); + CREATE SEQUENCE groups_visits_id_seq START WITH 1 INCREMENT BY 1 @@ -11245,6 +10929,16 @@ CREATE SEQUENCE incident_management_oncall_shifts_id_seq ALTER SEQUENCE incident_management_oncall_shifts_id_seq OWNED BY incident_management_oncall_shifts.id; +CREATE TABLE incident_management_pending_alert_escalations ( + id bigint NOT NULL, + rule_id bigint NOT NULL, + alert_id bigint NOT NULL, + process_at timestamp with time zone NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +) +PARTITION BY RANGE (process_at); + CREATE SEQUENCE incident_management_pending_alert_escalations_id_seq START WITH 1 INCREMENT BY 1 @@ -11254,6 +10948,16 @@ CREATE SEQUENCE incident_management_pending_alert_escalations_id_seq ALTER SEQUENCE incident_management_pending_alert_escalations_id_seq OWNED BY incident_management_pending_alert_escalations.id; +CREATE TABLE incident_management_pending_issue_escalations ( + id bigint NOT NULL, + rule_id bigint NOT NULL, + issue_id bigint NOT NULL, + process_at timestamp with time zone NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +) +PARTITION BY RANGE (process_at); + CREATE SEQUENCE incident_management_pending_issue_escalations_id_seq START WITH 1 INCREMENT BY 1 @@ -11362,6 +11066,26 @@ CREATE SEQUENCE insights_id_seq ALTER SEQUENCE insights_id_seq OWNED BY insights.id; +CREATE TABLE instance_audit_events ( + id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, + created_at timestamp with time zone NOT NULL, + author_id bigint NOT NULL, + target_id bigint, + event_name text, + details text, + ip_address inet, + author_name text, + entity_path text, + target_details text, + target_type text, + CONSTRAINT instance_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), + CONSTRAINT instance_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), + CONSTRAINT instance_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), + CONSTRAINT instance_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), + CONSTRAINT instance_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) +) +PARTITION BY RANGE (created_at); + CREATE TABLE instance_audit_events_streaming_headers ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -12136,6 +11860,19 @@ CREATE SEQUENCE lists_id_seq ALTER SEQUENCE lists_id_seq OWNED BY lists.id; +CREATE TABLE loose_foreign_keys_deleted_records ( + id bigint NOT NULL, + partition bigint DEFAULT 1 NOT NULL, + primary_key_value bigint NOT NULL, + status smallint DEFAULT 1 NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + fully_qualified_table_name text NOT NULL, + consume_after timestamp with time zone DEFAULT now(), + cleanup_attempts smallint DEFAULT 0, + CONSTRAINT check_1a541f3235 CHECK ((char_length(fully_qualified_table_name) <= 150)) +) +PARTITION BY LIST (partition); + CREATE SEQUENCE loose_foreign_keys_deleted_records_id_seq START WITH 1 INCREMENT BY 1 @@ -12376,6 +12113,19 @@ CREATE TABLE merge_request_diff_commits ( committer_id bigint ); +CREATE TABLE merge_request_diff_commits_b5377a7a34 ( + authored_date timestamp without time zone, + committed_date timestamp without time zone, + sha bytea NOT NULL, + message text, + trailers jsonb DEFAULT '{}'::jsonb NOT NULL, + commit_author_id bigint, + committer_id bigint, + merge_request_diff_id bigint NOT NULL, + relative_order integer NOT NULL +) +PARTITION BY RANGE (merge_request_diff_id); + CREATE TABLE merge_request_diff_details ( merge_request_diff_id bigint NOT NULL, verification_retry_at timestamp with time zone, @@ -12415,6 +12165,25 @@ CREATE TABLE merge_request_diff_files ( generated boolean ); +CREATE TABLE merge_request_diff_files_99208b8fac ( + new_file boolean NOT NULL, + renamed_file boolean NOT NULL, + deleted_file boolean NOT NULL, + too_large boolean NOT NULL, + a_mode character varying NOT NULL, + b_mode character varying NOT NULL, + new_path text NOT NULL, + old_path text NOT NULL, + diff text, + "binary" boolean, + external_diff_offset integer, + external_diff_size integer, + generated boolean, + merge_request_diff_id bigint NOT NULL, + relative_order integer NOT NULL +) +PARTITION BY RANGE (merge_request_diff_id); + CREATE TABLE merge_request_diffs ( id integer NOT NULL, state character varying, @@ -13703,6 +13472,18 @@ CREATE SEQUENCE organizations_id_seq ALTER SEQUENCE organizations_id_seq OWNED BY organizations.id; +CREATE TABLE p_batched_git_ref_updates_deletions ( + id bigint NOT NULL, + project_id bigint NOT NULL, + partition_id bigint DEFAULT 1 NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status smallint DEFAULT 1 NOT NULL, + ref text NOT NULL, + CONSTRAINT check_f322d53b92 CHECK ((char_length(ref) <= 1024)) +) +PARTITION BY LIST (partition_id); + CREATE SEQUENCE p_batched_git_ref_updates_deletions_id_seq START WITH 1 INCREMENT BY 1 @@ -13712,6 +13493,16 @@ CREATE SEQUENCE p_batched_git_ref_updates_deletions_id_seq ALTER SEQUENCE p_batched_git_ref_updates_deletions_id_seq OWNED BY p_batched_git_ref_updates_deletions.id; +CREATE TABLE p_catalog_resource_component_usages ( + id bigint NOT NULL, + component_id bigint NOT NULL, + catalog_resource_id bigint NOT NULL, + project_id bigint NOT NULL, + used_by_project_id bigint NOT NULL, + used_date date NOT NULL +) +PARTITION BY RANGE (used_date); + CREATE SEQUENCE p_catalog_resource_component_usages_id_seq START WITH 1 INCREMENT BY 1 @@ -13721,6 +13512,17 @@ CREATE SEQUENCE p_catalog_resource_component_usages_id_seq ALTER SEQUENCE p_catalog_resource_component_usages_id_seq OWNED BY p_catalog_resource_component_usages.id; +CREATE TABLE p_catalog_resource_sync_events ( + id bigint NOT NULL, + catalog_resource_id bigint NOT NULL, + project_id bigint NOT NULL, + partition_id bigint DEFAULT 1 NOT NULL, + status smallint DEFAULT 1 NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL +) +PARTITION BY LIST (partition_id); + CREATE SEQUENCE p_catalog_resource_sync_events_id_seq START WITH 1 INCREMENT BY 1 @@ -13730,6 +13532,33 @@ CREATE SEQUENCE p_catalog_resource_sync_events_id_seq ALTER SEQUENCE p_catalog_resource_sync_events_id_seq OWNED BY p_catalog_resource_sync_events.id; +CREATE TABLE p_ci_build_names ( + build_id bigint NOT NULL, + partition_id bigint NOT NULL, + project_id bigint NOT NULL, + name text NOT NULL, + search_vector tsvector GENERATED ALWAYS AS (to_tsvector('english'::regconfig, COALESCE(name, ''::text))) STORED, + CONSTRAINT check_1722c96346 CHECK ((char_length(name) <= 255)) +) +PARTITION BY LIST (partition_id); + +CREATE TABLE p_ci_build_sources ( + build_id bigint NOT NULL, + partition_id bigint NOT NULL, + project_id bigint NOT NULL, + source smallint NOT NULL +) +PARTITION BY LIST (partition_id); + +CREATE TABLE p_ci_builds_execution_configs ( + id bigint NOT NULL, + partition_id bigint NOT NULL, + project_id bigint NOT NULL, + pipeline_id bigint NOT NULL, + run_steps jsonb DEFAULT '{}'::jsonb NOT NULL +) +PARTITION BY LIST (partition_id); + CREATE SEQUENCE p_ci_builds_execution_configs_id_seq START WITH 1 INCREMENT BY 1 @@ -13739,6 +13568,25 @@ CREATE SEQUENCE p_ci_builds_execution_configs_id_seq ALTER SEQUENCE p_ci_builds_execution_configs_id_seq OWNED BY p_ci_builds_execution_configs.id; +CREATE TABLE p_ci_finished_build_ch_sync_events ( + build_id bigint NOT NULL, + partition bigint DEFAULT 1 NOT NULL, + build_finished_at timestamp without time zone NOT NULL, + processed boolean DEFAULT false NOT NULL +) +PARTITION BY LIST (partition); + +CREATE TABLE p_ci_job_annotations ( + id bigint NOT NULL, + partition_id bigint NOT NULL, + job_id bigint NOT NULL, + name text NOT NULL, + data jsonb DEFAULT '[]'::jsonb NOT NULL, + CONSTRAINT check_bac9224e45 CHECK ((char_length(name) <= 255)), + CONSTRAINT data_is_array CHECK ((jsonb_typeof(data) = 'array'::text)) +) +PARTITION BY LIST (partition_id); + CREATE SEQUENCE p_ci_job_annotations_id_seq START WITH 1 INCREMENT BY 1 @@ -13748,6 +13596,13 @@ CREATE SEQUENCE p_ci_job_annotations_id_seq ALTER SEQUENCE p_ci_job_annotations_id_seq OWNED BY p_ci_job_annotations.id; +CREATE TABLE p_ci_runner_machine_builds ( + partition_id bigint NOT NULL, + build_id bigint NOT NULL, + runner_machine_id bigint NOT NULL +) +PARTITION BY LIST (partition_id); + CREATE TABLE packages_build_infos ( id bigint NOT NULL, package_id integer NOT NULL, @@ -15325,6 +15180,27 @@ CREATE SEQUENCE project_aliases_id_seq ALTER SEQUENCE project_aliases_id_seq OWNED BY project_aliases.id; +CREATE TABLE project_audit_events ( + id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, + created_at timestamp with time zone NOT NULL, + project_id bigint NOT NULL, + author_id bigint NOT NULL, + target_id bigint, + event_name text, + details text, + ip_address inet, + author_name text, + entity_path text, + target_details text, + target_type text, + CONSTRAINT project_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), + CONSTRAINT project_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), + CONSTRAINT project_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), + CONSTRAINT project_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), + CONSTRAINT project_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) +) +PARTITION BY RANGE (created_at); + CREATE TABLE project_authorizations ( user_id integer NOT NULL, project_id integer NOT NULL, @@ -15998,6 +15874,14 @@ CREATE SEQUENCE projects_sync_events_id_seq ALTER SEQUENCE projects_sync_events_id_seq OWNED BY projects_sync_events.id; +CREATE TABLE projects_visits ( + id bigint NOT NULL, + entity_id bigint NOT NULL, + user_id bigint NOT NULL, + visited_at timestamp with time zone NOT NULL +) +PARTITION BY RANGE (visited_at); + CREATE SEQUENCE projects_visits_id_seq START WITH 1 INCREMENT BY 1 @@ -17078,6 +16962,23 @@ CREATE SEQUENCE search_namespace_index_assignments_id_seq ALTER SEQUENCE search_namespace_index_assignments_id_seq OWNED BY search_namespace_index_assignments.id; +CREATE TABLE security_findings ( + id bigint NOT NULL, + scan_id bigint NOT NULL, + scanner_id bigint NOT NULL, + severity smallint NOT NULL, + confidence smallint, + project_fingerprint text, + deduplicated boolean DEFAULT false NOT NULL, + uuid uuid, + overridden_uuid uuid, + partition_number integer DEFAULT 1 NOT NULL, + finding_data jsonb DEFAULT '{}'::jsonb NOT NULL, + CONSTRAINT check_6c2851a8c9 CHECK ((uuid IS NOT NULL)), + CONSTRAINT check_b9508c6df8 CHECK ((char_length(project_fingerprint) <= 40)) +) +PARTITION BY LIST (partition_number); + CREATE SEQUENCE security_findings_id_seq START WITH 1 INCREMENT BY 1 @@ -18242,6 +18143,27 @@ CREATE SEQUENCE user_agent_details_id_seq ALTER SEQUENCE user_agent_details_id_seq OWNED BY user_agent_details.id; +CREATE TABLE user_audit_events ( + id bigint DEFAULT nextval('shared_audit_event_id_seq'::regclass) NOT NULL, + created_at timestamp with time zone NOT NULL, + user_id bigint NOT NULL, + author_id bigint NOT NULL, + target_id bigint, + event_name text, + details text, + ip_address inet, + author_name text, + entity_path text, + target_details text, + target_type text, + CONSTRAINT user_audit_events_author_name_check CHECK ((char_length(author_name) <= 255)), + CONSTRAINT user_audit_events_entity_path_check CHECK ((char_length(entity_path) <= 5500)), + CONSTRAINT user_audit_events_event_name_check CHECK ((char_length(event_name) <= 255)), + CONSTRAINT user_audit_events_target_details_check CHECK ((char_length(target_details) <= 5500)), + CONSTRAINT user_audit_events_target_type_check CHECK ((char_length(target_type) <= 255)) +) +PARTITION BY RANGE (created_at); + CREATE TABLE user_broadcast_message_dismissals ( id bigint NOT NULL, user_id bigint NOT NULL, @@ -18662,6 +18584,15 @@ CREATE TABLE value_stream_dashboard_aggregations ( enabled boolean DEFAULT true NOT NULL ); +CREATE TABLE value_stream_dashboard_counts ( + id bigint NOT NULL, + namespace_id bigint NOT NULL, + count bigint NOT NULL, + recorded_at timestamp with time zone NOT NULL, + metric smallint NOT NULL +) +PARTITION BY RANGE (recorded_at); + CREATE SEQUENCE value_stream_dashboard_counts_id_seq START WITH 1 INCREMENT BY 1 @@ -18671,6 +18602,19 @@ CREATE SEQUENCE value_stream_dashboard_counts_id_seq ALTER SEQUENCE value_stream_dashboard_counts_id_seq OWNED BY value_stream_dashboard_counts.id; +CREATE TABLE verification_codes ( + created_at timestamp with time zone DEFAULT now() NOT NULL, + visitor_id_code text NOT NULL, + code text NOT NULL, + phone text NOT NULL, + CONSTRAINT check_9b84e6aaff CHECK ((char_length(code) <= 8)), + CONSTRAINT check_ccc542256b CHECK ((char_length(visitor_id_code) <= 64)), + CONSTRAINT check_f5684c195b CHECK ((char_length(phone) <= 50)) +) +PARTITION BY RANGE (created_at); + +COMMENT ON TABLE verification_codes IS 'JiHu-specific table'; + CREATE TABLE vs_code_settings ( id bigint NOT NULL, user_id bigint NOT NULL, @@ -19238,6 +19182,24 @@ CREATE SEQUENCE vulnerability_user_mentions_id_seq ALTER SEQUENCE vulnerability_user_mentions_id_seq OWNED BY vulnerability_user_mentions.id; +CREATE TABLE web_hook_logs ( + id bigint NOT NULL, + web_hook_id integer NOT NULL, + trigger character varying, + url character varying, + request_headers text, + request_data text, + response_headers text, + response_body text, + response_status character varying, + execution_duration double precision, + internal_error_message character varying, + updated_at timestamp without time zone NOT NULL, + created_at timestamp without time zone NOT NULL, + url_hash text +) +PARTITION BY RANGE (created_at); + CREATE SEQUENCE web_hook_logs_id_seq START WITH 1 INCREMENT BY 1 @@ -19820,6 +19782,22 @@ CREATE SEQUENCE zoekt_shards_id_seq ALTER SEQUENCE zoekt_shards_id_seq OWNED BY zoekt_shards.id; +CREATE TABLE zoekt_tasks ( + id bigint NOT NULL, + partition_id bigint DEFAULT 1 NOT NULL, + zoekt_node_id bigint NOT NULL, + zoekt_repository_id bigint NOT NULL, + project_identifier bigint NOT NULL, + perform_at timestamp with time zone DEFAULT now() NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + state smallint DEFAULT 0 NOT NULL, + task_type smallint NOT NULL, + retries_left smallint DEFAULT 5 NOT NULL, + CONSTRAINT c_zoekt_tasks_on_retries_left CHECK (((retries_left > 0) OR ((retries_left = 0) AND (state = 255)))) +) +PARTITION BY LIST (partition_id); + CREATE SEQUENCE zoekt_tasks_id_seq START WITH 1 INCREMENT BY 1 @@ -20540,8 +20518,6 @@ ALTER TABLE ONLY dast_profiles_tags ALTER COLUMN id SET DEFAULT nextval('dast_pr ALTER TABLE ONLY dast_scanner_profiles ALTER COLUMN id SET DEFAULT nextval('dast_scanner_profiles_id_seq'::regclass); -ALTER TABLE ONLY dast_scanner_profiles_tags ALTER COLUMN id SET DEFAULT nextval('dast_scanner_profiles_tags_id_seq'::regclass); - ALTER TABLE ONLY dast_site_profile_secret_variables ALTER COLUMN id SET DEFAULT nextval('dast_site_profile_secret_variables_id_seq'::regclass); ALTER TABLE ONLY dast_site_profiles ALTER COLUMN id SET DEFAULT nextval('dast_site_profiles_id_seq'::regclass); @@ -22585,18 +22561,12 @@ ALTER TABLE ONLY dast_scanner_profiles_builds ALTER TABLE ONLY dast_scanner_profiles ADD CONSTRAINT dast_scanner_profiles_pkey PRIMARY KEY (id); -ALTER TABLE ONLY dast_scanner_profiles_tags - ADD CONSTRAINT dast_scanner_profiles_tags_pkey PRIMARY KEY (id); - ALTER TABLE ONLY dast_site_profile_secret_variables ADD CONSTRAINT dast_site_profile_secret_variables_pkey PRIMARY KEY (id); ALTER TABLE ONLY dast_site_profiles_builds ADD CONSTRAINT dast_site_profiles_builds_pkey PRIMARY KEY (dast_site_profile_id, ci_build_id); -ALTER TABLE ONLY dast_site_profiles_pipelines - ADD CONSTRAINT dast_site_profiles_pipelines_pkey PRIMARY KEY (dast_site_profile_id, ci_pipeline_id); - ALTER TABLE ONLY dast_site_profiles ADD CONSTRAINT dast_site_profiles_pkey PRIMARY KEY (id); @@ -25376,8 +25346,6 @@ CREATE INDEX i_dast_pre_scan_verification_steps_on_pre_scan_verification_id ON d CREATE INDEX i_dast_profiles_tags_on_scanner_profiles_id ON dast_profiles_tags USING btree (dast_profile_id); -CREATE INDEX i_dast_scanner_profiles_tags_on_scanner_profiles_id ON dast_scanner_profiles_tags USING btree (dast_scanner_profile_id); - CREATE INDEX i_namespace_cluster_agent_mappings_on_cluster_agent_id ON remote_development_namespace_cluster_agent_mappings USING btree (cluster_agent_id); CREATE INDEX i_namespace_cluster_agent_mappings_on_creator_id ON remote_development_namespace_cluster_agent_mappings USING btree (creator_id); @@ -26666,16 +26634,12 @@ CREATE INDEX index_dast_profiles_tags_on_tag_id ON dast_profiles_tags USING btre CREATE UNIQUE INDEX index_dast_scanner_profiles_on_project_id_and_name ON dast_scanner_profiles USING btree (project_id, name); -CREATE INDEX index_dast_scanner_profiles_tags_on_tag_id ON dast_scanner_profiles_tags USING btree (tag_id); - CREATE INDEX index_dast_site_profile_secret_variables_on_project_id ON dast_site_profile_secret_variables USING btree (project_id); CREATE INDEX index_dast_site_profiles_on_dast_site_id ON dast_site_profiles USING btree (dast_site_id); CREATE UNIQUE INDEX index_dast_site_profiles_on_project_id_and_name ON dast_site_profiles USING btree (project_id, name); -CREATE UNIQUE INDEX index_dast_site_profiles_pipelines_on_ci_pipeline_id ON dast_site_profiles_pipelines USING btree (ci_pipeline_id); - CREATE UNIQUE INDEX index_dast_site_token_on_project_id_and_url ON dast_site_tokens USING btree (project_id, url); CREATE UNIQUE INDEX index_dast_site_token_on_token ON dast_site_tokens USING btree (token); @@ -32708,9 +32672,6 @@ ALTER TABLE ONLY vulnerability_flags ALTER TABLE ONLY todos ADD CONSTRAINT fk_ccf0373936 FOREIGN KEY (author_id) REFERENCES users(id) ON DELETE CASCADE; -ALTER TABLE ONLY dast_site_profiles_pipelines - ADD CONSTRAINT fk_cf05cf8fe1 FOREIGN KEY (dast_site_profile_id) REFERENCES dast_site_profiles(id) ON DELETE CASCADE; - ALTER TABLE ONLY compliance_framework_security_policies ADD CONSTRAINT fk_cf3c0ac207 FOREIGN KEY (policy_configuration_id) REFERENCES security_orchestration_policy_configurations(id) ON DELETE CASCADE; @@ -34655,9 +34616,6 @@ ALTER TABLE ONLY user_callouts ALTER TABLE ONLY scan_result_policies ADD CONSTRAINT fk_rails_de9e5d2ce6 FOREIGN KEY (security_orchestration_policy_configuration_id) REFERENCES security_orchestration_policy_configurations(id) ON DELETE CASCADE; -ALTER TABLE ONLY dast_scanner_profiles_tags - ADD CONSTRAINT fk_rails_deb79b7f19 FOREIGN KEY (dast_scanner_profile_id) REFERENCES dast_scanner_profiles(id) ON DELETE CASCADE; - ALTER TABLE ONLY vulnerability_feedback ADD CONSTRAINT fk_rails_debd54e456 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; diff --git a/doc/administration/auth/ldap/ldap-troubleshooting.md b/doc/administration/auth/ldap/ldap-troubleshooting.md index 8799b88907d..c6361cd3bbc 100644 --- a/doc/administration/auth/ldap/ldap-troubleshooting.md +++ b/doc/administration/auth/ldap/ldap-troubleshooting.md @@ -744,8 +744,8 @@ You can solve this error in two ways. ### Rename references to the LDAP server -This solution is suitable when the LDAP servers are replicas of each other, and the affected users should be able to sign in using a configured LDAP server. For example, if a -load balancer is now used to manage LDAP high availability and a separate secondary sign-in option is no longer needed. +This solution is suitable when the LDAP servers are replicas of each other, and the affected users should be able to sign in using a configured LDAP server. +For example, if a load balancer is now used to manage LDAP high availability and a separate secondary sign-in option is no longer needed. NOTE: If the LDAP servers aren't replicas of each other, this solution stops affected users from being able to sign in. @@ -758,8 +758,14 @@ sudo gitlab-rake gitlab:ldap:rename_provider[ldapsecondary,ldapmain] ### Remove the `identity` records that relate to the removed LDAP server -With this solution, affected users can sign in with the configured LDAP servers and a new `identity` record is created by GitLab. In a -[Rails console](../../operations/rails_console.md), delete the `ldapsecondary` identities: +Prerequisites: + +- Ensure that `auto_link_ldap_user` is enabled. + +With this solution, after the identity is deleted, affected users can sign in with the +configured LDAP servers and a new `identity` record is created by GitLab. + +Because the LDAP server that was removed was `ldapsecondary`, in a [Rails console](../../operations/rails_console.md), delete all the `ldapsecondary` identities: ```ruby ldap_identities = Identity.where(provider: "ldapsecondary") diff --git a/doc/administration/settings/visibility_and_access_controls.md b/doc/administration/settings/visibility_and_access_controls.md index e68bf6abed2..e36ed541b64 100644 --- a/doc/administration/settings/visibility_and_access_controls.md +++ b/doc/administration/settings/visibility_and_access_controls.md @@ -359,7 +359,6 @@ Prerequisites: 1. Expand **Visibility and access controls**. 1. In **Globally-allowed IP ranges**, provide a list of IP address ranges. This list: - Has no limit on the number of IP address ranges. - - Has a size limit of 1 GB. - Applies to both SSH or HTTP authorized IP address ranges. You cannot split this list by authorization type. 1. Select **Save changes**. diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 9b6b4805c67..1db50fd0e14 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -5385,6 +5385,76 @@ Input type: `HttpIntegrationUpdateInput` | `errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | | `integration` | [`AlertManagementHttpIntegration`](#alertmanagementhttpintegration) | HTTP integration. | +### `Mutation.importSourceUserCancelReassignment` + +DETAILS: +**Introduced** in GitLab 17.2. +**Status**: Experiment. + +Input type: `ImportSourceUserCancelReassignmentInput` + +#### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `id` | [`ImportSourceUserID!`](#importsourceuserid) | Global ID of the mapping of a user on source instance to a user on destination instance. | + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | +| `importSourceUser` | [`ImportSourceUser`](#importsourceuser) | Mapping of a user on source instance to a user on destination instance after mutation. | + +### `Mutation.importSourceUserKeepAsPlaceholder` + +DETAILS: +**Introduced** in GitLab 17.2. +**Status**: Experiment. + +Input type: `ImportSourceUserKeepAsPlaceholderInput` + +#### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `id` | [`ImportSourceUserID!`](#importsourceuserid) | Global ID of the mapping of a user on source instance to a user on destination instance. | + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | +| `importSourceUser` | [`ImportSourceUser`](#importsourceuser) | Mapping of a user on source instance to a user on destination instance after mutation. | + +### `Mutation.importSourceUserReassign` + +DETAILS: +**Introduced** in GitLab 17.2. +**Status**: Experiment. + +Input type: `ImportSourceUserReassignInput` + +#### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `assigneeUserId` | [`UserID!`](#userid) | Global ID of the assignee user. | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `id` | [`ImportSourceUserID!`](#importsourceuserid) | Global ID of the mapping of a user on source instance to a user on destination instance. | + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | +| `importSourceUser` | [`ImportSourceUser`](#importsourceuser) | Mapping of a user on source instance to a user on destination instance after mutation. | + ### `Mutation.instanceAuditEventStreamingDestinationsCreate` DETAILS: @@ -7539,7 +7609,7 @@ Input type: `ProjectSavedReplyUpdateInput` ### `Mutation.projectSetComplianceFramework` -Assign (or unset) a compliance framework to a project. +Assign (or unset) a compliance framework to a project. This mutation raises an error if the project has more than one compliance framework associated with it. Input type: `ProjectSetComplianceFrameworkInput` @@ -12750,6 +12820,29 @@ The edge type for [`GroupWikiRepositoryRegistry`](#groupwikirepositoryregistry). | `cursor` | [`String!`](#string) | A cursor for use in pagination. | | `node` | [`GroupWikiRepositoryRegistry`](#groupwikirepositoryregistry) | The item at the end of the edge. | +#### `ImportSourceUserConnection` + +The connection type for [`ImportSourceUser`](#importsourceuser). + +##### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `edges` | [`[ImportSourceUserEdge]`](#importsourceuseredge) | A list of edges. | +| `nodes` | [`[ImportSourceUser]`](#importsourceuser) | A list of nodes. | +| `pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. | + +#### `ImportSourceUserEdge` + +The edge type for [`ImportSourceUser`](#importsourceuser). + +##### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `cursor` | [`String!`](#string) | A cursor for use in pagination. | +| `node` | [`ImportSourceUser`](#importsourceuser) | The item at the end of the edge. | + #### `IncidentManagementOncallRotationConnection` The connection type for [`IncidentManagementOncallRotation`](#incidentmanagementoncallrotation). @@ -17674,8 +17767,11 @@ four standard [pagination arguments](#pagination-arguments): | Name | Type | Description | | ---- | ---- | ----------- | | `default` | [`String`](#string) | Default value for the input. | +| `description` | [`String`](#string) | Description of the input. | | `name` | [`String`](#string) | Name of the input. | +| `regex` | [`String`](#string) | Pattern that the input value must match. Only applicable to string inputs. | | `required` | [`Boolean`](#boolean) | Indicates if an input is required. | +| `type` | [`CiCatalogResourceComponentInputType`](#cicatalogresourcecomponentinputtype) | Type of the input. | ### `CiCatalogResourceVersion` @@ -21682,6 +21778,7 @@ GPG signature for a signed commit. | `googleCloudLoggingConfigurations` | [`GoogleCloudLoggingConfigurationTypeConnection`](#googlecloudloggingconfigurationtypeconnection) | Google Cloud logging configurations that receive audit events belonging to the group. (see [Connections](#connections)) | | `groupMembersCount` | [`Int!`](#int) | Count of direct members of this group. | | `id` | [`ID!`](#id) | ID of the namespace. | +| `importSourceUsers` **{warning-solid}** | [`ImportSourceUserConnection`](#importsourceuserconnection) | **Introduced** in GitLab 17.2. **Status**: Experiment. Import source users of the namespace. This field can only be resolved for one namespace in any single request. | | `isAdjournedDeletionEnabled` **{warning-solid}** | [`Boolean!`](#boolean) | **Introduced** in GitLab 16.11. **Status**: Experiment. Indicates if delayed group deletion is enabled. | | `lfsEnabled` | [`Boolean`](#boolean) | Indicates if Large File Storage (LFS) is enabled for namespace. | | `lockDuoFeaturesEnabled` **{warning-solid}** | [`Boolean`](#boolean) | **Introduced** in GitLab 16.10. **Status**: Experiment. Indicates if the GitLab Duo features enabled setting is enforced for all subgroups. | @@ -23325,6 +23422,23 @@ IDE settings and feature flags. | ---- | ---- | ----------- | | `codeSuggestionsEnabled` | [`Boolean!`](#boolean) | Indicates whether AI assisted code suggestions are enabled. | +### `ImportSourceUser` + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `id` | [`ImportSourceUserID!`](#importsourceuserid) | Global ID of the mapping of a user on source instance to a user on destination instance. | +| `importType` | [`ImportSource!`](#importsource) | Name of the importer. | +| `placeholderUser` | [`UserCore`](#usercore) | Placeholder user associated with the import source user. | +| `reassignToUser` | [`UserCore`](#usercore) | User that contributions are reassigned to. | +| `reassignedByUser` | [`UserCore`](#usercore) | User that did the reassignment. | +| `sourceHostname` | [`String!`](#string) | Source instance hostname. | +| `sourceName` | [`String`](#string) | Name of user in the source instance. | +| `sourceUserIdentifier` | [`String!`](#string) | ID of the user in the source instance. | +| `sourceUsername` | [`String`](#string) | Username of user in the source instance. | +| `status` | [`ImportSourceUserStatus!`](#importsourceuserstatus) | Status of the mapping. | + ### `IncidentManagementOncallRotation` Describes an incident management on-call rotation. @@ -26098,6 +26212,7 @@ Product analytics events for a specific month and year. | `fullName` | [`String!`](#string) | Full name of the namespace. | | `fullPath` | [`ID!`](#id) | Full path of the namespace. | | `id` | [`ID!`](#id) | ID of the namespace. | +| `importSourceUsers` **{warning-solid}** | [`ImportSourceUserConnection`](#importsourceuserconnection) | **Introduced** in GitLab 17.2. **Status**: Experiment. Import source users of the namespace. This field can only be resolved for one namespace in any single request. | | `lfsEnabled` | [`Boolean`](#boolean) | Indicates if Large File Storage (LFS) is enabled for namespace. | | `name` | [`String!`](#string) | Name of the namespace. | | `packageSettings` | [`PackageSettings`](#packagesettings) | Package settings for the namespace. | @@ -27041,6 +27156,7 @@ Returns [`UserMergeRequestInteraction`](#usermergerequestinteraction). | `iid` | [`String!`](#string) | Internal ID of the pipeline. | | `jobArtifacts` | [`[CiJobArtifact!]`](#cijobartifact) | Job artifacts of the pipeline. | | `latest` | [`Boolean!`](#boolean) | If the pipeline is the latest one or not. | +| `manualVariables` | [`CiManualVariableConnection`](#cimanualvariableconnection) | CI/CD variables added to a manual pipeline. (see [Connections](#connections)) | | `mergeRequest` | [`MergeRequest`](#mergerequest) | The MR which the Pipeline is attached to. | | `mergeRequestEventType` | [`PipelineMergeRequestEventType`](#pipelinemergerequesteventtype) | Event type of the pipeline associated with a merge request. | | `name` | [`String`](#string) | Name of the pipeline. | @@ -33348,6 +33464,17 @@ Status of a merge train's car. | `SKIP_MERGED` | Car's status: skip_merged. | | `STALE` | Car's status: stale. | +### `CiCatalogResourceComponentInputType` + +Available input types. + +| Value | Description | +| ----- | ----------- | +| `ARRAY` | Array input. | +| `BOOLEAN` | Boolean input. | +| `NUMBER` | Number input. | +| `STRING` | String input. | + ### `CiCatalogResourceScope` Values for scoping catalog resources. @@ -34401,19 +34528,31 @@ Import source. | Value | Description | | ----- | ----------- | -| `BITBUCKET` | Imported from Bitbucket. | -| `BITBUCKET_SERVER` | Imported from Bitbucket Server. | -| `CUSTOM_TEMPLATE` | Imported from Custom Template. | -| `FOGBUGZ` | Imported from Fogbugz. | -| `GIT` | Imported from Git. | -| `GITEA` | Imported from Gitea. | -| `GITHUB` | Imported from Github. | -| `GITLAB_GROUP` | Imported from Gitlab Group. | -| `GITLAB_MIGRATION` | Imported from Gitlab Migration. | -| `GITLAB_PROJECT` | Imported from Gitlab Project. | -| `MANIFEST` | Imported from Manifest. | +| `BITBUCKET` | Bitbucket. | +| `BITBUCKET_SERVER` | Bitbucket Server. | +| `CUSTOM_TEMPLATE` | Custom Template. | +| `FOGBUGZ` | Fogbugz. | +| `GIT` | Git. | +| `GITEA` | Gitea. | +| `GITHUB` | Github. | +| `GITLAB_GROUP` | Gitlab Group. | +| `GITLAB_MIGRATION` | Gitlab Migration. | +| `GITLAB_PROJECT` | Gitlab Project. | +| `MANIFEST` | Manifest. | | `NONE` | Not imported. | +### `ImportSourceUserStatus` + +| Value | Description | +| ----- | ----------- | +| `AWAITING_APPROVAL` | An import source user mapping that is awaiting approval. | +| `COMPLETED` | An import source user mapping that is completed. | +| `FAILED` | An import source user mapping that is failed. | +| `KEEP_AS_PLACEHOLDER` | An import source user mapping that is keep as placeholder. | +| `PENDING_ASSIGNMENT` | An import source user mapping that is pending assignment. | +| `REASSIGNMENT_IN_PROGRESS` | An import source user mapping that is reassignment in progress. | +| `REJECTED` | An import source user mapping that is rejected. | + ### `IntegrationType` Integration Names. @@ -36760,6 +36899,12 @@ An ISO 8601-encoded date. An ISO 8601-encoded datetime. +### `ImportSourceUserID` + +A `ImportSourceUserID` is a global ID. It is encoded as a string. + +An example `ImportSourceUserID` is: `"gid://gitlab/Import::SourceUser/1"`. + ### `IncidentManagementEscalationPolicyID` A `IncidentManagementEscalationPolicyID` is a global ID. It is encoded as a string. diff --git a/doc/api/project_container_registry_protection_rules.md b/doc/api/project_container_registry_protection_rules.md new file mode 100644 index 00000000000..99a0e1fad65 --- /dev/null +++ b/doc/api/project_container_registry_protection_rules.md @@ -0,0 +1,73 @@ +--- +stage: Package +group: Container Registry +info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments" +description: "Documentation for the REST API for container registry protection rules in GitLab." +--- + +# Container registry protection rules API + +DETAILS: +**Tier:** Free, Premium, Ultimate +**Offering:** Self-managed +**Status:** Experiment + +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/155798) in GitLab 17.2 [with a flag](../administration/feature_flags.md) named `container_registry_protected_containers`. Disabled by default. + +FLAG: +The availability of this feature is controlled by a feature flag. +For more information, see the history. +This feature is available for testing, but not ready for production use. + +This API endpoint manages the protection rules for container registries in a project. This feature is an experiment. + +## List container registry protection rules + +Gets a list of container registry protection rules from a project. + +```plaintext +GET /api/v4/projects/:id/registry/protection/rules +``` + +Supported attributes: + +| Attribute | Type | Required | Description | +|-------------------------------|-----------------|----------|--------------------------------| +| `id` | integer/string | Yes | ID or [URL-encoded path of the project](rest/index.md#namespaced-path-encoding) owned by the authenticated user. | + +If successful, returns [`200`](rest/index.md#status-codes) and a list of container registry protection rules. + +Can return the following status codes: + +- `200 OK`: A list of container registry protection rules. +- `401 Unauthorized`: The access token is invalid. +- `403 Forbidden`: The user does not have permission to list container registry protection rules for this project. +- `404 Not Found`: The project was not found. + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: " \ + --url "https://gitlab.example.com/api/v4/projects/7/registry/protection/rules" +``` + +Example response: + +```json +[ + { + "id": 1, + "project_id": 7, + "repository_path_pattern": "flightjs/flight0", + "minimum_access_level_for_push": "maintainer", + "minimum_access_level_for_delete": "maintainer" + }, + { + "id": 2, + "project_id": 7, + "repository_path_pattern": "flightjs/flight1", + "minimum_access_level_for_push": "maintainer", + "minimum_access_level_for_delete": "maintainer" + }, +] +``` diff --git a/doc/architecture/blueprints/gitlab_rag/index.md b/doc/architecture/blueprints/gitlab_rag/index.md index 5a6e3875a21..d775430f2d5 100644 --- a/doc/architecture/blueprints/gitlab_rag/index.md +++ b/doc/architecture/blueprints/gitlab_rag/index.md @@ -1,7 +1,7 @@ --- -status: proposed +status: ongoing creation-date: "2024-02-20" -authors: [ "@bvenker", "@mikolaj_wawrzyniak" ] +authors: [ "@maddievn", "@mikolaj_wawrzyniak", "@dgruzd" ] coach: [ "@stanhu" ] approvers: [ "@pwietchner", "@oregand", "@shinya.meda", "@mikolaj_wawrzyniak" ] owning-stage: "~devops::data stores" @@ -50,7 +50,7 @@ LLMs: enhance performance but may also increase computational costs due to longer processing times. - **Duplicate Contents:** Repetitive content can reduce the diversity of search - results. For instance, if a semantic search yields ten results indicating + results. For instance, if a semantic search yields ten results indicating "Tom is a president" but the eleventh reveals "Tom lives in the United States," solely using the top ten would omit critical information. Filtering out duplicate content, for example, through Maximal Marginal Relevance (MMR), can @@ -101,7 +101,7 @@ execution of multiple tools and LLM inferences. Choosing the appropriate search method is pivotal for feature design and UX optimization. Here are common search techniques: -### Semantic Search +### Semantic Search using embeddings Semantic search shines when handling complex queries that demand an understanding of the context or intent behind the words, not just the words @@ -114,7 +114,7 @@ related information. In the realm of semantic search, the K-Nearest Neighbors (KNN) method is commonly employed to identify data segments that are semantically closer to the -user's input. To measure the semantic proximity, various methods are used: +user's input by using embeddings. To measure the semantic proximity, various methods are used: - **Cosine Similarity:** Focuses solely on the direction of vectors. - **L2 Distance (Euclidean Distance):** Takes into account both the direction @@ -137,6 +137,13 @@ approximate nearest neighbors (ANN) search, is a popular strategy for this purpose. For insights into HNSW's effectiveness, consider reviewing [benchmarks on its performance in large-scale applications](https://supabase.com/blog/increase-performance-pgvector-hnsw). +Due to the existing framework and scalability of Elasticsearch, embeddings will +be stored on Elasticsearch for large datasets such as +[issues](https://gitlab.com/gitlab-org/gitlab/-/issues/451431), merge requests, +etc. This will be used to perform [Hybrid Search](https://gitlab.com/gitlab-org/gitlab/-/issues/440424) +but will also be useful for other features such as finding duplicates, similar results or +categorizing documents. + ### Keyword Search Keyword search is the go-to method for straightforward, specific queries where @@ -151,6 +158,10 @@ that have a high frequency of the query terms. Its efficiency and directness make it particularly useful for situations where users expect quick and precise results based on specific keywords or phrases. +Elasicsearch uses a BM25 algorigthm to perform keyword search. +If one of the existing [indexed document types](../../../integration/advanced_search/elasticsearch.md#advanced-search-index-scopes) +is not covered, a [new document type](../../../development/advanced_search.md#add-a-new-document-type-to-elasticsearch) can be added. + ### Hybrid Search Hybrid search combines the depth of semantic search with the precision of @@ -169,13 +180,22 @@ contrasted with the relative efficiency of [BM25](https://pub.aimind.so/understa keyword searches, making hybrid search a strategic choice for optimizing performance across diverse datasets. +The first hybrid search scope is for issues which combines keyword search with kNN matches using embeddings. + ### Code Search Like the other data types above, a source code search task can utilize different -search types, each more suited to address different queries. Currently, +search types, each more suited to address different queries. + +Two code searches are available currrently: `Elasticsearch` and `Zoekt`. + +Elasticsearch provides blob search which supports [Advanced Search Syntax](../../../drawers/advanced_search_syntax.md). + [Zoekt](../code_search_with_zoekt/index.md) is employed on GitLab.com to provide exact match keyword search and regular expression search capabilities for source -code. Semantic search and hybrid search functionalities are yet to be +code. + +Semantic search and hybrid search functionalities are yet to be implemented for code. ### ID Search @@ -283,17 +303,3 @@ To read more about the [GitLab Duo Chat PoCs](../gitlab_duo_rag/index.md) conduc - [PGVector PoC](../gitlab_duo_rag/postgresql.md) - [Elasticsearch PoC](../gitlab_duo_rag/elasticsearch.md) - [Google Vertex PoC](../gitlab_duo_rag/vertex_ai_search.md) - -## Proposed solution - -_Disclaimer: This blueprint is in the first iteration and the chosen solutions could change._ - -Due to the existing framework and scalability of Elasticsearch, embeddings will -be stored on Elasticsearch for large datasets such as -[issues](https://gitlab.com/gitlab-org/gitlab/-/issues/451431), merge requests, -etc. This will be used to perform [Hybrid Search](https://gitlab.com/gitlab-org/gitlab/-/issues/440424) -but will also be useful for other features such as finding duplicates, similar results or -categorizing documents. - -[Vertext AI Search](../gitlab_duo_rag/vertex_ai_search.md) is going to be -implemented to serve GitLab DUO documentation for self-managed instances. diff --git a/doc/ci/components/index.md b/doc/ci/components/index.md index 3629fa86f07..7221eaea9be 100644 --- a/doc/ci/components/index.md +++ b/doc/ci/components/index.md @@ -344,6 +344,15 @@ These [predefined variables](../variables/predefined_variables.md) ensure that your component also works when used on another instance, for example when using [a GitLab.com component in a self-managed instance](#use-a-gitlabcom-component-in-a-self-managed-instance). +### Do not assume API resources are always public + +Ensure that the component and its testing pipeline work also [in a self-managed instance](#use-a-gitlabcom-component-in-a-self-managed-instance). +While some API resources of public projects on GitLab.com could be accessed via unauthenticated requests +on self-managed a component project could be mirrored as private or internal project. + +It's important that an access token can optionally be provided via inputs or variables to +authenticate requests on self-managed instances. + ### Avoid using global keywords Avoid using [global keywords](../yaml/index.md#global-keywords) in a component. diff --git a/doc/ci/variables/where_variables_can_be_used.md b/doc/ci/variables/where_variables_can_be_used.md index 055909dee4f..b3dbbf1c494 100644 --- a/doc/ci/variables/where_variables_can_be_used.md +++ b/doc/ci/variables/where_variables_can_be_used.md @@ -45,6 +45,7 @@ There are two places defined variables can be used. On the: | [`only:variables`](../yaml/index.md#onlyvariables--exceptvariables) (Deprecated) | no | Not applicable | The variable must be in the form of `$variable`. Not supported are the following:

- `CI_ENVIRONMENT_SLUG` variable.
- [Persisted variables](#persisted-variables). | | [`resource_group`](../yaml/index.md#resource_group) | yes | GitLab | Similar to `environment:url`, but the variables expansion doesn't support the following:
- `CI_ENVIRONMENT_URL`
- [Persisted variables](#persisted-variables). | | [`rules:changes`](../yaml/index.md#ruleschanges) | yes | GitLab | The variable expansion is made by the [internal variable expansion mechanism](#gitlab-internal-variable-expansion-mechanism) in GitLab. | +| [`rules:changes:compare_to`](../yaml/index.md#ruleschangescompare_to) | yes | GitLab | The variable expansion is made by the [internal variable expansion mechanism](#gitlab-internal-variable-expansion-mechanism) in GitLab. | | [`rules:exists`](../yaml/index.md#rulesexists) | yes | GitLab | The variable expansion is made by the [internal variable expansion mechanism](#gitlab-internal-variable-expansion-mechanism) in GitLab. | | [`rules:if`](../yaml/index.md#rulesif) | no | Not applicable | The variable must be in the form of `$variable`. Not supported are the following:

- `CI_ENVIRONMENT_SLUG` variable.
- [Persisted variables](#persisted-variables). | | [`script`](../yaml/index.md#script) | yes | Script execution shell | The variable expansion is made by the [execution shell environment](#execution-shell-environment). | diff --git a/doc/ci/yaml/index.md b/doc/ci/yaml/index.md index ffcfc9ea492..907ea1befd4 100644 --- a/doc/ci/yaml/index.md +++ b/doc/ci/yaml/index.md @@ -1043,8 +1043,6 @@ Use `after_script` to define an array of commands to run last, after a job's `be - Long commands [split over multiple lines](script.md#split-long-commands). - [YAML anchors](yaml_optimization.md#yaml-anchors-for-scripts). -CI/CD variables [are supported](../variables/where_variables_can_be_used.md#gitlab-ciyml-file). - **Example of `after_script`**: ```yaml @@ -4201,6 +4199,7 @@ In this example, both jobs have the same behavior. > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/293645) in GitLab 15.3 [with a flag](../../administration/feature_flags.md) named `ci_rules_changes_compare`. Enabled by default. > - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/366412) in GitLab 15.5. Feature flag `ci_rules_changes_compare` removed. +> - Support for CI/CD variables [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369916) in GitLab 17.2 [with a flag](../../administration/feature_flags.md) named `ci_expand_variables_in_compare_to`. Disabled by default. Use `rules:changes:compare_to` to specify which ref to compare against for changes to the files listed under [`rules:changes:paths`](#ruleschangespaths). @@ -4213,6 +4212,8 @@ listed under [`rules:changes:paths`](#ruleschangespaths). - A tag name, like `tag1` or `refs/tags/tag1`. - A commit SHA, like `2fg31ga14b`. +CI/CD variables [are supported](../variables/where_variables_can_be_used.md#gitlab-ciyml-file). + **Example of `rules:changes:compare_to`**: ```yaml diff --git a/doc/development/database/multiple_databases.md b/doc/development/database/multiple_databases.md index 74e85fe104b..7cc8df1f8cc 100644 --- a/doc/development/database/multiple_databases.md +++ b/doc/development/database/multiple_databases.md @@ -8,8 +8,8 @@ info: Any user with at least the Maintainer role can merge updates to this conte To allow GitLab to scale further we [decomposed the GitLab application database into multiple databases](https://gitlab.com/groups/gitlab-org/-/epics/6168). -The two databases are `main` and `ci`. GitLab supports being run with either one database or two databases. -On GitLab.com we are using two separate databases. +The main databases are `main`, `ci`, and (optionally) `sec`. GitLab supports being run with one, two, or three databases. +On GitLab.com we are using separate `main` and `ci` databases. For the purpose of building the [Cells](../../architecture/blueprints/cells/index.md) architecture, we are decomposing the databases further, to introduce another database `gitlab_main_clusterwide`. @@ -47,6 +47,7 @@ The usage of schema enforces the base class to be used: - `Geo::TrackingBase` for `gitlab_geo` - `Gitlab::Database::SharedModel` for `gitlab_shared` - `PackageMetadata::ApplicationRecord` for `gitlab_pm` +- `Gitlab::Database::SecApplicationRecord` for `gitlab_sec` ### Choose either the `gitlab_main_cell` or `gitlab_main_clusterwide` schema diff --git a/doc/development/documentation/styleguide/word_list.md b/doc/development/documentation/styleguide/word_list.md index e43075a8d2a..2c4ab7668f2 100644 --- a/doc/development/documentation/styleguide/word_list.md +++ b/doc/development/documentation/styleguide/word_list.md @@ -1156,17 +1156,19 @@ Instead of: ## level -If you can, avoid using `level` in the context of an instance or group. +If you can, avoid using `level` in the context of an instance, project, or group. Use: - This setting is turned on for the instance. - This setting is turned on for the group and its subgroups. +- This setting is turned on for projects. Instead of: - This setting is turned on at the instance level. - This setting is turned on at the group level. +- This is a project-level setting. ## list diff --git a/doc/security/token_overview.md b/doc/security/token_overview.md index da88555cbed..c9e13522010 100644 --- a/doc/security/token_overview.md +++ b/doc/security/token_overview.md @@ -456,24 +456,6 @@ end This script finds tokens that do not have an expiry date, that is, `expires_at` is set to `NULL`. For users who have not yet upgraded to GitLab version 16.0 or later, the token `expires_at` value will be `NULL` and can be used to identify tokens that will be set with an expiration date. -```ruby -# This script finds tokens which do not have an expires_at value set. - -# Check for expiring personal access tokens -PersonalAccessToken.owner_is_human.where(expires_at: nil).find_each do |token| - puts "Expires_at is nil for Personal Access Token ID: #{token.id}, User Email: #{token.user.email}, Name: #{token.name}, Scopes: #{token.scopes}, Last used: #{token.last_used_at}" -end - -# Check for expiring project and group access tokens -PersonalAccessToken.project_access_token.where(expires_at: nil).find_each do |token| - token.user.members.each do |member| - type = member.is_a?(GroupMember) ? 'Group' : 'Project' - - puts "Expires_at is nil for #{type} access token in #{type} ID #{member.source_id}, Token ID: #{token.id}, Name: #{token.name}, Scopes: #{token.scopes}, Last used: #{token.last_used_at}" - end -end -``` - You can use this script in either the [Rails console](../administration/operations/rails_console.md) or the [Rails Runner](../administration/operations/rails_console.md#using-the-rails-runner): ::Tabs @@ -485,6 +467,24 @@ You can use this script in either the [Rails console](../administration/operatio 1. Paste in the entire script. 1. Press Enter. + ```ruby + # This script finds tokens which do not have an expires_at value set. + + # Check for expiring personal access tokens + PersonalAccessToken.owner_is_human.where(expires_at: nil).find_each do |token| + puts "Expires_at is nil for Personal Access Token ID: #{token.id}, User Email: #{token.user.email}, Name: #{token.name}, Scopes: #{token.scopes}, Last used: #{token.last_used_at}" + end + + # Check for expiring project and group access tokens + PersonalAccessToken.project_access_token.where(expires_at: nil).find_each do |token| + token.user.members.each do |member| + type = member.is_a?(GroupMember) ? 'Group' : 'Project' + + puts "Expires_at is nil for #{type} access token in #{type} ID #{member.source_id}, Token ID: #{token.id}, Name: #{token.name}, Scopes: #{token.scopes}, Last used: #{token.last_used_at}" + end + end + ``` + :::TabTitle Rails Runner 1. In your terminal window, connect to your instance. diff --git a/doc/user/application_security/sast/gitlab_advanced_sast.md b/doc/user/application_security/sast/gitlab_advanced_sast.md index b02ee0b03d6..452c90bef67 100644 --- a/doc/user/application_security/sast/gitlab_advanced_sast.md +++ b/doc/user/application_security/sast/gitlab_advanced_sast.md @@ -80,7 +80,10 @@ To enable the Advanced SAST analyzer: when: never - if: $SAST_EXCLUDED_ANALYZERS =~ /gitlab-advanced-sast/ when: never - - if: $CI_COMMIT_BRANCH + - if: $CI_PIPELINE_SOURCE == "merge_request_event" # Add the job to merge request pipelines if there's an open merge request. + exists: + - '**/*.py' + - if: $CI_COMMIT_BRANCH # If there's no open merge request, add it to a *branch* pipeline instead. exists: - '**/*.py' ``` diff --git a/doc/user/group/access_and_permissions.md b/doc/user/group/access_and_permissions.md index 9d22e68611d..dca8f1e19ef 100644 --- a/doc/user/group/access_and_permissions.md +++ b/doc/user/group/access_and_permissions.md @@ -80,7 +80,6 @@ To restrict group access by IP address: 1. In the **Restrict access by IP address** text box, enter a list of IPv4 or IPv6 address ranges in CIDR notation. This list: - Has no limit on the number of IP address ranges. - - Has a size limit of 1 GB. - Applies to both SSH or HTTP authorized IP address ranges. You cannot split this list by type of authorization. 1. Select **Save changes**. diff --git a/keeps/quarantine_flaky_tests.rb b/keeps/quarantine_flaky_tests.rb index befbbe88012..0318baca6c4 100644 --- a/keeps/quarantine_flaky_tests.rb +++ b/keeps/quarantine_flaky_tests.rb @@ -31,8 +31,8 @@ module Keeps class QuarantineFlakyTests < ::Gitlab::Housekeeper::Keep MINIMUM_REMAINING_RATE = 25 QUERY_URL_TEMPLATE = "https://gitlab.com/api/v4/projects/278964/issues/?order_by=updated_at&state=opened&labels[]=test&labels[]=failure::flaky-test&labels[]=%s¬[labels][]=QA¬[labels][]=quarantine&per_page=20" - # https://rubular.com/r/WnMxnDPvGGjoGE - EXAMPLE_LINE_REGEX = /\bit (?[\w'",: ]*(?:,\n)?[\w\'",: ]+?) do$/m + # https://rubular.com/r/OoeQIEwPkL1m7E + EXAMPLE_LINE_REGEX = /\bit (?[\w'",: \#\{\}]*(?:,\n)?[\w\'",: ]+?) do$/m FLAKINESS_LABELS = %w[flakiness::1 flakiness::2].freeze def each_change diff --git a/lib/api/api.rb b/lib/api/api.rb index 1eb4c60af12..ff3a158fbe8 100644 --- a/lib/api/api.rb +++ b/lib/api/api.rb @@ -302,6 +302,7 @@ module API mount ::API::ProjectAvatar mount ::API::ProjectClusters mount ::API::ProjectContainerRepositories + mount ::API::ProjectContainerRegistryProtectionRules mount ::API::ProjectDebianDistributions mount ::API::ProjectEvents mount ::API::ProjectExport diff --git a/lib/api/entities/projects/container_registry/protection/rule.rb b/lib/api/entities/projects/container_registry/protection/rule.rb new file mode 100644 index 00000000000..8d55d6504b1 --- /dev/null +++ b/lib/api/entities/projects/container_registry/protection/rule.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module API + module Entities + module Projects + module ContainerRegistry + module Protection + class Rule < Grape::Entity + expose :id, documentation: { type: 'integer', example: 1 } + expose :project_id, documentation: { type: 'integer', example: 1 } + expose :repository_path_pattern, documentation: { type: 'string', example: 'flightjs/flight0' } + expose :minimum_access_level_for_push, documentation: { type: 'string', example: 'maintainer' } + expose :minimum_access_level_for_delete, documentation: { type: 'string', example: 'maintainer' } + end + end + end + end + end +end diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index abece1eaf42..6480ba3ddc8 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -691,7 +691,7 @@ module API .execute(merge_request) elsif automatically_mergeable AutoMergeService.new(merge_request.target_project, current_user, merge_params) - .execute(merge_request, AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) + .execute(merge_request, merge_request.default_auto_merge_strategy) end if immediately_mergeable && !merge_request.merged? diff --git a/lib/api/project_container_registry_protection_rules.rb b/lib/api/project_container_registry_protection_rules.rb new file mode 100644 index 00000000000..233f88c3b4f --- /dev/null +++ b/lib/api/project_container_registry_protection_rules.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module API + class ProjectContainerRegistryProtectionRules < ::API::Base + feature_category :container_registry + + after_validation do + if Feature.disabled?(:container_registry_protected_containers, user_project) + render_api_error!("'container_registry_protected_containers' feature flag is disabled", :not_found) + end + + authenticate! + authorize! :admin_container_image, user_project + end + + resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + desc 'Get list of container registry protection rules for a project' do + success Entities::Projects::ContainerRegistry::Protection::Rule + failure [ + { code: 401, message: 'Unauthorized' }, + { code: 403, message: 'Forbidden' }, + { code: 404, message: 'Not Found' } + ] + tags %w[projects] + is_array true + hidden true + end + end + params do + requires :id, types: [String, Integer], desc: 'The ID or URL-encoded path of the project' + end + resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + get ':id/registry/protection/rules' do + present user_project.container_registry_protection_rules, + with: Entities::Projects::ContainerRegistry::Protection::Rule + end + end + end +end diff --git a/lib/api/search.rb b/lib/api/search.rb index 079ba69c28a..db788f6ba0f 100644 --- a/lib/api/search.rb +++ b/lib/api/search.rb @@ -52,6 +52,7 @@ module API snippets: snippets?, basic_search: params[:basic_search], num_context_lines: params[:num_context_lines], + search_type: params[:search_type], page: params[:page], per_page: params[:per_page], order_by: params[:order_by], @@ -71,12 +72,17 @@ module API forbidden!('Global Search is disabled for this scope') end + search_type_errors = search_service.search_type_errors + bad_request!(search_type_errors) if search_type_errors + @search_duration_s = Benchmark.realtime do @results = search_service.search_objects(preload_method) end search_results = search_service.search_results - bad_request!(search_results.error) if search_results.respond_to?(:failed?) && search_results.failed? + if search_results.respond_to?(:failed?) && search_results.failed?(search_scope) + bad_request!(search_results.error) + end set_global_search_log_information(additional_params) @@ -138,6 +144,14 @@ module API search_duration_s: @search_duration_s ) end + + def set_headers(additional = {}) + header['X-Search-Type'] = search_type + + additional.each do |key, value| + header[key] = value + end + end end resource :search do @@ -157,6 +171,8 @@ module API get do verify_search_scope!(resource: nil) + set_headers('Content-Transfer-Encoding' => 'binary') + present search, with: entity, current_user: current_user end end @@ -179,6 +195,8 @@ module API get ':id/(-/)search' do verify_search_scope!(resource: user_group) + set_headers + present search(group_id: user_group.id), with: entity, current_user: current_user end end @@ -200,6 +218,8 @@ module API use :pagination end get ':id/(-/)search' do + set_headers + present search({ project_id: user_project.id, repository_ref: params[:ref] }), with: entity, current_user: current_user end end diff --git a/lib/gitlab/ci/build/rules/rule/clause/changes.rb b/lib/gitlab/ci/build/rules/rule/clause/changes.rb index ef636c7e586..972c03345f9 100644 --- a/lib/gitlab/ci/build/rules/rule/clause/changes.rb +++ b/lib/gitlab/ci/build/rules/rule/clause/changes.rb @@ -11,7 +11,7 @@ module Gitlab end def satisfied_by?(pipeline, context) - compare_to_sha = find_compare_to_sha(pipeline) + compare_to_sha = find_compare_to_sha(pipeline, context) modified_paths = find_modified_paths(pipeline, compare_to_sha) return true unless modified_paths @@ -67,10 +67,16 @@ module Gitlab end end - def find_compare_to_sha(pipeline) + def find_compare_to_sha(pipeline, context) return unless @globs.include?(:compare_to) - commit = pipeline.project.commit(@globs[:compare_to]) + compare_to = if Feature.enabled?(:ci_expand_variables_in_compare_to, pipeline.project) + ExpandVariables.expand(@globs[:compare_to], -> { context.variables_hash }) + else + @globs[:compare_to] + end + + commit = pipeline.project.commit(compare_to) raise Rules::Rule::Clause::ParseError, 'rules:changes:compare_to is not a valid ref' unless commit commit.sha diff --git a/lib/gitlab/database/sec_application_record.rb b/lib/gitlab/database/sec_application_record.rb new file mode 100644 index 00000000000..151480ec551 --- /dev/null +++ b/lib/gitlab/database/sec_application_record.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Gitlab + module Database + class SecApplicationRecord < ::ApplicationRecord + self.abstract_class = true + + connects_to database: { writing: :sec, reading: :sec } if Gitlab::Database.has_config?(:sec) + end + end +end diff --git a/lib/gitlab/event_store.rb b/lib/gitlab/event_store.rb index 4e782973192..4d5e72d753e 100644 --- a/lib/gitlab/event_store.rb +++ b/lib/gitlab/event_store.rb @@ -40,6 +40,8 @@ module Gitlab store.subscribe ::MergeRequests::UpdateHeadPipelineWorker, to: ::Ci::PipelineCreatedEvent store.subscribe ::Namespaces::UpdateRootStatisticsWorker, to: ::Projects::ProjectDeletedEvent + store.subscribe ::MergeRequests::ProcessAutoMergeFromEventWorker, to: ::MergeRequests::DraftStateChangeEvent + store.subscribe ::MergeRequests::ProcessAutoMergeFromEventWorker, to: ::MergeRequests::DiscussionsResolvedEvent store.subscribe ::MergeRequests::CreateApprovalEventWorker, to: ::MergeRequests::ApprovedEvent store.subscribe ::MergeRequests::CreateApprovalNoteWorker, to: ::MergeRequests::ApprovedEvent store.subscribe ::MergeRequests::ResolveTodosAfterApprovalWorker, to: ::MergeRequests::ApprovedEvent diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb index 3627b01a078..8c2bd304544 100644 --- a/lib/gitlab/search_results.rb +++ b/lib/gitlab/search_results.rb @@ -122,7 +122,7 @@ module Gitlab [] end - def failed? + def failed?(_scope) false end diff --git a/lib/gitlab/empty_search_results.rb b/lib/search/empty_search_results.rb similarity index 78% rename from lib/gitlab/empty_search_results.rb rename to lib/search/empty_search_results.rb index 71a78cb297b..670662c85d9 100644 --- a/lib/gitlab/empty_search_results.rb +++ b/lib/search/empty_search_results.rb @@ -1,13 +1,10 @@ # frozen_string_literal: true -module Gitlab +module Search # This class has the same interface as SearchResults except # it is empty and does not do any work. - # - # We use this when responding to abusive search requests. class EmptySearchResults - def initialize(*) - end + def initialize(*); end def objects(*) Kaminari.paginate_array([]) @@ -24,5 +21,9 @@ module Gitlab def aggregations(*) [] end + + def failed?(*) + false + end end end diff --git a/lib/tasks/gitlab/tw/codeowners.rake b/lib/tasks/gitlab/tw/codeowners.rake index da2f34d73f3..0debea3b410 100644 --- a/lib/tasks/gitlab/tw/codeowners.rake +++ b/lib/tasks/gitlab/tw/codeowners.rake @@ -90,7 +90,7 @@ namespace :tw do CONTRIBUTOR_DOCS_PATH = '/doc/development/' CONTRIBUTOR_DOCS_CODE_OWNER_RULES = [ - CodeOwnerRule.new('AI-powered', '@gitlab-org/ai-powered'), + CodeOwnerRule.new('AI Framework', '@gitlab-org/ai-powered'), CodeOwnerRule.new('Analytics Instrumentation', '@gitlab-org/analytics-section/product-analytics/engineers/frontend ' \ '@gitlab-org/analytics-section/analytics-instrumentation/engineers'), diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 9faf6979994..9ae7bd469e3 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -19981,6 +19981,9 @@ msgstr "" msgid "Emoji" msgstr "" +msgid "Emoji already assigned" +msgstr "" + msgid "Empty file" msgstr "" @@ -27237,6 +27240,9 @@ msgstr "" msgid "Import|GitHub import details" msgstr "" +msgid "Import|Import source user has an invalid status for this operation" +msgstr "" + msgid "Import|Maximum decompressed file size for archives from imports (MiB)" msgstr "" @@ -27264,6 +27270,9 @@ msgstr "" msgid "Import|No import details" msgstr "" +msgid "Import|Only active regular, auditor, or administrator users can be assigned" +msgstr "" + msgid "Import|Partially completed" msgstr "" @@ -27288,6 +27297,9 @@ msgstr "" msgid "Import|You can import a Subversion repository by using third-party tools. %{svn_link}." msgstr "" +msgid "Import|You have insufficient permissions to update the import source user" +msgstr "" + msgid "Improve customer support with Service Desk" msgstr "" @@ -32232,6 +32244,9 @@ msgstr "" msgid "MemberRole|No description" msgstr "" +msgid "MemberRole|Overridden" +msgstr "" + msgid "MemberRole|Permission" msgstr "" @@ -32262,6 +32277,9 @@ msgstr "" msgid "MemberRole|Standard roles" msgstr "" +msgid "MemberRole|This role has been manually selected and will not sync to the LDAP sync role." +msgstr "" + msgid "MemberRole|To delete custom role, remove role from all group members." msgstr "" @@ -56011,15 +56029,9 @@ msgstr "" msgid "TrialDiscoverPage|Your software, deployed your way" msgstr "" -msgid "TrialRegistration|Start GitLab Ultimate free trial" -msgstr "" - msgid "TrialRegistration|To complete registration, we need additional details from you." msgstr "" -msgid "TrialRegistration|Your GitLab Ultimate free trial lasts for 30 days. After this period, you can maintain a GitLab Free account forever or upgrade to a paid plan." -msgstr "" - msgid "Trials|%{planName} Trial" msgstr "" @@ -56064,6 +56076,9 @@ msgstr "" msgid "Trial|Allowed characters: +, 0-9, -, and spaces." msgstr "" +msgid "Trial|Continue" +msgstr "" + msgid "Trial|Cookie Policy" msgstr "" @@ -57620,6 +57635,12 @@ msgstr "" msgid "UserMapping|Kept as placeholder" msgstr "" +msgid "UserMapping|Notification email sent." +msgstr "" + +msgid "UserMapping|Notify again" +msgstr "" + msgid "UserMapping|Original user: %{source_name} (%{source_username})" msgstr "" @@ -61059,6 +61080,9 @@ msgstr "" msgid "You cannot approve your own deployment. This configuration can be adjusted in the protected environment settings." msgstr "" +msgid "You cannot assign or unassign frameworks to a project that has more than one associated framework." +msgstr "" + msgid "You cannot combine replace_ids with add_ids or remove_ids" msgstr "" diff --git a/qa/qa/page/dashboard/projects.rb b/qa/qa/page/dashboard/projects.rb index 3d532b037d0..437877b5e63 100644 --- a/qa/qa/page/dashboard/projects.rb +++ b/qa/qa/page/dashboard/projects.rb @@ -61,15 +61,8 @@ module QA private def has_project_with_access_role?(project_name, access_role) - # Since we are very early in the Vue migration, there isn't much value in testing - # when the feature flag is enabled. - # Please see https://gitlab.com/gitlab-org/gitlab/-/issues/466081 for tracking revisiting this. - if Runtime::Feature.enabled?(:your_work_projects_vue) - has_text?('Projects list') - else - within_element('project-content', text: project_name) do - has_element?('user-access-role', text: access_role) - end + within_element('project-content', text: project_name) do + has_element?('user-access-role', text: access_role) end end end diff --git a/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_members_spec.rb b/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_members_spec.rb index f0bedc9f0a4..9840ac76279 100644 --- a/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_members_spec.rb +++ b/qa/qa/specs/features/api/1_manage/migration/gitlab_migration_members_spec.rb @@ -44,7 +44,11 @@ module QA it( 'member retains direct membership in imported project', - testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/354417' + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/354417', + quarantine: { + type: :stale, + issue: "https://gitlab.com/gitlab-org/gitlab/-/issues/469117" + } ) do expect_project_import_finished_successfully diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index 733ffc083f1..aa0674aa03a 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -651,83 +651,25 @@ RSpec.describe Projects::MergeRequestsController, feature_category: :code_review create(:ci_empty_pipeline, project: project, sha: merge_request.diff_head_sha, ref: merge_request.source_branch, head_pipeline_of: merge_request) end - def merge_when_pipeline_succeeds + def set_auto_merge post :merge, params: base_params.merge(sha: merge_request.diff_head_sha, merge_when_pipeline_succeeds: '1') end - it 'returns :merge_when_pipeline_succeeds' do - merge_when_pipeline_succeeds - - expect(json_response).to eq('status' => 'merge_when_pipeline_succeeds') + it_behaves_like 'api merge with auto merge' do + let(:service_class) { AutoMerge::MergeWhenChecksPassService } + let(:status) { 'merge_when_checks_pass' } + let(:not_current_pipeline_status) { 'merge_when_checks_pass' } end - it 'sets the MR to merge when the pipeline succeeds' do - service = double(:merge_when_pipeline_succeeds_service) - allow(service).to receive(:available_for?) { true } - - expect(AutoMerge::MergeWhenPipelineSucceedsService) - .to receive(:new).with(project, anything, anything) - .and_return(service) - expect(service).to receive(:execute).with(merge_request) - - merge_when_pipeline_succeeds - end - - context 'for logging' do - let(:expected_params) { { merge_action_status: 'merge_when_pipeline_succeeds' } } - let(:subject_proc) { proc { subject } } - - subject { merge_when_pipeline_succeeds } - - it_behaves_like 'storing arguments in the application context' - it_behaves_like 'not executing any extra queries for the application context' - end - - context 'when project.only_allow_merge_if_pipeline_succeeds? is true' do + context 'when merge_when_checks_pass is false' do before do - project.update_column(:only_allow_merge_if_pipeline_succeeds, true) + stub_feature_flags(merge_when_checks_pass: false) end - context 'and head pipeline is not the current one' do - before do - head_pipeline.update!(sha: 'not_current_sha') - end - - it 'returns :failed' do - merge_when_pipeline_succeeds - - expect(json_response).to eq('status' => 'failed') - end - end - - it 'returns :merge_when_pipeline_succeeds' do - merge_when_pipeline_succeeds - - expect(json_response).to eq('status' => 'merge_when_pipeline_succeeds') - end - end - - context 'when auto merge has not been enabled yet' do - it 'calls AutoMergeService#execute' do - expect_next_instance_of(AutoMergeService) do |service| - expect(service).to receive(:execute).with(merge_request, 'merge_when_pipeline_succeeds') - end - - merge_when_pipeline_succeeds - end - end - - context 'when auto merge has already been enabled' do - before do - merge_request.update!(auto_merge_enabled: true, merge_user: user) - end - - it 'calls AutoMergeService#update' do - expect_next_instance_of(AutoMergeService) do |service| - expect(service).to receive(:update).with(merge_request) - end - - merge_when_pipeline_succeeds + it_behaves_like 'api merge with auto merge' do + let(:service_class) { AutoMerge::MergeWhenPipelineSucceedsService } + let(:status) { 'merge_when_pipeline_succeeds' } + let(:not_current_pipeline_status) { 'failed' } end end end diff --git a/spec/controllers/search_controller_spec.rb b/spec/controllers/search_controller_spec.rb index 35c965d3244..c7e7a78b6d5 100644 --- a/spec/controllers/search_controller_spec.rb +++ b/spec/controllers/search_controller_spec.rb @@ -89,6 +89,14 @@ RSpec.describe SearchController, feature_category: :global_search do it_behaves_like 'support for active record query timeouts', :show, { search: 'hello' }, :search_objects, :html it_behaves_like 'metadata is set', :show + it 'verifies search type' do + expect_next_instance_of(SearchService) do |service| + expect(service).to receive(:search_type_errors).once + end + + get :show, params: { search: 'hello', scope: 'blobs' } + end + describe 'rate limit scope' do it 'uses current_user and search scope' do %w[projects blobs users issues merge_requests].each do |scope| @@ -235,7 +243,7 @@ RSpec.describe SearchController, feature_category: :global_search do it 'succeeds but does NOT do anything' do get :show, params: { scope: 'projects', search: '*', repository_ref: '-1%20OR%203%2B640-640-1=0%2B0%2B0%2B1' } expect(response).to have_gitlab_http_status(:ok) - expect(assigns(:search_results)).to be_a Gitlab::EmptySearchResults + expect(assigns(:search_results)).to be_a ::Search::EmptySearchResults end end end @@ -734,7 +742,7 @@ RSpec.describe SearchController, feature_category: :global_search do end it 'returns EmptySearchResults' do - expect(Gitlab::EmptySearchResults).to receive(:new).and_call_original + expect(::Search::EmptySearchResults).to receive(:new).and_call_original make_abusive_request expect(response).to have_gitlab_http_status(:ok) end diff --git a/spec/factories/import_source_users.rb b/spec/factories/import_source_users.rb index c7a850388f8..a038411144e 100644 --- a/spec/factories/import_source_users.rb +++ b/spec/factories/import_source_users.rb @@ -22,5 +22,9 @@ FactoryBot.define do trait :awaiting_approval do status { 1 } end + + trait :completed do + status { 5 } + end end end diff --git a/spec/features/merge_request/user_resolves_wip_mr_spec.rb b/spec/features/merge_request/user_resolves_wip_mr_spec.rb index 39b4d495bd7..ac61e699375 100644 --- a/spec/features/merge_request/user_resolves_wip_mr_spec.rb +++ b/spec/features/merge_request/user_resolves_wip_mr_spec.rb @@ -43,17 +43,8 @@ RSpec.describe 'Merge request > User resolves Draft', :js, feature_category: :co end it 'retains merge request data after clicking Resolve WIP status' do - # rubocop:disable RSpec/AvoidConditionalStatements -- remove when Auto merge goes to Foss - # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146730 - expected_message = if Gitlab.ee? - "Set to auto-merge" - else - "Merge blocked:" - end - # rubocop:enable RSpec/AvoidConditionalStatements - expect(page.find('.ci-widget-content')).to have_content("Pipeline ##{pipeline.id}") - expect(page).to have_content expected_message + expect(page).to have_content "Set to auto-merge" page.within('.mr-state-widget') do click_button('Mark as ready') diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb index e88e5d915d7..665d62e0d7d 100644 --- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb @@ -39,16 +39,6 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', sign_in(user) end - # rubocop:disable RSpec/AvoidConditionalStatements - def mr_widget_title - if Gitlab.ee? - 'to be merged automatically when all merge checks pass' - else - 'to be merged automatically when the pipeline succeeds' - end - end - # rubocop:enable RSpec/AvoidConditionalStatements - context 'with feature flag `mr_pipelines_graphql turned off`' do before do stub_feature_flags(mr_pipelines_graphql: false) @@ -183,7 +173,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', context 'when detached merge request pipeline is pending' do it 'waits the head pipeline' do - expect(page).to have_content mr_widget_title + expect(page).to have_content 'to be merged automatically when all merge checks pass' expect(page).to have_button('Cancel auto-merge') end end @@ -197,7 +187,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end it 'waits the head pipeline' do - expect(page).to have_content mr_widget_title + expect(page).to have_content 'to be merged automatically when all merge checks pass' expect(page).to have_button('Cancel auto-merge') end end @@ -402,7 +392,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', context 'when detached merge request pipeline is pending' do it 'waits the head pipeline' do - expect(page).to have_content mr_widget_title + expect(page).to have_content 'to be merged automatically when all merge checks pass' expect(page).to have_button('Cancel auto-merge') end end @@ -428,7 +418,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end it 'waits the head pipeline' do - expect(page).to have_content mr_widget_title + expect(page).to have_content 'to be merged automatically when all merge checks pass' expect(page).to have_button('Cancel auto-merge') end end diff --git a/spec/features/merge_request/user_sees_merge_widget_spec.rb b/spec/features/merge_request/user_sees_merge_widget_spec.rb index 0928394b571..465f40b6c9a 100644 --- a/spec/features/merge_request/user_sees_merge_widget_spec.rb +++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb @@ -343,19 +343,15 @@ RSpec.describe 'Merge request > User sees merge widget', :js, feature_category: expect(page).not_to have_selector('.accept-merge-request') end end - # TODO When moving merge when checks pass to FOSS - # context 'when using merge when checks pass' do - # before do - # stub_feature_flags(merge_when_checks_pass: true) - # end - # - # it 'is not allowed to set auto merge' do - # # Wait for the `ci_status` and `merge_check` requests - # wait_for_requests - # - # expect(page).to have_selector('.accept-merge-request') - # end - # end + + context 'when using merge when checks pass' do + it 'is not allowed to set auto merge' do + # Wait for the `ci_status` and `merge_check` requests + wait_for_requests + + expect(page).to have_selector('.accept-merge-request') + end + end end context 'view merge request with MWPS enabled but automatically merge fails' do diff --git a/spec/features/merge_request/user_sets_to_auto_merge_spec.rb b/spec/features/merge_request/user_sets_to_auto_merge_spec.rb index aa690ebfd94..720ed04c317 100644 --- a/spec/features/merge_request/user_sets_to_auto_merge_spec.rb +++ b/spec/features/merge_request/user_sets_to_auto_merge_spec.rb @@ -47,24 +47,10 @@ RSpec.describe 'Merge request > User sets to auto-merge', :js, feature_category: click_button "Set to auto-merge" wait_for_requests - # rubocop:disable RSpec/AvoidConditionalStatements -- Removed when moving MWCP to FOSS: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146730 - set_auto_merge_msg = if Gitlab.ee? - 'when all merge checks pass' - else - 'when the pipeline succeeds' - end - - enabled_auto_merge_msg = if Gitlab.ee? - /all merge checks for \h{8} pass/ - else - /the pipeline for \h{8} succeeds/ - end - # rubocop:enable RSpec/AvoidConditionalStatements - - expect(page).to have_content "Set by #{user.name} to be merged automatically #{set_auto_merge_msg}" + expect(page).to have_content "Set by #{user.name} to be merged automatically when all merge checks pass" expect(page).to have_content "Source branch will not be deleted" expect(page).to have_selector ".js-cancel-auto-merge" - expect(page).to have_content(/enabled an automatic merge when #{enabled_auto_merge_msg}/i) + expect(page).to have_content(/enabled an automatic merge when all merge checks for \h{8} pass/i) end end diff --git a/spec/finders/import/source_users_finder_spec.rb b/spec/finders/import/source_users_finder_spec.rb new file mode 100644 index 00000000000..27a117a4b78 --- /dev/null +++ b/spec/finders/import/source_users_finder_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Import::SourceUsersFinder, feature_category: :importers do + let_it_be(:user) { build_stubbed(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:import_source_users) { create_list(:import_source_user, 3, namespace: group) } + + describe '#execute' do + subject(:source_user_result) { described_class.new(group, user).execute } + + context 'when user is authorized to read the import source users' do + before do + stub_member_access_level(group, owner: user) + end + + it 'returns all import source users' do + expect(source_user_result).to match_array(import_source_users) + end + end + + context 'when user is not authorized to read the import source users' do + before do + stub_member_access_level(group, maintainer: user) + end + + it 'is empty' do + expect(source_user_result).to be_empty + end + end + end +end diff --git a/spec/finders/packages/conan/package_finder_spec.rb b/spec/finders/packages/conan/package_finder_spec.rb index 787cb256486..53efd0e8763 100644 --- a/spec/finders/packages/conan/package_finder_spec.rb +++ b/spec/finders/packages/conan/package_finder_spec.rb @@ -53,7 +53,7 @@ RSpec.describe ::Packages::Conan::PackageFinder, feature_category: :package_regi end context 'with project' do - subject { described_class.new(user, params, project: project).execute } + let(:finder) { described_class.new(user, params, project: project) } it { is_expected.to match_array([conan_package2, conan_package]) } @@ -63,6 +63,34 @@ RSpec.describe ::Packages::Conan::PackageFinder, feature_category: :package_regi expect(subject).to match_array([conan_package2]) end + context 'with version' do + let_it_be(:conan_package3) do + create(:conan_package, project: project, name: conan_package.name, version: '1.2.3') + end + + let(:query) { "#{conan_package.name}/#{conan_package3.version}" } + + it 'matches the correct package' do + expect(subject).to match_array([conan_package3]) + end + end + + context 'with nil query' do + let(:query) { nil } + + it 'returns an empty array' do + expect(subject).to match_array([]) + end + end + + context 'without name' do + let(:query) { "/1.0.0" } + + it 'returns an empty array' do + expect(subject).to match_array([]) + end + end + context 'with a different project' do let_it_be(:project) { private_project } diff --git a/spec/frontend/members/components/placeholders/mock_data.js b/spec/frontend/members/components/placeholders/mock_data.js index 725f5037994..b672d50a1a9 100644 --- a/spec/frontend/members/components/placeholders/mock_data.js +++ b/spec/frontend/members/components/placeholders/mock_data.js @@ -2,12 +2,96 @@ export const mockPlaceholderUsers = [ { avatar_url: 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', - name: 'Administrator', - username: '@root', + name: 'Placeholder 1', + username: 'placeholder-1', source_hostname: 'https://gitlab.com', source_username: '@old_root', status: 'pending_assignment', }, + { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Placeholder 2', + username: 'placeholder-2', + source_hostname: 'https://gitlab.com', + source_username: '@old_root', + status: 'awaiting_approval', + reassignToUser: { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: '@root2', + }, + }, + { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Placeholder 3', + username: 'placeholder-3', + source_hostname: 'https://gitlab.com', + source_username: '@old_root', + status: 'rejected', + }, + { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Placeholder 4', + username: 'placeholder-4', + source_hostname: 'https://gitlab.com', + source_username: '@old_root', + status: 'reassignment_in_progress', + reassignToUser: { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: '@root4', + }, + }, + { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Placeholder 5', + username: 'placeholder-5', + source_hostname: 'https://gitlab.com', + source_username: '@old_root', + status: 'failed', + reassignToUser: { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: '@root5', + }, + }, + { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Placeholder 6', + username: 'placeholder-6', + source_hostname: 'https://gitlab.com', + source_username: '@old_root', + status: 'keep_as_placeholder', + reassignToUser: { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: '@root6', + }, + }, + { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Placeholder 7', + username: 'placeholder-7', + source_hostname: 'https://gitlab.com', + source_username: '@old_root', + status: 'completed', + reassignToUser: { + avatar_url: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: '@root7', + }, + }, ]; export const mockUser1 = { diff --git a/spec/frontend/members/components/placeholders/placeholder_actions_spec.js b/spec/frontend/members/components/placeholders/placeholder_actions_spec.js index bf6c2c936fb..27dcb989928 100644 --- a/spec/frontend/members/components/placeholders/placeholder_actions_spec.js +++ b/spec/frontend/members/components/placeholders/placeholder_actions_spec.js @@ -1,4 +1,4 @@ -import Vue from 'vue'; +import Vue, { nextTick } from 'vue'; import VueApollo from 'vue-apollo'; import { GlCollapsibleListbox } from '@gitlab/ui'; import { createAlert } from '~/alert'; @@ -9,6 +9,7 @@ import waitForPromises from 'helpers/wait_for_promises'; import PlaceholderActions from '~/members/components/placeholders/placeholder_actions.vue'; import searchUsersQuery from '~/graphql_shared/queries/users_search_all_paginated.query.graphql'; import { + mockPlaceholderUsers, mockUser1, mockUser2, mockUsersQueryResponse, @@ -23,17 +24,26 @@ describe('PlaceholderActions', () => { let mockApollo; const usersQueryHandler = jest.fn().mockResolvedValue(mockUsersQueryResponse); + const $toast = { + show: jest.fn(), + }; - const createComponent = ({ queryHandler = usersQueryHandler } = {}) => { + const createComponent = ({ queryHandler = usersQueryHandler, props = {} } = {}) => { mockApollo = createMockApollo([[searchUsersQuery, queryHandler]]); wrapper = shallowMountExtended(PlaceholderActions, { apolloProvider: mockApollo, + propsData: { + ...props, + }, + mocks: { $toast }, }); }; const findListbox = () => wrapper.findComponent(GlCollapsibleListbox); const findDontReassignButton = () => wrapper.findByTestId('dont-reassign-button'); + const findNotifyButton = () => wrapper.findByTestId('notify-button'); + const findCancelButton = () => wrapper.findByTestId('cancel-button'); const findConfirmButton = () => wrapper.findByTestId('confirm-button'); it('renders listbox with infinite scroll', () => { @@ -74,6 +84,19 @@ describe('PlaceholderActions', () => { await waitForPromises(); }); + describe('when nothing is selected', () => { + it('does not render validation message initially', () => { + expect(wrapper.findByText('This field is required.').exists()).toBe(false); + }); + + it('renders validation message when Confirm button is clicked', async () => { + findConfirmButton().vm.$emit('click'); + await nextTick(); + + expect(wrapper.findByText('This field is required.').exists()).toBe(true); + }); + }); + describe('when "Don\'t reassign" is selected', () => { beforeEach(() => { findDontReassignButton().vm.$emit('click'); @@ -86,6 +109,12 @@ describe('PlaceholderActions', () => { it('renders confirm button as "Confirm"', () => { expect(findConfirmButton().text()).toBe('Confirm'); }); + + it('emits "confirm" event when Confirm button is clicked', () => { + findConfirmButton().vm.$emit('click'); + + expect(wrapper.emitted('confirm')[0]).toEqual([undefined]); + }); }); describe('when user is selected', () => { @@ -100,6 +129,12 @@ describe('PlaceholderActions', () => { it('renders confirm button as "Reassign"', () => { expect(findConfirmButton().text()).toBe('Reassign'); }); + + it('emits "confirm" event when Reassign button is clicked', () => { + findConfirmButton().vm.$emit('click'); + + expect(wrapper.emitted('confirm')[0]).toEqual([mockUser1.id]); + }); }); }); @@ -152,4 +187,106 @@ describe('PlaceholderActions', () => { }); }); }); + + describe('when status is pending_assignment', () => { + beforeEach(() => { + createComponent({ + props: { + placeholder: { status: 'pending_assignment' }, + }, + }); + }); + + it('does not render Notify button', () => { + expect(findNotifyButton().exists()).toBe(false); + }); + + it('does not render Cancel button', () => { + expect(findCancelButton().exists()).toBe(false); + }); + + it('renders Confirm button', () => { + expect(findConfirmButton().exists()).toBe(true); + }); + }); + + describe('when status is awaiting_approval', () => { + const mockPlaceholder = mockPlaceholderUsers[3]; + + beforeEach(() => { + createComponent({ + props: { + placeholder: { + ...mockPlaceholder, + status: 'awaiting_approval', + }, + }, + }); + }); + + it('renders disabled listbox with @username toggle text', () => { + expect(findListbox().props()).toMatchObject({ + toggleText: mockPlaceholder.reassignToUser.username, + disabled: true, + }); + }); + + it('renders Notify button', () => { + expect(findCancelButton().props('disabled')).toBe(false); + }); + + it('renders Cancel button', () => { + expect(findCancelButton().props('disabled')).toBe(false); + }); + + it('does not render Confirm button', () => { + expect(findConfirmButton().exists()).toBe(false); + }); + + it('shows toast when Notify button is clicked', () => { + findNotifyButton().vm.$emit('click'); + + expect($toast.show).toHaveBeenCalledWith('Notification email sent.'); + }); + + it('emits "cancel" event when Cancel button is clicked', () => { + findCancelButton().vm.$emit('click'); + + expect(wrapper.emitted('cancel')[0]).toEqual([]); + }); + }); + + describe('when status is reassignment_in_progress', () => { + const mockPlaceholder = mockPlaceholderUsers[3]; + + beforeEach(() => { + createComponent({ + props: { + placeholder: { + ...mockPlaceholder, + status: 'reassignment_in_progress', + }, + }, + }); + }); + + it('renders disabled listbox with @username toggle text', () => { + expect(findListbox().props()).toMatchObject({ + toggleText: mockPlaceholder.reassignToUser.username, + disabled: true, + }); + }); + + it('renders disabled Notify button', () => { + expect(findCancelButton().props('disabled')).toBe(true); + }); + + it('renders disabled Cancel button', () => { + expect(findCancelButton().props('disabled')).toBe(true); + }); + + it('does not render Confirm button', () => { + expect(findConfirmButton().exists()).toBe(false); + }); + }); }); diff --git a/spec/frontend/members/components/placeholders/placeholders_table_spec.js b/spec/frontend/members/components/placeholders/placeholders_table_spec.js index f362c724865..d6df442cb0d 100644 --- a/spec/frontend/members/components/placeholders/placeholders_table_spec.js +++ b/spec/frontend/members/components/placeholders/placeholders_table_spec.js @@ -35,18 +35,17 @@ describe('PlaceholdersTable', () => { }; const findTable = () => wrapper.findComponent(GlTableLite); + const findTableRows = () => findTable().findAll('tbody > tr'); const findTableFields = () => findTable() .props('fields') .map((f) => f.label); - const findBadge = () => wrapper.findComponent(GlBadge); - const findBadgeTooltip = () => getBinding(findBadge().element, 'gl-tooltip'); - it('renders table', () => { - createComponent(); + createComponent({ mountFn: mount }); expect(findTable().exists()).toBe(true); + expect(findTableRows().length).toBe(mockPlaceholderUsers.length); expect(findTableFields()).toEqual([ 'Placeholder user', 'Source', @@ -58,7 +57,7 @@ describe('PlaceholdersTable', () => { it('renders avatar', () => { createComponent({ mountFn: mount }); - const avatar = findTable().findComponent(GlAvatarLabeled); + const avatar = findTableRows().at(0).findComponent(GlAvatarLabeled); expect(avatar.props()).toMatchObject({ label: mockPlaceholderUsers[0].name, @@ -70,20 +69,62 @@ describe('PlaceholdersTable', () => { it('renders source info', () => { createComponent({ mountFn: mount }); - expect(findTable().find('tbody tr').text()).toContain(mockPlaceholderUsers[0].source_hostname); + expect(findTableRows().at(0).text()).toContain(mockPlaceholderUsers[0].source_hostname); }); it('renders status badge with tooltip', () => { createComponent({ mountFn: mount }); - expect(findBadge().text()).toBe('Not started'); - expect(findBadgeTooltip().value).toBe('Reassignment has not started.'); + const firstRow = findTableRows().at(0); + const badge = firstRow.findComponent(GlBadge); + const badgeTooltip = getBinding(badge.element, 'gl-tooltip'); + + expect(badge.text()).toBe('Not started'); + expect(badgeTooltip.value).toBe('Reassignment has not started.'); }); - it('renders actions', () => { - createComponent(); + it('renders actions when item is not reassigned', () => { + createComponent({ mountFn: mount }); - expect(findTable().findComponent(PlaceholderActions).exists()).toBe(true); + const firstRow = findTableRows().at(0); + const actions = firstRow.findComponent(PlaceholderActions); + + expect(actions.props('placeholder')).toEqual(mockPlaceholderUsers[0]); + }); + + it('renders avatar of final user when item is reassigned', () => { + createComponent({ mountFn: mount }); + + const reassignedItemRow = findTableRows().at(5); + const actionsAvatar = reassignedItemRow.findAllComponents(GlAvatarLabeled).at(1); + + expect(actionsAvatar.props()).toMatchObject({ + label: mockPlaceholderUsers[5].reassignToUser.name, + subLabel: mockPlaceholderUsers[5].reassignToUser.username, + }); + }); + + describe('actions events', () => { + beforeEach(() => { + createComponent({ mountFn: mount }); + }); + + it('emits "confirm" event with item and selectedUserId', () => { + const selectedUserId = 647; + const actions = findTableRows().at(2).findComponent(PlaceholderActions); + + actions.vm.$emit('confirm', selectedUserId); + + expect(wrapper.emitted('confirm')[0]).toEqual([mockPlaceholderUsers[2], selectedUserId]); + }); + + it('emits "cancel" event with item and selectedUserId', () => { + const actions = findTableRows().at(2).findComponent(PlaceholderActions); + + actions.vm.$emit('cancel'); + + expect(wrapper.emitted('cancel')[0]).toEqual([mockPlaceholderUsers[2]]); + }); }); describe('when is "Re-assigned" table variant', () => { diff --git a/spec/frontend/members/components/table/members_table_spec.js b/spec/frontend/members/components/table/members_table_spec.js index 1800b5c5e0a..fef33855d37 100644 --- a/spec/frontend/members/components/table/members_table_spec.js +++ b/spec/frontend/members/components/table/members_table_spec.js @@ -1,8 +1,7 @@ -import { GlTable, GlButton, GlBadge } from '@gitlab/ui'; +import { GlTable, GlButton } from '@gitlab/ui'; import Vue, { nextTick } from 'vue'; // eslint-disable-next-line no-restricted-imports import Vuex from 'vuex'; -import { cloneDeep } from 'lodash'; import { mountExtended } from 'helpers/vue_test_utils_helper'; import CreatedAt from '~/members/components/table/created_at.vue'; import ExpirationDatepicker from '~/members/components/table/expiration_datepicker.vue'; @@ -13,7 +12,7 @@ import MemberActivity from '~/members/components/table/member_activity.vue'; import MembersTable from '~/members/components/table/members_table.vue'; import MembersPagination from '~/members/components/table/members_pagination.vue'; import MaxRole from '~/members/components/table/max_role.vue'; -import RoleDetailsDrawer from '~/members/components/table/role_details_drawer.vue'; +import RoleDetailsDrawer from '~/members/components/table/drawer/role_details_drawer.vue'; import { MEMBERS_TAB_TYPES, MEMBER_STATE_CREATED, @@ -87,7 +86,6 @@ describe('MembersTable', () => { const findTable = () => wrapper.findComponent(GlTable); const findRoleDetailsDrawer = () => wrapper.findComponent(RoleDetailsDrawer); const findRoleButton = () => wrapper.findComponent(GlButton); - const findCustomRoleBadge = () => wrapper.findByTestId('max-role').findComponent(GlBadge); const findTableCellByMemberId = (tableCellLabel, memberId) => wrapper .findByTestId(`members-table-row-${memberId}`) @@ -136,22 +134,6 @@ describe('MembersTable', () => { expect(findRoleButton().text()).toBe('Owner'); }); - describe('custom role badge', () => { - it('shows the badge for a custom role', () => { - const member = cloneDeep(memberMock); - member.accessLevel.memberRoleId = 1; - createMaxRoleComponent(member); - - expect(findCustomRoleBadge().text()).toBe('Custom role'); - }); - - it('does not show badge for a standard role', () => { - createMaxRoleComponent(); - - expect(findCustomRoleBadge().exists()).toBe(false); - }); - }); - describe('disabled state', () => { it.each` phrase | busy diff --git a/spec/frontend/members/components/table/role_details_drawer_spec.js b/spec/frontend/members/components/table/role_details_drawer_spec.js index fb5a86916d1..eadf305116d 100644 --- a/spec/frontend/members/components/table/role_details_drawer_spec.js +++ b/spec/frontend/members/components/table/role_details_drawer_spec.js @@ -4,10 +4,10 @@ import axios from 'axios'; import { nextTick } from 'vue'; import { cloneDeep } from 'lodash'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import RoleDetailsDrawer from '~/members/components/table/role_details_drawer.vue'; +import RoleDetailsDrawer from '~/members/components/table/drawer/role_details_drawer.vue'; import MembersTableCell from '~/members/components/table/members_table_cell.vue'; import MemberAvatar from '~/members/components/table/member_avatar.vue'; -import RoleSelector from '~/members/components/table/role_selector.vue'; +import RoleSelector from '~/members/components/table/drawer/role_selector.vue'; import { roleDropdownItems } from '~/members/utils'; import waitForPromises from 'helpers/wait_for_promises'; import { member as memberData, updateableMember } from '../../mock_data'; diff --git a/spec/frontend/members/components/table/role_selector_spec.js b/spec/frontend/members/components/table/role_selector_spec.js index 37bd866d21e..c5c3a59ee2d 100644 --- a/spec/frontend/members/components/table/role_selector_spec.js +++ b/spec/frontend/members/components/table/role_selector_spec.js @@ -1,7 +1,7 @@ import { GlCollapsibleListbox } from '@gitlab/ui'; import { mountExtended } from 'helpers/vue_test_utils_helper'; import { roleDropdownItems } from '~/members/utils'; -import RoleSelector from '~/members/components/table/role_selector.vue'; +import RoleSelector from '~/members/components/table/drawer/role_selector.vue'; import { member } from '../../mock_data'; jest.mock('~/lib/utils/url_utility', () => ({ diff --git a/spec/frontend/organizations/groups_and_projects/components/app_spec.js b/spec/frontend/organizations/groups_and_projects/components/app_spec.js index 91f39afb42d..5a48bfad1ec 100644 --- a/spec/frontend/organizations/groups_and_projects/components/app_spec.js +++ b/spec/frontend/organizations/groups_and_projects/components/app_spec.js @@ -1,3 +1,6 @@ +import VueApollo from 'vue-apollo'; +import VueRouter from 'vue-router'; +import Vue from 'vue'; import { GlCollapsibleListbox } from '@gitlab/ui'; import App from '~/organizations/groups_and_projects/components/app.vue'; import GroupsView from '~/organizations/shared/components/groups_view.vue'; @@ -23,22 +26,53 @@ import { } from '~/filtered_search/recent_searches_storage_keys'; import FilteredSearchAndSort from '~/groups_projects/components/filtered_search_and_sort.vue'; import { createRouter } from '~/organizations/groups_and_projects'; +import userPreferencesUpdate from '~/organizations/groups_and_projects/graphql/mutations/user_preferences_update.mutation.graphql'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; +import createMockApollo from 'helpers/mock_apollo_helper'; +import waitForPromises from 'helpers/wait_for_promises'; + +jest.mock('~/sentry/sentry_browser_wrapper'); + +Vue.use(VueApollo); +Vue.use(VueRouter); describe('GroupsAndProjectsApp', () => { - const router = createRouter(); - const routerMock = { - push: jest.fn(), - }; const mockEndCursor = 'mockEndCursor'; const mockStartCursor = 'mockStartCursor'; + const defaultProvide = { + userPreferenceSortName: SORT_ITEM_NAME.value, + userPreferenceSortDirection: SORT_DIRECTION_ASC, + userPreferenceDisplay: null, + }; + const userPreferencesUpdateSuccessHandler = jest.fn().mockResolvedValue({ + data: { + userPreferencesUpdate: { + userPreferences: { + organizationGroupsProjectsSort: 'updated_asc', + organizationGroupsProjectsDisplay: 'PROJECTS', + }, + }, + }, + }); let wrapper; + let mockApollo; + let router; + + const createComponent = ({ + routeQuery = { [FILTERED_SEARCH_TERM_KEY]: 'foo' }, + provide = {}, + userPreferencesUpdateHandler = userPreferencesUpdateSuccessHandler, + } = {}) => { + mockApollo = createMockApollo([[userPreferencesUpdate, userPreferencesUpdateHandler]]); + router = createRouter(); + router.push({ query: routeQuery }); - const createComponent = ({ routeQuery = { [FILTERED_SEARCH_TERM_KEY]: 'foo' } } = {}) => { wrapper = shallowMountExtended(App, { + apolloProvider: mockApollo, router, - mocks: { $route: { path: '/', query: routeQuery }, $router: routerMock }, + provide: { ...defaultProvide, ...provide }, }); }; @@ -49,6 +83,11 @@ describe('GroupsAndProjectsApp', () => { const findNewGroupButton = () => wrapper.findComponent(NewGroupButton); const findNewProjectButton = () => wrapper.findComponent(NewProjectButton); + afterEach(() => { + mockApollo = null; + router = null; + }); + it('renders page title as Groups and projects', () => { createComponent(); @@ -131,6 +170,51 @@ describe('GroupsAndProjectsApp', () => { }); }); + describe('when `userPreferenceSortName` and `userPreferenceSortDirection` is set', () => { + beforeEach(() => { + createComponent({ + provide: { + userPreferenceSortName: SORT_ITEM_CREATED_AT.value, + userPreferenceSortDirection: SORT_DIRECTION_DESC, + }, + }); + }); + + it('renders filtered search bar with correct sort props', () => { + expect(findFilteredSearchAndSort().props()).toMatchObject({ + activeSortOption: SORT_ITEM_CREATED_AT, + isAscending: false, + }); + }); + + it('renders view component with correct sort props', () => { + expect(wrapper.findComponent(GroupsView).props()).toMatchObject({ + sortName: SORT_ITEM_CREATED_AT.value, + sortDirection: SORT_DIRECTION_DESC, + }); + }); + }); + + describe('when `userPreferenceDisplay` is set', () => { + beforeEach(() => { + createComponent({ + provide: { + userPreferenceDisplay: RESOURCE_TYPE_PROJECTS, + }, + }); + }); + + it('renders display listbox with correct item selected', () => { + expect(findListbox().props()).toMatchObject({ + selected: RESOURCE_TYPE_PROJECTS, + }); + }); + + it('renders correct view component', () => { + expect(wrapper.findComponent(ProjectsView).exists()).toBe(true); + }); + }); + describe('actions', () => { beforeEach(() => { createComponent(); @@ -156,9 +240,7 @@ describe('GroupsAndProjectsApp', () => { }); it(`updates \`${FILTERED_SEARCH_TERM_KEY}\` query string`, () => { - expect(routerMock.push).toHaveBeenCalledWith({ - query: { [FILTERED_SEARCH_TERM_KEY]: searchTerm }, - }); + expect(router.currentRoute.query).toEqual({ [FILTERED_SEARCH_TERM_KEY]: searchTerm }); }); }); @@ -166,13 +248,13 @@ describe('GroupsAndProjectsApp', () => { const searchTerm = 'fo'; beforeEach(() => { - createComponent(); + createComponent({ routeQuery: {} }); findFilteredSearchAndSort().vm.$emit('filter', { [FILTERED_SEARCH_TERM_KEY]: searchTerm }); }); it('does not update query string', () => { - expect(routerMock.push).not.toHaveBeenCalled(); + expect(router.currentRoute.query).toEqual({}); }); }); @@ -184,27 +266,32 @@ describe('GroupsAndProjectsApp', () => { }); it('updates query string', () => { - expect(routerMock.push).toHaveBeenCalledWith({ - query: { foo: 'bar' }, - }); + expect(router.currentRoute.query).toEqual({ foo: 'bar' }); }); }); }); describe('when display listbox is changed', () => { - beforeEach(() => { + beforeEach(async () => { createComponent(); findListbox().vm.$emit('select', RESOURCE_TYPE_PROJECTS); + await waitForPromises(); }); it('updates `display` query string', () => { - expect(routerMock.push).toHaveBeenCalledWith({ query: { display: RESOURCE_TYPE_PROJECTS } }); + expect(router.currentRoute.query.display).toBe(RESOURCE_TYPE_PROJECTS); + }); + + it('calls `userPreferencesUpdate` mutation with correct variables', () => { + expect(userPreferencesUpdateSuccessHandler).toHaveBeenCalledWith({ + input: { organizationGroupsProjectsDisplay: 'PROJECTS' }, + }); }); }); describe('when sort item is changed', () => { - beforeEach(() => { + beforeEach(async () => { createComponent({ routeQuery: { display: RESOURCE_TYPE_PROJECTS, @@ -215,21 +302,26 @@ describe('GroupsAndProjectsApp', () => { }); findFilteredSearchAndSort().vm.$emit('sort-by-change', SORT_ITEM_CREATED_AT.value); + await waitForPromises(); }); it('updates `sort_name` query string', () => { - expect(routerMock.push).toHaveBeenCalledWith({ - query: { - display: RESOURCE_TYPE_PROJECTS, - sort_name: SORT_ITEM_CREATED_AT.value, - [FILTERED_SEARCH_TERM_KEY]: 'foo', - }, + expect(router.currentRoute.query).toMatchObject({ + display: RESOURCE_TYPE_PROJECTS, + sort_name: SORT_ITEM_CREATED_AT.value, + [FILTERED_SEARCH_TERM_KEY]: 'foo', + }); + }); + + it('calls `userPreferencesUpdate` mutation with correct variables', () => { + expect(userPreferencesUpdateSuccessHandler).toHaveBeenCalledWith({ + input: { organizationGroupsProjectsSort: 'CREATED_ASC' }, }); }); }); describe('when sort direction is changed', () => { - beforeEach(() => { + beforeEach(async () => { createComponent({ routeQuery: { display: RESOURCE_TYPE_PROJECTS, @@ -240,17 +332,38 @@ describe('GroupsAndProjectsApp', () => { }); findFilteredSearchAndSort().vm.$emit('sort-direction-change', false); + await waitForPromises(); }); it('updates `sort_direction` query string', () => { - expect(routerMock.push).toHaveBeenCalledWith({ - query: { - display: RESOURCE_TYPE_PROJECTS, - sort_direction: SORT_DIRECTION_DESC, - [FILTERED_SEARCH_TERM_KEY]: 'foo', - }, + expect(router.currentRoute.query).toMatchObject({ + display: RESOURCE_TYPE_PROJECTS, + sort_direction: SORT_DIRECTION_DESC, + [FILTERED_SEARCH_TERM_KEY]: 'foo', }); }); + + it('calls `userPreferencesUpdate` mutation with correct variables', () => { + expect(userPreferencesUpdateSuccessHandler).toHaveBeenCalledWith({ + input: { organizationGroupsProjectsSort: 'NAME_DESC' }, + }); + }); + }); + + describe('when `userPreferencesUpdate` mutation fails', () => { + const error = new Error(); + const errorHandler = jest.fn().mockRejectedValue(error); + + beforeEach(async () => { + createComponent({ userPreferencesUpdateHandler: errorHandler }); + + findListbox().vm.$emit('select', RESOURCE_TYPE_PROJECTS); + await waitForPromises(); + }); + + it('captures error in Sentry', () => { + expect(Sentry.captureException).toHaveBeenCalledWith(error); + }); }); describe(`when \`${FILTERED_SEARCH_TERM_KEY}\` query string is not set`, () => { @@ -275,8 +388,9 @@ describe('GroupsAndProjectsApp', () => { }); it('sets `end_cursor` query string', () => { - expect(routerMock.push).toHaveBeenCalledWith({ - query: { display: RESOURCE_TYPE_PROJECTS, end_cursor: mockEndCursor }, + expect(router.currentRoute.query).toMatchObject({ + display: RESOURCE_TYPE_PROJECTS, + end_cursor: mockEndCursor, }); }); }); @@ -297,8 +411,9 @@ describe('GroupsAndProjectsApp', () => { hasPreviousPage: true, }); - expect(routerMock.push).toHaveBeenCalledWith({ - query: { display: RESOURCE_TYPE_PROJECTS, start_cursor: mockStartCursor }, + expect(router.currentRoute.query).toMatchObject({ + display: RESOURCE_TYPE_PROJECTS, + start_cursor: mockStartCursor, }); }); }); diff --git a/spec/frontend/organizations/groups_and_projects/utils_spec.js b/spec/frontend/organizations/groups_and_projects/utils_spec.js new file mode 100644 index 00000000000..17710b2bfe3 --- /dev/null +++ b/spec/frontend/organizations/groups_and_projects/utils_spec.js @@ -0,0 +1,45 @@ +import { + SORT_ITEM_NAME, + SORT_ITEM_CREATED_AT, + SORT_ITEM_UPDATED_AT, + SORT_DIRECTION_DESC, + SORT_DIRECTION_ASC, +} from '~/organizations/shared/constants'; +import { + userPreferenceSortName, + userPreferenceSortDirection, +} from '~/organizations/groups_and_projects/utils'; + +describe('userPreferenceSortName', () => { + it.each` + userPreferenceSort | expected + ${null} | ${SORT_ITEM_NAME.value} + ${'unsupported_sort'} | ${SORT_ITEM_NAME.value} + ${'name_asc'} | ${SORT_ITEM_NAME.value} + ${'name_desc'} | ${SORT_ITEM_NAME.value} + ${'created_asc'} | ${SORT_ITEM_CREATED_AT.value} + ${'created_desc'} | ${SORT_ITEM_CREATED_AT.value} + ${'updated_asc'} | ${SORT_ITEM_UPDATED_AT.value} + ${'updated_desc'} | ${SORT_ITEM_UPDATED_AT.value} + `( + 'returns $expected when userPreferenceSort argument is $userPreferenceSort', + ({ userPreferenceSort, expected }) => { + expect(userPreferenceSortName(userPreferenceSort)).toBe(expected); + }, + ); +}); + +describe('userPreferenceSortDirection', () => { + it.each` + userPreferenceSort | expected + ${null} | ${SORT_DIRECTION_ASC} + ${'unsupported_sort'} | ${SORT_DIRECTION_ASC} + ${'name_asc'} | ${SORT_DIRECTION_ASC} + ${'name_desc'} | ${SORT_DIRECTION_DESC} + `( + 'returns $expected when userPreferenceSort argument is $userPreferenceSort', + ({ userPreferenceSort, expected }) => { + expect(userPreferenceSortDirection(userPreferenceSort)).toBe(expected); + }, + ); +}); diff --git a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled_spec.js b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled_spec.js index 65d170cae8b..8fd247de3ad 100644 --- a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled_spec.js @@ -4,7 +4,7 @@ import { trimText } from 'helpers/text_helper'; import { extendedWrapper } from 'helpers/vue_test_utils_helper'; import waitForPromises from 'helpers/wait_for_promises'; import autoMergeEnabledComponent from '~/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue'; -import { MWPS_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants'; +import { MWPS_MERGE_STRATEGY, MWCP_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants'; import eventHub from '~/vue_merge_request_widget/event_hub'; import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service'; @@ -36,7 +36,7 @@ function factory(propsData, stateOverride = {}) { service: new MRWidgetService({}), }, data() { - return { ...convertPropsToGraphqlState(propsData), ...stateOverride }; + return { state: { ...convertPropsToGraphqlState(propsData), ...stateOverride } }; }, mocks: { $apollo: { @@ -150,6 +150,15 @@ describe('MRWidgetAutoMergeEnabled', () => { expect(getStatusText()).toContain('to be merged automatically when the pipeline succeeds'); }); + it('should render the status text as "to be merged automatically..." if MWCP is selected', () => { + factory({ + ...defaultMrProps(), + autoMergeStrategy: MWCP_MERGE_STRATEGY, + }); + + expect(getStatusText()).toContain('to be merged automatically when all merge checks pass'); + }); + it('should render the cancel button as "Cancel" if MWPS is selected', () => { factory({ ...defaultMrProps(), diff --git a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js index c9121a0d14c..fb91b6eaf45 100644 --- a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_ready_to_merge_spec.js @@ -14,7 +14,7 @@ import CommitMessageDropdown from '~/vue_merge_request_widget/components/states/ import ReadyToMerge from '~/vue_merge_request_widget/components/states/ready_to_merge.vue'; import SquashBeforeMerge from '~/vue_merge_request_widget/components/states/squash_before_merge.vue'; import MergeFailedPipelineConfirmationDialog from '~/vue_merge_request_widget/components/states/merge_failed_pipeline_confirmation_dialog.vue'; -import { MWPS_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants'; +import { MWPS_MERGE_STRATEGY, MWCP_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants'; import eventHub from '~/vue_merge_request_widget/event_hub'; import readyToMergeSubscription from '~/vue_merge_request_widget/queries/states/ready_to_merge.subscription.graphql'; @@ -215,6 +215,13 @@ describe('ReadyToMerge', () => { expect(findMergeHelperText().text()).toBe('Merge when pipeline succeeds'); }); + it('should return Set to auto-merge in the button and Merge when checks pass in the helper text', () => { + createComponent({ mr: { preferredAutoMergeStrategy: MWCP_MERGE_STRATEGY } }); + + expect(findMergeButton().text()).toBe('Set to auto-merge'); + expect(findMergeHelperText().text()).toBe('Merge when pipeline succeeds'); + }); + it('should show merge help text when pipeline has failed and has an auto merge strategy', () => { createComponent({ mr: { diff --git a/spec/frontend/vue_merge_request_widget/stores/get_state_key_spec.js b/spec/frontend/vue_merge_request_widget/stores/get_state_key_spec.js index ec43ca342bc..5f1f619aaa5 100644 --- a/spec/frontend/vue_merge_request_widget/stores/get_state_key_spec.js +++ b/spec/frontend/vue_merge_request_widget/stores/get_state_key_spec.js @@ -1,4 +1,5 @@ import getStateKey from '~/vue_merge_request_widget/stores/get_state_key'; +import { DETAILED_MERGE_STATUS, MWCP_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants'; describe('getStateKey', () => { it('should return proper state name', () => { @@ -48,4 +49,29 @@ describe('getStateKey', () => { expect(bound()).toEqual('archived'); }); + + describe('AutoMergeStrategy "merge_when_checks_pass"', () => { + const createContext = (detailedMergeStatus, preferredAutoMergeStrategy, autoMergeEnabled) => ({ + canMerge: true, + commitsCount: 2, + detailedMergeStatus, + preferredAutoMergeStrategy, + autoMergeEnabled, + }); + + it.each` + scenario | detailedMergeStatus | autoMergeEnabled | state + ${'MWCP and not approved'} | ${DETAILED_MERGE_STATUS.NOT_APPROVED} | ${false} | ${'readyToMerge'} + ${'MWCP and approved'} | ${DETAILED_MERGE_STATUS.MERGEABLE} | ${false} | ${'readyToMerge'} + `( + 'when $scenario, state should equal $state', + ({ detailedMergeStatus, autoMergeEnabled, state }) => { + const bound = getStateKey.bind( + createContext(detailedMergeStatus, MWCP_MERGE_STRATEGY, autoMergeEnabled), + ); + + expect(bound()).toBe(state); + }, + ); + }); }); diff --git a/spec/graphql/mutations/merge_requests/accept_spec.rb b/spec/graphql/mutations/merge_requests/accept_spec.rb index 550e4eb8ea5..312aa49824a 100644 --- a/spec/graphql/mutations/merge_requests/accept_spec.rb +++ b/spec/graphql/mutations/merge_requests/accept_spec.rb @@ -90,15 +90,32 @@ RSpec.describe Mutations::MergeRequests::Accept do context 'when MR has head pipeline' do let(:merge_request) { create(:merge_request, :with_head_pipeline, source_project: project) } - let(:strategy) { ::Types::MergeStrategyEnum.values['MERGE_WHEN_PIPELINE_SUCCEEDS'].value } + let(:strategy) { ::Types::MergeStrategyEnum.values['MERGE_WHEN_CHECKS_PASS'].value } let(:additional_args) { { auto_merge_strategy: strategy } } - it "can use the MERGE_WHEN_PIPELINE_SUCCEEDS strategy" do + it "can use the MERGE_WHEN_CHECKS_PASS strategy" do expect_next_found_instance_of(MergeRequest) do |instance| expect(instance).not_to receive(:merge_async) end expect(result).to include(errors: be_empty, merge_request: be_auto_merge_enabled) end + + context 'when merge_when_checks_pass is off' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + let(:merge_request) { create(:merge_request, :with_head_pipeline, source_project: project) } + let(:strategy) { ::Types::MergeStrategyEnum.values['MERGE_WHEN_PIPELINE_SUCCEEDS'].value } + let(:additional_args) { { auto_merge_strategy: strategy } } + + it "can use the MERGE_WHEN_PIPELINE_SUCCEEDS strategy" do + expect_next_found_instance_of(MergeRequest) do |instance| + expect(instance).not_to receive(:merge_async) + end + expect(result).to include(errors: be_empty, merge_request: be_auto_merge_enabled) + end + end end end end diff --git a/spec/graphql/resolvers/import/source_users_resolver_spec.rb b/spec/graphql/resolvers/import/source_users_resolver_spec.rb new file mode 100644 index 00000000000..c908791dc12 --- /dev/null +++ b/spec/graphql/resolvers/import/source_users_resolver_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Resolvers::Import::SourceUsersResolver, feature_category: :importers do + include GraphqlHelpers + + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:import_source_users) { create_list(:import_source_user, 3, namespace: group) } + let(:args) { {} } + let(:current_user) { user } + + before_all do + group.add_owner(user) + end + + specify do + expect(described_class).to have_nullable_graphql_type(Types::Import::SourceUserType.connection_type) + end + + describe '#resolve' do + it 'returns all import source users' do + expect(resolve_import_source_users).to match_array(import_source_users) + end + + context 'when user is not authorized' do + let(:current_user) { create(:user) } + + it { expect(resolve_import_source_users).to eq(nil) } + end + + context 'when `bulk_import_user_mapping` feature flag is diabled' do + before do + stub_feature_flags(bulk_import_user_mapping: false) + end + + it { expect(resolve_import_source_users).to be_empty } + end + end + + def resolve_import_source_users + resolve(described_class, args: args, ctx: { current_user: current_user }, obj: group) + end +end diff --git a/spec/graphql/types/ci/catalog/resources/components/input_type_enum_spec.rb b/spec/graphql/types/ci/catalog/resources/components/input_type_enum_spec.rb new file mode 100644 index 00000000000..393fbdec0d8 --- /dev/null +++ b/spec/graphql/types/ci/catalog/resources/components/input_type_enum_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['CiCatalogResourceComponentInputType'], feature_category: :pipeline_composition do + it 'exposes all the existing input types' do + expect(described_class.values.keys).to contain_exactly( + *%w[ARRAY BOOLEAN NUMBER STRING] + ) + end +end diff --git a/spec/graphql/types/ci/catalog/resources/components/input_type_spec.rb b/spec/graphql/types/ci/catalog/resources/components/input_type_spec.rb index cb716cfff8c..2397e193ad0 100644 --- a/spec/graphql/types/ci/catalog/resources/components/input_type_spec.rb +++ b/spec/graphql/types/ci/catalog/resources/components/input_type_spec.rb @@ -7,9 +7,12 @@ RSpec.describe Types::Ci::Catalog::Resources::Components::InputType, feature_cat it 'exposes the expected fields' do expected_fields = %i[ - name default + description + name + regex required + type ] expect(described_class).to have_graphql_fields(*expected_fields) diff --git a/spec/graphql/types/ci/pipeline_type_spec.rb b/spec/graphql/types/ci/pipeline_type_spec.rb index 7be9f59f2c9..e3d52dac458 100644 --- a/spec/graphql/types/ci/pipeline_type_spec.rb +++ b/spec/graphql/types/ci/pipeline_type_spec.rb @@ -16,7 +16,7 @@ RSpec.describe Types::Ci::PipelineType, feature_category: :continuous_integratio upstream path project active user_permissions warnings commit commit_path uses_needs test_report_summary test_suite ref ref_path warning_messages merge_request_event_type name total_jobs triggered_by_path child source stuck - latest merge_request ref_text failure_reason yaml_errors yaml_error_messages trigger + latest merge_request ref_text failure_reason yaml_errors yaml_error_messages trigger manual_variables ] if Gitlab.ee? @@ -28,4 +28,55 @@ RSpec.describe Types::Ci::PipelineType, feature_category: :continuous_integratio expect(described_class).to have_graphql_fields(*expected_fields) end + + describe 'manual_variables' do + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:pipeline) { create(:ci_pipeline, project: project) } + let(:query) do + %( + { + project(fullPath: "#{project.full_path}") { + id + pipeline(iid: "#{pipeline.iid}") { + id + iid + startedAt + manualVariables { + nodes { + key + value + } + } + } + } + } + ) + end + + let(:manual_variables) { data.dig('data', 'project', 'pipeline', 'manualVariables', 'nodes') } + + subject(:data) { GitlabSchema.execute(query, context: { current_user: user }).as_json } + + before do + project.add_role(user, user_access_level) # rubocop:disable RSpec/BeforeAllRoleAssignment -- need dynamic settings `user_access_level` + create(:ci_pipeline_variable, pipeline: pipeline, key: 'TRIGGER_KEY_1', value: 'TRIGGER_VALUE_1') + end + + context 'when user has access to read variables' do + let(:user_access_level) { :owner } + + it 'returns the manual variables' do + expect(manual_variables).to match_array([{ 'key' => 'TRIGGER_KEY_1', 'value' => 'TRIGGER_VALUE_1' }]) + end + end + + context 'when user does not have access to read variables' do + let(:user_access_level) { :developer } + + it 'returns the manual variables with nil values' do + expect(manual_variables).to match_array([{ 'key' => 'TRIGGER_KEY_1', 'value' => nil }]) + end + end + end end diff --git a/spec/graphql/types/import/source_user_status_enum_spec.rb b/spec/graphql/types/import/source_user_status_enum_spec.rb new file mode 100644 index 00000000000..9d024e91ee5 --- /dev/null +++ b/spec/graphql/types/import/source_user_status_enum_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['ImportSourceUserStatus'], feature_category: :importers do + specify { expect(described_class.graphql_name).to eq('ImportSourceUserStatus') } + + describe 'statuses' do + it 'exposes a status with the correct value' do + expect(described_class.values.keys).to match_array( + %w[ + AWAITING_APPROVAL + COMPLETED + FAILED + KEEP_AS_PLACEHOLDER + PENDING_ASSIGNMENT + REASSIGNMENT_IN_PROGRESS + REJECTED + ] + ) + end + end +end diff --git a/spec/graphql/types/import/source_user_type_spec.rb b/spec/graphql/types/import/source_user_type_spec.rb new file mode 100644 index 00000000000..30a49fd1c15 --- /dev/null +++ b/spec/graphql/types/import/source_user_type_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['ImportSourceUser'], feature_category: :importers do + specify { expect(described_class.graphql_name).to eq('ImportSourceUser') } + + specify { expect(described_class).to require_graphql_authorizations(:admin_import_source_user) } + + it 'exposes the expected fields' do + expected_fields = %i[ + id + importType + placeholderUser + reassignedByUser + reassignToUser + sourceHostname + sourceName + sourceUserIdentifier + sourceUsername + status + ] + + expect(described_class).to have_graphql_fields(*expected_fields) + end +end diff --git a/spec/graphql/types/namespace_type_spec.rb b/spec/graphql/types/namespace_type_spec.rb index a76f6242f86..6c68663a647 100644 --- a/spec/graphql/types/namespace_type_spec.rb +++ b/spec/graphql/types/namespace_type_spec.rb @@ -9,7 +9,7 @@ RSpec.describe GitlabSchema.types['Namespace'] do expected_fields = %w[ id name path full_name full_path achievements_path description description_html visibility lfs_enabled request_access_enabled projects root_storage_statistics shared_runners_setting - timelog_categories achievements work_item pages_deployments + timelog_categories achievements work_item pages_deployments import_source_users ] expect(described_class).to include_graphql_fields(*expected_fields) diff --git a/spec/helpers/merge_requests_helper_spec.rb b/spec/helpers/merge_requests_helper_spec.rb index 6231f9af2e3..d79c2f1c03f 100644 --- a/spec/helpers/merge_requests_helper_spec.rb +++ b/spec/helpers/merge_requests_helper_spec.rb @@ -14,6 +14,21 @@ RSpec.describe MergeRequestsHelper, feature_category: :code_review_workflow do let_it_be(:current_user) { create(:user) } + describe '#merge_params' do + let(:merge_request) { create(:merge_request) } + + it 'returns the expected params' do + expect(merge_params(merge_request)).to eq( + { + auto_merge_strategy: AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS, + should_remove_source_branch: true, + sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0', + squash: false + } + ) + end + end + describe '#format_mr_branch_names' do describe 'within the same project' do let(:merge_request) { create(:merge_request) } diff --git a/spec/helpers/organizations/organization_helper_spec.rb b/spec/helpers/organizations/organization_helper_spec.rb index c29cf1c1367..0f218d0997e 100644 --- a/spec/helpers/organizations/organization_helper_spec.rb +++ b/spec/helpers/organizations/organization_helper_spec.rb @@ -210,7 +210,9 @@ RSpec.describe Organizations::OrganizationHelper, feature_category: :cell do 'groups_empty_state_svg_path' => groups_empty_state_svg_path, 'projects_empty_state_svg_path' => projects_empty_state_svg_path, 'organization_groups_projects_sort' => 'name_asc', - 'organization_groups_projects_display' => 'projects' + 'organization_groups_projects_display' => 'projects', + 'user_preference_sort' => 'name_asc', + 'user_preference_display' => 'projects' } ) end diff --git a/spec/lib/api/entities/projects/container_registry/protection/rule_spec.rb b/spec/lib/api/entities/projects/container_registry/protection/rule_spec.rb new file mode 100644 index 00000000000..e39ba0383b0 --- /dev/null +++ b/spec/lib/api/entities/projects/container_registry/protection/rule_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe API::Entities::Projects::ContainerRegistry::Protection::Rule, feature_category: :container_registry do + let(:container_registry_protection_rule) { create(:container_registry_protection_rule) } + + subject(:entity) { described_class.new(container_registry_protection_rule).as_json } + + it 'exposes correct attributes' do + expect(entity.keys).to match_array [ + :id, + :project_id, + :repository_path_pattern, + :minimum_access_level_for_push, + :minimum_access_level_for_delete + ] + end +end diff --git a/spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb b/spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb index ad0dad05a0e..485a1722566 100644 --- a/spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb +++ b/spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb @@ -255,6 +255,37 @@ RSpec.describe Gitlab::Ci::Build::Rules::Rule::Clause::Changes, feature_category ) end end + + context 'when using variable expansion' do + let(:context) { instance_double(Gitlab::Ci::Build::Context::Base) } + let(:variables_hash) { { 'FEATURE_BRANCH_NAME_PREFIX' => 'feature_' } } + let(:globs) { { paths: ['file2.txt'], compare_to: '${FEATURE_BRANCH_NAME_PREFIX}1' } } + let(:pipeline) { build(:ci_pipeline, project: project, ref: 'feature_2', sha: project.commit('feature_2').sha) } + + before do + allow(context).to receive(:variables_hash).and_return(variables_hash) + end + + context 'when ci_expand_variables_in_compare_to is true' do + before do + stub_feature_flags(ci_expand_variables_in_compare_to: true) + end + + it { is_expected.to be_truthy } + end + + context 'when ci_expand_variables_in_compare_to is false' do + before do + stub_feature_flags(ci_expand_variables_in_compare_to: false) + end + + it 'raises ParseError' do + expect { satisfied_by }.to raise_error( + ::Gitlab::Ci::Build::Rules::Rule::Clause::ParseError, 'rules:changes:compare_to is not a valid ref' + ) + end + end + end end end end diff --git a/spec/lib/gitlab/empty_search_results_spec.rb b/spec/lib/gitlab/empty_search_results_spec.rb deleted file mode 100644 index e79586bef68..00000000000 --- a/spec/lib/gitlab/empty_search_results_spec.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Gitlab::EmptySearchResults do - subject { described_class.new } - - describe '#objects' do - it 'returns an empty array' do - expect(subject.objects).to match_array([]) - end - end - - describe '#formatted_count' do - it 'returns a zero' do - expect(subject.formatted_count).to eq('0') - end - end - - describe '#highlight_map' do - it 'returns an empty hash' do - expect(subject.highlight_map).to eq({}) - end - end - - describe '#aggregations' do - it 'returns an empty array' do - expect(subject.objects).to match_array([]) - end - end -end diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 7edeeeb2590..31484dd1a27 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -2,6 +2,7 @@ issues: - subscriptions - award_emoji +- own_award_emoji - author - assignees - updated_by @@ -1012,6 +1013,7 @@ design_versions: *version epic: - subscriptions - award_emoji +- own_award_emoji - description_versions - author - assignee diff --git a/spec/lib/search/empty_search_results_spec.rb b/spec/lib/search/empty_search_results_spec.rb new file mode 100644 index 00000000000..0a59b07ffa8 --- /dev/null +++ b/spec/lib/search/empty_search_results_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ::Search::EmptySearchResults, feature_category: :global_search do + subject(:results) { described_class.new } + + describe '#objects' do + it 'returns an empty array' do + expect(results.objects).to match_array([]) + end + end + + describe '#formatted_count' do + it 'returns a zero' do + expect(results.formatted_count).to eq('0') + end + end + + describe '#highlight_map' do + it 'returns an empty hash' do + expect(results.highlight_map).to eq({}) + end + end + + describe '#aggregations' do + it 'returns an empty array' do + expect(results.aggregations).to match_array([]) + end + end + + describe '#failed?' do + it 'returns false' do + expect(results.failed?).to eq false + end + end +end diff --git a/spec/models/import/source_user_spec.rb b/spec/models/import/source_user_spec.rb index de485804e10..1979c71e28e 100644 --- a/spec/models/import/source_user_spec.rb +++ b/spec/models/import/source_user_spec.rb @@ -50,12 +50,14 @@ RSpec.describe Import::SourceUser, type: :model, feature_category: :importers do end it 'unsets reassign_to_user when assignment is cancelled' do - expect { source_user.cancel_assignment! } + expect { source_user.cancel_reassignment! } .to change { source_user.reload.reassign_to_user } .from(an_instance_of(User)).to(nil) end it 'unsets reassign_to_user when kept as placeholder' do + source_user = create(:import_source_user, :with_reassign_to_user) + expect { source_user.keep_as_placeholder! } .to change { source_user.reload.reassign_to_user } .from(an_instance_of(User)).to(nil) @@ -115,4 +117,38 @@ RSpec.describe Import::SourceUser, type: :model, feature_category: :importers do )).to be_nil end end + + describe '#reassignable_status?' do + reassignable_statuses = [:pending_assignment, :rejected] + all_states = described_class.state_machines[:status].states + + all_states.reject { |state| reassignable_statuses.include?(state.name) }.each do |state| + it "returns false for #{state.name}" do + expect(described_class.new(status: state.value).reassignable_status?).to eq(false) + end + end + + all_states.select { |state| reassignable_statuses.include?(state.name) }.each do |state| + it "returns true for #{state.name}" do + expect(described_class.new(status: state.value).reassignable_status?).to eq(true) + end + end + end + + describe '#cancelable_status?' do + cancelable_statuses = [:awaiting_approval, :rejected] + all_states = described_class.state_machines[:status].states + + all_states.reject { |state| cancelable_statuses.include?(state.name) }.each do |state| + it "returns false for #{state.name}" do + expect(described_class.new(status: state.value).cancelable_status?).to eq(false) + end + end + + all_states.select { |state| cancelable_statuses.include?(state.name) }.each do |state| + it "returns true for #{state.name}" do + expect(described_class.new(status: state.value).cancelable_status?).to eq(true) + end + end + end end diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 2884a8b1f3c..d22f6f38bc9 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -2222,7 +2222,15 @@ RSpec.describe MergeRequest, factory_default: :keep, feature_category: :code_rev let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } - it { is_expected.to eq('merge_when_pipeline_succeeds') } + it { is_expected.to eq('merge_when_checks_pass') } + + context 'when merge_when_checks_pass is false' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it { is_expected.to eq('merge_when_pipeline_succeeds') } + end context 'when auto merge is disabled' do let(:merge_request) { create(:merge_request) } @@ -2231,6 +2239,22 @@ RSpec.describe MergeRequest, factory_default: :keep, feature_category: :code_rev end end + describe '#default_auto_merge_strategy' do + subject { merge_request.default_auto_merge_strategy } + + let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + + it { is_expected.to eq(AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS) } + + context 'when merge_when_checks_pass feature flag is off' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it { is_expected.to eq(AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) } + end + end + describe '#committers' do let(:commits) { double } let(:committers) { double } diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index bc325356373..51e32d473a6 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -9505,4 +9505,10 @@ RSpec.describe Project, factory_default: :keep, feature_category: :groups_and_pr it { expect(project.supports_saved_replies?).to eq(false) } end + + describe '#merge_trains_enabled?' do + let_it_be(:project) { create(:project) } + + it { expect(project.merge_trains_enabled?).to eq(false) } + end end diff --git a/spec/policies/import/source_user_policy_spec.rb b/spec/policies/import/source_user_policy_spec.rb new file mode 100644 index 00000000000..5f2b38d0b9f --- /dev/null +++ b/spec/policies/import/source_user_policy_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Import::SourceUserPolicy, feature_category: :importers do + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:user_namespace) { create(:namespace, owner: user) } + + subject { described_class.new(user, import_source_user) } + + describe 'admin_import_source_user' do + context 'when import source user is associated with a user namespace' do + let(:import_source_user) { create(:import_source_user, namespace: user_namespace) } + + context 'when user owns the namespace' do + it { is_expected.to be_allowed(:admin_import_source_user) } + end + + context 'when user does not own the namespace' do + let(:user) { create(:user) } + + it { is_expected.to be_disallowed(:admin_import_source_user) } + end + end + + context 'when import source user is associated with a group' do + let(:import_source_user) { create(:import_source_user, namespace: group) } + + context 'when user is an owner of the group' do + before_all do + group.add_owner(user) + end + + it { is_expected.to be_allowed(:admin_import_source_user) } + end + + context 'when user is not an owner of the group' do + before_all do + group.add_maintainer(user) + end + + it { is_expected.to be_disallowed(:admin_import_source_user) } + end + end + end +end diff --git a/spec/requests/api/graphql/ci/catalog/resource_spec.rb b/spec/requests/api/graphql/ci/catalog/resource_spec.rb index 47e9d94920f..ee7146d9deb 100644 --- a/spec/requests/api/graphql/ci/catalog/resource_spec.rb +++ b/spec/requests/api/graphql/ci/catalog/resource_spec.rb @@ -73,12 +73,16 @@ RSpec.describe 'Query.ciCatalogResource', feature_category: :pipeline_compositio let_it_be(:inputs) do { - website: nil, + access_token: nil, environment: { default: 'test' }, tags: { type: 'array' + }, + website: { + description: 'The website', + regex: '^https' } } end @@ -103,9 +107,12 @@ RSpec.describe 'Query.ciCatalogResource', feature_category: :pipeline_compositio name includePath inputs { - name default + description + name + regex required + type } } } @@ -126,23 +133,31 @@ RSpec.describe 'Query.ciCatalogResource', feature_category: :pipeline_compositio components.first, name: components.first.name, include_path: components.first.include_path, - inputs: [ + inputs: contain_exactly( + a_graphql_entity_for( + name: 'access_token', + required: true, + type: 'STRING' + ), a_graphql_entity_for( name: 'tags', - default: nil, - required: true + required: true, + type: 'ARRAY' ), a_graphql_entity_for( name: 'website', - default: nil, - required: true + required: true, + description: 'The website', + regex: '^https', + type: 'STRING' ), a_graphql_entity_for( name: 'environment', default: 'test', - required: false + required: false, + type: 'STRING' ) - ] + ) ), a_graphql_entity_for( components.last, diff --git a/spec/requests/api/graphql/import/import_source_users_query_spec.rb b/spec/requests/api/graphql/import/import_source_users_query_spec.rb new file mode 100644 index 00000000000..5a9261ef122 --- /dev/null +++ b/spec/requests/api/graphql/import/import_source_users_query_spec.rb @@ -0,0 +1,83 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Querying for import source users', feature_category: :importers do + include GraphqlHelpers + + let_it_be(:user) { create(:user) } + let(:current_user) { user } + + def query + graphql_query_for( + 'namespace', + { 'fullPath' => namespace.full_path }, + <<~IMPORT_SOURCE_USERS + importSourceUsers { + nodes { + id + } + } + IMPORT_SOURCE_USERS + ) + end + + describe 'for a group' do + let_it_be(:group) { create(:group) } + let_it_be(:import_source_users) { create_list(:import_source_user, 3, namespace: group) } + let_it_be(:namespace) { group } + + before do + post_graphql(query, current_user: current_user) + end + + context 'when user is authorized to query the import source users' do + before_all do + group.add_owner(user) + end + + it 'returns import source users' do + response_ids = graphql_data_at('namespace', 'importSourceUsers', 'nodes', 'id') + expected_ids = import_source_users.map { |u| global_id_of(u).to_s } + + expect(response_ids).to match_array(expected_ids) + end + end + + context 'when user is not authorized to query for the import source users' do + before_all do + group.add_maintainer(user) + end + + it 'does not return import source users' do + expect(graphql_data.dig('namespace', 'importSourceUsers')).to eq(nil) + end + end + end + + describe 'for user namespace' do + let_it_be(:namespace) { create(:namespace, owner: user) } + let_it_be(:import_source_users) { create_list(:import_source_user, 3, namespace: namespace) } + + before do + post_graphql(query, current_user: current_user) + end + + context 'when user is authorized to query the import source users' do + it 'returns import source users' do + response_ids = graphql_data.dig('namespace', 'importSourceUsers', 'nodes').pluck('id') + expected_ids = import_source_users.map { |u| u.to_global_id.to_s } + + expect(response_ids).to match_array(expected_ids) + end + end + + context 'when user is not authorized to query for the import source users' do + let(:current_user) { create(:user) } + + it 'does not return import source users' do + expect(graphql_data['namespace']).to eq(nil) + end + end + end +end diff --git a/spec/requests/api/graphql/mutations/import/source_users/cancel_reassignment_spec.rb b/spec/requests/api/graphql/mutations/import/source_users/cancel_reassignment_spec.rb new file mode 100644 index 00000000000..e2a0f76d93b --- /dev/null +++ b/spec/requests/api/graphql/mutations/import/source_users/cancel_reassignment_spec.rb @@ -0,0 +1,93 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Cancel an reassignment of an import source user', feature_category: :importers do + include GraphqlHelpers + + let_it_be(:current_user) { create(:user) } + let_it_be(:group) { create(:group) } + + let(:import_source_user) do + create(:import_source_user, :awaiting_approval, + reassign_to_user: current_user, reassigned_by_user: current_user, namespace: group + ) + end + + let(:variables) do + { + id: import_source_user.to_global_id + } + end + + let(:mutation) do + graphql_mutation(:import_source_user_cancel_reassignment, variables) do + <<~QL + clientMutationId + errors + importSourceUser { + reassignToUser { + id + } + reassignedByUser { + id + } + status + } + QL + end + end + + let(:mutation_response) { graphql_mutation_response(:import_source_user_cancel_reassignment) } + + context 'when user is authorized' do + before_all do + group.add_owner(current_user) + end + + it 'sets import user source status back to pending_assignment', :aggregate_failures do + post_graphql_mutation(mutation, current_user: current_user) + + import_source_user = mutation_response['importSourceUser'] + + expect(import_source_user['reassignedToUser']).to eq(nil) + expect(import_source_user['reassignedByUser']).to eq(nil) + expect(import_source_user['status']).to eq('PENDING_ASSIGNMENT') + end + + context 'when cancelation fails' do + let(:import_source_user) { create(:import_source_user, :completed, namespace: group) } + + it 'returns the reason and does not change import source user status', :aggregate_failures do + post_graphql_mutation(mutation, current_user: current_user) + + expect(mutation_response['errors']).to be_present + expect(mutation_response['importSourceUser']['status']).to eq('COMPLETED') + end + end + end + + context 'when user is not authorized' do + before_all do + group.add_maintainer(current_user) + end + + it_behaves_like 'a mutation that returns a top-level access error' + end + + context 'when feature flag `bulk_import_user_mapping`` disabled' do + before do + stub_feature_flags(bulk_import_user_mapping: false) + end + + it 'returns a resource not available error' do + post_graphql_mutation(mutation, current_user: current_user) + + expect(graphql_errors).to contain_exactly( + hash_including( + 'message' => '`bulk_import_user_mapping` feature flag is disabled.' + ) + ) + end + end +end diff --git a/spec/requests/api/graphql/mutations/import/source_users/keep_as_placeholder_spec.rb b/spec/requests/api/graphql/mutations/import/source_users/keep_as_placeholder_spec.rb new file mode 100644 index 00000000000..df4b1d28b80 --- /dev/null +++ b/spec/requests/api/graphql/mutations/import/source_users/keep_as_placeholder_spec.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Keep as placeholder an import source user', feature_category: :importers do + include GraphqlHelpers + + let_it_be(:current_user) { create(:user) } + let_it_be(:group) { create(:group) } + + let(:import_source_user) { create(:import_source_user, namespace: group) } + + let(:variables) do + { + id: import_source_user.to_global_id + } + end + + let(:mutation) do + graphql_mutation(:import_source_user_keep_as_placeholder, variables) do + <<~QL + clientMutationId + errors + importSourceUser { + reassignedByUser { + id + } + status + } + QL + end + end + + let(:mutation_response) { graphql_mutation_response(:import_source_user_keep_as_placeholder) } + + context 'when user is authorized' do + before_all do + group.add_owner(current_user) + end + + it 'sets import source as keep_as_placeholder', :aggregate_failures do + post_graphql_mutation(mutation, current_user: current_user) + + import_source_user = mutation_response['importSourceUser'] + + expect(import_source_user['reassignedByUser']['id']).to eq(current_user.to_global_id.to_s) + expect(import_source_user['status']).to eq('KEEP_AS_PLACEHOLDER') + end + + context 'when setting as keep_as_placeholder fails' do + let(:import_source_user) { create(:import_source_user, :completed, namespace: group) } + + it 'returns the reason and does not change import source user status', :aggregate_failures do + post_graphql_mutation(mutation, current_user: current_user) + + expect(mutation_response['errors']).to be_present + expect(mutation_response['importSourceUser']['status']).to eq('COMPLETED') + end + end + end + + context 'when user is not authorized' do + before_all do + group.add_maintainer(current_user) + end + + it_behaves_like 'a mutation that returns a top-level access error' + end + + context 'when feature flag `bulk_import_user_mapping`` disabled' do + before do + stub_feature_flags(bulk_import_user_mapping: false) + end + + it 'returns a resource not available error' do + post_graphql_mutation(mutation, current_user: current_user) + + expect(graphql_errors).to contain_exactly( + hash_including( + 'message' => '`bulk_import_user_mapping` feature flag is disabled.' + ) + ) + end + end +end diff --git a/spec/requests/api/graphql/mutations/import/source_users/reassign_spec.rb b/spec/requests/api/graphql/mutations/import/source_users/reassign_spec.rb new file mode 100644 index 00000000000..a32430ce8ba --- /dev/null +++ b/spec/requests/api/graphql/mutations/import/source_users/reassign_spec.rb @@ -0,0 +1,91 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Reassign an import source user', feature_category: :importers do + include GraphqlHelpers + + let_it_be(:current_user) { create(:user) } + let_it_be(:assignee_user) { create(:user) } + let_it_be(:group) { create(:group) } + + let(:import_source_user) { create(:import_source_user, namespace: group) } + + let(:variables) do + { + id: import_source_user.to_global_id, + assignee_user_id: assignee_user.to_global_id + } + end + + let(:mutation) do + graphql_mutation(:import_source_user_reassign, variables) do + <<~QL + clientMutationId + errors + importSourceUser { + reassignToUser { + id + } + reassignedByUser { + id + } + status + } + QL + end + end + + let(:mutation_response) { graphql_mutation_response(:import_source_user_reassign) } + + context 'when user is authorized' do + before_all do + group.add_owner(current_user) + end + + it 'reassign import source user', :aggregate_failures do + post_graphql_mutation(mutation, current_user: current_user) + + import_source_user = mutation_response['importSourceUser'] + + expect(import_source_user['reassignToUser']['id']).to eq(global_id_of(assignee_user).to_s) + expect(import_source_user['reassignedByUser']['id']).to eq(global_id_of(current_user).to_s) + expect(import_source_user['status']).to eq('AWAITING_APPROVAL') + end + + context 'when the reassign fails' do + let(:assignee_user) { create(:user, :bot) } + + it 'returns the reason and does not change import source user status', :aggregate_failures do + post_graphql_mutation(mutation, current_user: current_user) + + expect(mutation_response['errors']).to be_present + expect(mutation_response['importSourceUser']['status']).to eq('PENDING_ASSIGNMENT') + end + end + end + + context 'when user is not authorized' do + before_all do + group.add_maintainer(current_user) + end + + it_behaves_like 'a mutation that returns a top-level access error' + end + + context 'when feature flag `bulk_import_user_mapping`` disabled' do + before do + stub_feature_flags(bulk_import_user_mapping: false) + end + + it 'returns a resource not available error' do + post_graphql_mutation(mutation, current_user: current_user) + + expect(graphql_errors).to contain_exactly( + hash_including( + 'message' => '`bulk_import_user_mapping` feature flag is disabled.' + ) + ) + end + end +end diff --git a/spec/requests/api/project_container_registry_protection_rules_spec.rb b/spec/requests/api/project_container_registry_protection_rules_spec.rb new file mode 100644 index 00000000000..dd00a28519b --- /dev/null +++ b/spec/requests/api/project_container_registry_protection_rules_spec.rb @@ -0,0 +1,104 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe API::ProjectContainerRegistryProtectionRules, feature_category: :container_registry do + include ExclusiveLeaseHelpers + + let_it_be(:project) { create(:project, :private) } + let_it_be(:other_project) { create(:project, :private) } + let_it_be(:container_registry_protection_rule) { create(:container_registry_protection_rule, project: project) } + + let_it_be(:maintainer) { create(:user, maintainer_of: [project, other_project]) } + let_it_be(:api_user) { create(:user) } + + let_it_be(:invalid_token) { 'invalid-token123' } + let_it_be(:headers_with_invalid_token) { { Gitlab::Auth::AuthFinders::PRIVATE_TOKEN_HEADER => invalid_token } } + + shared_examples 'rejecting project container protection rules request' do + using RSpec::Parameterized::TableSyntax + + where(:user_role, :status) do + :reporter | :forbidden + :developer | :forbidden + :guest | :forbidden + nil | :not_found + end + + with_them do + before do + project.send(:"add_#{user_role}", api_user) if user_role + end + + it_behaves_like 'returning response status', params[:status] + end + end + + describe 'GET /projects/:id/registry/protection/rules' do + let(:url) { "/projects/#{project.id}/registry/protection/rules" } + + subject(:get_container_registry_rules) { get(api(url, api_user)) } + + context 'when not enough permissions' do + it_behaves_like 'rejecting project container protection rules request' + end + + context 'for maintainer' do + let(:api_user) { maintainer } + + context 'with multiple container protection rules' do + let_it_be(:other_container_registry_protection_rule) do + create(:container_registry_protection_rule, + project: project, + repository_path_pattern: "#{container_registry_protection_rule.repository_path_pattern}-unique") + end + + it 'gets the container registry protection rules', :aggregate_failures do + get_container_registry_rules + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response.count).to eq(2) + expect(json_response.pluck('id')).to match_array([container_registry_protection_rule.id, + other_container_registry_protection_rule.id]) + end + end + + it 'contains the content of a container registry protection rule', :aggregate_failures do + get_container_registry_rules + + expect(json_response.first).to include( + 'project_id' => container_registry_protection_rule.project.id, + 'repository_path_pattern' => container_registry_protection_rule.repository_path_pattern, + 'minimum_access_level_for_push' => container_registry_protection_rule.minimum_access_level_for_push, + 'minimum_access_level_for_delete' => container_registry_protection_rule.minimum_access_level_for_delete + ) + end + + context 'when the project id is invalid' do + let(:url) { '/projects/invalid/registry/protection/rules' } + + it_behaves_like 'returning response status', :not_found + end + + context 'when the project id does not exist' do + let(:url) { "/projects/#{non_existing_record_id}/registry/protection/rules" } + + it_behaves_like 'returning response status', :not_found + end + + context 'when container_registry_protected_containers is disabled' do + before do + stub_feature_flags(container_registry_protected_containers: false) + end + + it_behaves_like 'returning response status', :not_found + end + end + + context 'with invalid token' do + subject(:get_container_registry_rules) { get(api(url), headers: headers_with_invalid_token) } + + it_behaves_like 'returning response status', :unauthorized + end + end +end diff --git a/spec/requests/groups/packages_controller_spec.rb b/spec/requests/groups/packages_controller_spec.rb index 8a7edbd5c0b..89d9b258bf7 100644 --- a/spec/requests/groups/packages_controller_spec.rb +++ b/spec/requests/groups/packages_controller_spec.rb @@ -6,6 +6,31 @@ RSpec.describe Groups::PackagesController, feature_category: :package_registry d let_it_be(:group) { create(:group, :public) } let_it_be(:project) { create(:project, :public, group: group) } + shared_examples 'having the feature flag "packagesProtectedPackages"' do + it { is_expected.to have_gitlab_http_status(:ok) } + it { is_expected.to have_attributes(body: have_pushed_frontend_feature_flags(packagesProtectedPackages: true)) } + + context 'when feature flag "packages_protected_packages" is disabled' do + before do + stub_feature_flags(packages_protected_packages: false) + end + + it { is_expected.to have_gitlab_http_status(:ok) } + it { is_expected.to have_attributes(body: have_pushed_frontend_feature_flags(packagesProtectedPackages: false)) } + end + end + + describe 'GET #index' do + subject do + get group_packages_path(group_id: group.full_path) + response + end + + it { is_expected.to have_gitlab_http_status(:ok) } + + it_behaves_like 'having the feature flag "packagesProtectedPackages"' + end + describe 'GET #show' do let_it_be(:package) { create(:package, project: project) } @@ -16,16 +41,6 @@ RSpec.describe Groups::PackagesController, feature_category: :package_registry d it { is_expected.to have_gitlab_http_status(:ok) } - it { is_expected.to have_attributes(body: have_pushed_frontend_feature_flags(packagesProtectedPackages: true)) } - - context 'when feature flag "packages_protected_packages" is disabled' do - before do - stub_feature_flags(packages_protected_packages: false) - end - - it { is_expected.to have_gitlab_http_status(:ok) } - - it { is_expected.to have_attributes(body: have_pushed_frontend_feature_flags(packagesProtectedPackages: false)) } - end + it_behaves_like 'having the feature flag "packagesProtectedPackages"' end end diff --git a/spec/serializers/merge_request_poll_widget_entity_spec.rb b/spec/serializers/merge_request_poll_widget_entity_spec.rb index 34844ab2b18..878bb8b0086 100644 --- a/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -52,7 +52,17 @@ RSpec.describe MergeRequestPollWidgetEntity do let(:resource) { create(:merge_request, :merge_when_pipeline_succeeds) } it 'returns auto merge related information' do - expect(subject[:auto_merge_strategy]).to eq('merge_when_pipeline_succeeds') + expect(subject[:auto_merge_strategy]).to eq('merge_when_checks_pass') + end + + context 'when merge_when_checks_pass is false' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it 'returns auto merge related information' do + expect(subject[:auto_merge_strategy]).to eq('merge_when_pipeline_succeeds') + end end end @@ -64,14 +74,24 @@ RSpec.describe MergeRequestPollWidgetEntity do end end - context 'when head pipeline is running', unless: Gitlab.ee? do + context 'when head pipeline is running' do before do create(:ci_pipeline, :running, project: project, ref: resource.source_branch, sha: resource.diff_head_sha) resource.update_head_pipeline end it 'returns available auto merge strategies' do - expect(subject[:available_auto_merge_strategies]).to eq(%w[merge_when_pipeline_succeeds]) + expect(subject[:available_auto_merge_strategies]).to eq(%w[merge_when_checks_pass]) + end + + context 'when the merge_when_checks_pass is false' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it 'returns available auto merge strategies' do + expect(subject[:available_auto_merge_strategies]).to eq(%w[merge_when_pipeline_succeeds]) + end end end diff --git a/spec/services/auto_merge/merge_when_checks_pass_service_spec.rb b/spec/services/auto_merge/merge_when_checks_pass_service_spec.rb new file mode 100644 index 00000000000..66ef2104680 --- /dev/null +++ b/spec/services/auto_merge/merge_when_checks_pass_service_spec.rb @@ -0,0 +1,248 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe AutoMerge::MergeWhenChecksPassService, feature_category: :code_review_workflow do + using RSpec::Parameterized::TableSyntax + + include_context 'for auto_merge strategy context' + + let(:approval_rule) do + create(:approval_merge_request_rule, merge_request: mr_merge_if_green_enabled, + approvals_required: approvals_required) + end + + describe '#available_for?' do + subject { service.available_for?(mr_merge_if_green_enabled) } + + let(:feature_flag) { true } + + before do + stub_feature_flags(merge_when_checks_pass: feature_flag) + end + + context 'when immediately mergeable' do + context 'when a non active pipeline' do + before do + create(:ci_pipeline, :success, + ref: mr_merge_if_green_enabled.source_branch, + sha: mr_merge_if_green_enabled.diff_head_sha, + project: mr_merge_if_green_enabled.source_project) + mr_merge_if_green_enabled.update_head_pipeline + end + + it { is_expected.to eq false } + end + + context 'when an active pipeline' do + before do + create(:ci_pipeline, :running, + ref: mr_merge_if_green_enabled.source_branch, + sha: mr_merge_if_green_enabled.diff_head_sha, + project: mr_merge_if_green_enabled.source_project) + mr_merge_if_green_enabled.update_head_pipeline + end + + it { is_expected.to eq true } + end + end + + context 'when merge when checks pass flag is off' do + let(:feature_flag) { false } + + it { is_expected.to eq false } + end + + context 'when draft status' do + before do + mr_merge_if_green_enabled.update!(title: 'Draft: check') + end + + it { is_expected.to eq true } + + context 'when merge_when_checks_pass flag is off' do + let(:feature_flag) { false } + + it { is_expected.to eq false } + end + end + + context 'when discussions open' do + before do + allow(mr_merge_if_green_enabled).to receive(:mergeable_discussions_state?).and_return(false) + allow(mr_merge_if_green_enabled) + .to receive(:only_allow_merge_if_all_discussions_are_resolved?).and_return(true) + end + + it { is_expected.to eq true } + + context 'when merge_when_checks_pass flag is off' do + let(:feature_flag) { false } + + it { is_expected.to eq false } + end + end + + context 'when pipline is active' do + before do + create(:ci_pipeline, :running, + ref: mr_merge_if_green_enabled.source_branch, + sha: mr_merge_if_green_enabled.diff_head_sha, + project: mr_merge_if_green_enabled.source_project) + + mr_merge_if_green_enabled.update_head_pipeline + end + + it { is_expected.to eq true } + + context 'when merge_when_checks_pass flag is off' do + let(:feature_flag) { false } + + it { is_expected.to eq false } + end + end + + context 'when the user does not have permission to merge' do + before do + allow(mr_merge_if_green_enabled).to receive(:can_be_merged_by?).and_return(false) + end + + it { is_expected.to eq false } + end + end + + describe "#execute" do + let(:merge_request) do + create(:merge_request, target_project: project, source_project: project, + source_branch: 'feature', target_branch: 'master') + end + + context 'when the MR is available for auto merge' do + let(:auto_merge_strategy) { ::AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS } + + before do + merge_request.update!(merge_params: { sha: pipeline.sha }, title: 'Draft: check') + end + + context 'when first time enabling' do + before do + allow(merge_request) + .to receive_messages(head_pipeline: pipeline, diff_head_pipeline: pipeline) + allow(MailScheduler::NotificationServiceWorker).to receive(:perform_async) + + service.execute(merge_request) + end + + it 'sets the params, merge_user, and flag' do + expect(merge_request).to be_valid + expect(merge_request.merge_when_pipeline_succeeds).to be_truthy + expect(merge_request.merge_params).to include 'commit_message' => 'Awesome message' + expect(merge_request.merge_user).to be user + expect(merge_request.auto_merge_strategy).to eq auto_merge_strategy + end + + it 'schedules a notification' do + expect(MailScheduler::NotificationServiceWorker).to have_received(:perform_async).with( + 'merge_when_pipeline_succeeds', merge_request, user).once + end + + it 'creates a system note' do + pipeline = build(:ci_pipeline) + allow(merge_request).to receive(:diff_head_pipeline) { pipeline } + + note = merge_request.notes.last + expect(note.note).to match "enabled an automatic merge when all merge checks for #{pipeline.sha} pass" + end + end + + context 'when mergeable' do + it 'updates the merge params' do + expect(SystemNoteService).not_to receive(:merge_when_pipeline_succeeds) + expect(MailScheduler::NotificationServiceWorker).not_to receive(:perform_async).with( + 'merge_when_pipeline_succeeds', any_args) + + service.execute(mr_merge_if_green_enabled) + end + end + end + end + + describe "#process" do + context 'when the merge request does not have a ci config' do + before do + allow(mr_merge_if_green_enabled).to receive(:has_ci_enabled?).and_return(false) + end + + context 'when the merge request is mergable' do + it 'calls the merge worker' do + expect(mr_merge_if_green_enabled) + .to receive(:merge_async) + .with(mr_merge_if_green_enabled.merge_user_id, mr_merge_if_green_enabled.merge_params) + + service.process(mr_merge_if_green_enabled) + end + end + + context 'when the merge request is not mergeable' do + it 'does not call the merge worker' do + expect(mr_merge_if_green_enabled).to receive(:mergeable?).and_return(false) + expect(mr_merge_if_green_enabled).not_to receive(:merge_async) + + service.process(mr_merge_if_green_enabled) + end + end + end + + context 'when the merge request has a ci config' do + before do + allow(mr_merge_if_green_enabled).to receive(:has_ci_enabled?).and_return(true) + end + + context 'when the pipeline has not succeeded' do + before do + allow(mr_merge_if_green_enabled).to receive(:diff_head_pipeline_success?).and_return(false) + end + + it 'does not call the merge worker' do + expect(mr_merge_if_green_enabled).not_to receive(:merge_async) + + service.process(mr_merge_if_green_enabled) + end + end + + context 'when the pipeline has succeeded' do + before do + allow(mr_merge_if_green_enabled).to receive(:diff_head_pipeline_success?).and_return(true) + allow(mr_merge_if_green_enabled).to receive(:mergeable_ci_state?).and_return(true) + end + + context 'when the merge request is mergable' do + it 'calls the merge worker' do + expect(mr_merge_if_green_enabled) + .to receive(:merge_async) + .with(mr_merge_if_green_enabled.merge_user_id, mr_merge_if_green_enabled.merge_params) + + service.process(mr_merge_if_green_enabled) + end + end + + context 'when the merge request is not mergeable' do + it 'does not call the merge worker' do + expect(mr_merge_if_green_enabled).to receive(:mergeable?).and_return(false) + expect(mr_merge_if_green_enabled).not_to receive(:merge_async) + + service.process(mr_merge_if_green_enabled) + end + end + end + end + end + + describe '#cancel' do + it_behaves_like 'auto_merge service #cancel' + end + + describe '#abort' do + it_behaves_like 'auto_merge service #abort' + end +end diff --git a/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb b/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb index 0644efd11bf..d9b8a10e338 100644 --- a/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb +++ b/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb @@ -5,6 +5,12 @@ require 'spec_helper' RSpec.describe AutoMerge::MergeWhenPipelineSucceedsService, feature_category: :code_review_workflow do include_context 'for auto_merge strategy context' + let(:merge_when_checks_pass_ff) { false } + + before do + stub_feature_flags(merge_when_checks_pass: merge_when_checks_pass_ff) + end + describe "#available_for?" do subject { service.available_for?(mr_merge_if_green_enabled) } @@ -23,6 +29,12 @@ RSpec.describe AutoMerge::MergeWhenPipelineSucceedsService, feature_category: :c it { is_expected.to be_truthy } + context 'when merge when checks ff is true' do + let(:merge_when_checks_pass_ff) { true } + + it { is_expected.to be_falsey } + end + it 'memoizes the result' do expect(mr_merge_if_green_enabled).to receive(:can_be_merged_by?).once.and_call_original diff --git a/spec/services/auto_merge_service_spec.rb b/spec/services/auto_merge_service_spec.rb index 6e068e4bf8e..846d2ace9d0 100644 --- a/spec/services/auto_merge_service_spec.rb +++ b/spec/services/auto_merge_service_spec.rb @@ -20,7 +20,8 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS ) else - is_expected.to eq([AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS]) + is_expected.to eq([AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS, + AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS]) end end end @@ -47,7 +48,17 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do end it 'returns available strategies' do - is_expected.to include('merge_when_pipeline_succeeds') + is_expected.to include('merge_when_checks_pass') + end + + context 'when merge_when_checks_pass is off' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it 'returns available strategies' do + is_expected.to include('merge_when_pipeline_succeeds') + end end context 'when the head piipeline succeeded' do @@ -82,14 +93,10 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do stub_licensed_features(merge_request_approvers: true) if Gitlab.ee? end - it 'returns preferred strategy', if: Gitlab.ee? do + it 'returns preferred strategy' do is_expected.to eq('merge_when_checks_pass') end - it 'returns preferred strategy', unless: Gitlab.ee? do - is_expected.to eq('merge_when_pipeline_succeeds') - end - context 'when the head pipeline succeeded' do let(:pipeline_status) { :success } @@ -125,7 +132,7 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do end let(:pipeline_status) { :running } - let(:strategy) { AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS } + let(:strategy) { AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS } before do create( @@ -139,12 +146,30 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do merge_request.update_head_pipeline end - it 'delegates to a relevant service instance' do - expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| - expect(service).to receive(:execute).with(merge_request) + context 'when the strategy is MWCP' do + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenChecksPassService) do |service| + expect(service).to receive(:execute).with(merge_request) + end + + subject + end + end + + context 'when the strategy is MWPS and merge_when_checks_pass is off' do + before do + stub_feature_flags(merge_when_checks_pass: false) end - subject + let(:strategy) { AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS } + + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| + expect(service).to receive(:execute).with(merge_request) + end + + subject + end end context 'when the head pipeline succeeded' do @@ -162,13 +187,9 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do stub_licensed_features(merge_request_approvers: true) if Gitlab.ee? end - it 'chooses the most preferred strategy', if: Gitlab.ee? do + it 'chooses the most preferred strategy' do is_expected.to eq(:merge_when_checks_pass) end - - it 'chooses the most preferred strategy', unless: Gitlab.ee? do - is_expected.to eq(:merge_when_pipeline_succeeds) - end end end @@ -176,14 +197,32 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do subject { service.update(merge_request) } # rubocop:disable Rails/SaveBang context 'when auto merge is enabled' do - let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + context 'when the merge request is MWCP' do + let(:merge_request) { create(:merge_request, :merge_when_checks_pass) } - it 'delegates to a relevant service instance' do - expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| - expect(service).to receive(:update).with(merge_request) + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenChecksPassService) do |service| + expect(service).to receive(:update).with(merge_request) + end + + subject + end + end + + context 'when the merge request is MWPS' do + let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + + before do + stub_feature_flags(merge_when_checks_pass: false) end - subject + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| + expect(service).to receive(:update).with(merge_request) + end + + subject + end end end @@ -199,14 +238,32 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do describe '#process' do subject { service.process(merge_request) } - let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + context 'when the merge request is MWCP' do + let(:merge_request) { create(:merge_request, :merge_when_checks_pass) } - it 'delegates to a relevant service instance' do - expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| - expect(service).to receive(:process).with(merge_request) + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenChecksPassService) do |service| + expect(service).to receive(:process).with(merge_request) + end + + subject + end + end + + context 'when the merge request is MWPS' do + let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + + before do + stub_feature_flags(merge_when_checks_pass: false) end - subject + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| + expect(service).to receive(:process).with(merge_request) + end + + subject + end end context 'when auto merge is not enabled' do @@ -221,14 +278,32 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do describe '#cancel' do subject { service.cancel(merge_request) } - let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + context 'when the merge request is MWCP' do + let(:merge_request) { create(:merge_request, :merge_when_checks_pass) } - it 'delegates to a relevant service instance' do - expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| - expect(service).to receive(:cancel).with(merge_request) + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenChecksPassService) do |service| + expect(service).to receive(:cancel).with(merge_request) + end + + subject + end + end + + context 'when the merge request is MWPS' do + let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + + before do + stub_feature_flags(merge_when_checks_pass: false) end - subject + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| + expect(service).to receive(:cancel).with(merge_request) + end + + subject + end end context 'when auto merge is not enabled' do @@ -245,15 +320,34 @@ RSpec.describe AutoMergeService, feature_category: :code_review_workflow do describe '#abort' do subject { service.abort(merge_request, error) } - let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } let(:error) { 'an error' } - it 'delegates to a relevant service instance' do - expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| - expect(service).to receive(:abort).with(merge_request, error) + context 'when the merge request is MWCP' do + let(:merge_request) { create(:merge_request, :merge_when_checks_pass) } + + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenChecksPassService) do |service| + expect(service).to receive(:abort).with(merge_request, error) + end + + subject + end + end + + context 'when the merge request is MWPS' do + let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } + + before do + stub_feature_flags(merge_when_checks_pass: false) end - subject + it 'delegates to a relevant service instance' do + expect_next_instance_of(AutoMerge::MergeWhenPipelineSucceedsService) do |service| + expect(service).to receive(:abort).with(merge_request, error) + end + + subject + end end context 'when auto merge is not enabled' do diff --git a/spec/services/ci/create_pipeline_service/rules_spec.rb b/spec/services/ci/create_pipeline_service/rules_spec.rb index 0c327234a70..67a45703919 100644 --- a/spec/services/ci/create_pipeline_service/rules_spec.rb +++ b/spec/services/ci/create_pipeline_service/rules_spec.rb @@ -741,6 +741,78 @@ RSpec.describe Ci::CreatePipelineService, :ci_config_feature_flag_correctness, f end end end + + context 'for jobs rules with variables' do + let(:config) do + <<-EOY + variables: + VALID_BRANCH_NAME: feature_1 + FEATURE_BRANCH_NAME_PREFIX: feature_ + INVALID_BRANCH_NAME: invalid-branch + job1: + script: exit 0 + rules: + - changes: + paths: [#{changed_file}] + compare_to: #{compare_to} + + job2: + script: exit 0 + EOY + end + + context 'when there is no such compare_to ref' do + let(:compare_to) { '${INVALID_BRANCH_NAME}' } + + it 'returns an error' do + expect(pipeline.errors.full_messages).to eq( + ['Failed to parse rule for job1: rules:changes:compare_to is not a valid ref'] + ) + end + end + + context 'when the compare_to ref exists' do + let(:compare_to) { '${FEATURE_BRANCH_NAME_PREFIX}1' } + + context 'when the rule in job1 matches' do + it 'creates job1 and job2' do + expect(build_names).to contain_exactly('job1', 'job2') + end + end + + context 'when the rule in job1 does not match' do + let(:changed_file) { 'file1.txt' } + + it 'does not create job1' do + expect(build_names).to contain_exactly('job2') + end + end + end + + context 'when the compare_to variable does not exist' do + let(:compare_to) { '$NON_EXISTENT_VAR' } + + it 'returns an error' do + expect(pipeline.errors.full_messages).to eq( + ['Failed to parse rule for job1: rules:changes:compare_to is not a valid ref'] + ) + end + end + + context 'when the compare_to variable feature flag is disabled' do + before do + stub_feature_flags(ci_expand_variables_in_compare_to: false) + end + + let(:compare_to) { '$VALID_BRANCH_NAME' } + + it 'returns an error' do + expect(pipeline.errors.full_messages).to eq( + ['Failed to parse rule for job1: rules:changes:compare_to is not a valid ref'] + ) + end + end + end end context 'for workflow rules' do diff --git a/spec/services/import/source_users/cancel_reassignment_service_spec.rb b/spec/services/import/source_users/cancel_reassignment_service_spec.rb new file mode 100644 index 00000000000..7a8d53e1c50 --- /dev/null +++ b/spec/services/import/source_users/cancel_reassignment_service_spec.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Import::SourceUsers::CancelReassignmentService, feature_category: :importers do + let(:user) { create(:user, :with_namespace) } + let(:import_source_user) do + create(:import_source_user, :awaiting_approval, + reassign_to_user: user, reassigned_by_user: user, namespace: user.namespace + ) + end + + let(:current_user) { user } + let(:service) { described_class.new(import_source_user, current_user: current_user) } + + describe '#execute' do + context 'when cancelation is successful' do + it 'returns success' do + result = service.execute + + expect(result).to be_success + expect(result.payload.reload).to eq(import_source_user) + expect(result.payload.reassigned_by_user).to eq(nil) + expect(result.payload.reassign_to_user).to eq(nil) + expect(result.payload.pending_assignment?).to eq(true) + end + end + + context 'when current user does not have permission' do + let(:current_user) { create(:user) } + + it 'returns error no permissions' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq('You have insufficient permissions to update the import source user') + end + end + + context 'when import source user does not have a cancelable status' do + before do + allow(import_source_user).to receive(:cancelable_status?).and_return(false) + end + + it 'returns error invalid status' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq('Import source user has an invalid status for this operation') + end + end + + context 'when an error occurs' do + before do + allow(import_source_user).to receive(:cancel_reassignment).and_return(false) + allow(import_source_user).to receive(:errors).and_return(instance_double(ActiveModel::Errors, + full_messages: ['Error'])) + end + + it 'returns an error' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq(['Error']) + end + end + end +end diff --git a/spec/services/import/source_users/keep_as_placeholder_service_spec.rb b/spec/services/import/source_users/keep_as_placeholder_service_spec.rb new file mode 100644 index 00000000000..a149df59c89 --- /dev/null +++ b/spec/services/import/source_users/keep_as_placeholder_service_spec.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Import::SourceUsers::KeepAsPlaceholderService, feature_category: :importers do + let(:import_source_user) { create(:import_source_user) } + let(:user) { import_source_user.namespace.owner } + let(:current_user) { user } + let(:service) { described_class.new(import_source_user, current_user: current_user) } + + describe '#execute' do + context 'when reassignment is successful' do + it 'returns success' do + result = service.execute + + expect(result).to be_success + expect(result.payload.reload).to eq(import_source_user) + expect(result.payload.reassigned_by_user).to eq(current_user) + expect(result.payload.keep_as_placeholder?).to eq(true) + end + end + + context 'when current user does not have permission' do + let(:current_user) { create(:user) } + + it 'returns error no permissions' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq('You have insufficient permissions to update the import source user') + end + end + + context 'when import source user does not have an reassignable status' do + before do + allow(current_user).to receive(:can?).with(:admin_import_source_user, import_source_user).and_return(true) + allow(import_source_user).to receive(:reassignable_status?).and_return(false) + end + + it 'returns error invalid status' do + result = service.execute + expect(result).to be_error + expect(result.message).to eq('Import source user has an invalid status for this operation') + end + end + + context 'when an error occurs' do + before do + allow(import_source_user).to receive(:keep_as_placeholder).and_return(false) + allow(import_source_user).to receive(:errors).and_return(instance_double(ActiveModel::Errors, + full_messages: ['Error'])) + end + + it 'returns an error' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq(['Error']) + end + end + end +end diff --git a/spec/services/import/source_users/reassign_service_spec.rb b/spec/services/import/source_users/reassign_service_spec.rb new file mode 100644 index 00000000000..d166af82cca --- /dev/null +++ b/spec/services/import/source_users/reassign_service_spec.rb @@ -0,0 +1,94 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Import::SourceUsers::ReassignService, feature_category: :importers do + let(:import_source_user) { create(:import_source_user) } + let(:user) { import_source_user.namespace.owner } + let(:current_user) { user } + let(:assignee_user) { create(:user) } + let(:service) { described_class.new(import_source_user, assignee_user, current_user: current_user) } + + describe '#execute' do + context 'when reassignment is successful' do + it 'returns success' do + result = service.execute + + expect(result).to be_success + expect(result.payload.reload).to eq(import_source_user) + expect(result.payload.reassign_to_user).to eq(assignee_user) + expect(result.payload.reassigned_by_user).to eq(current_user) + expect(result.payload.awaiting_approval?).to eq(true) + end + end + + context 'when current user does not have permission' do + let(:current_user) { create(:user) } + + it 'returns error no permissions' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq('You have insufficient permissions to update the import source user') + end + end + + context 'when import source user does not have an reassignable status' do + before do + allow(current_user).to receive(:can?).with(:admin_import_source_user, import_source_user).and_return(true) + allow(import_source_user).to receive(:reassignable_status?).and_return(false) + end + + it 'returns error invalid status' do + result = service.execute + expect(result).to be_error + expect(result.message).to eq('Import source user has an invalid status for this operation') + end + end + + context 'when assignee user does not exist' do + let(:assignee_user) { nil } + + it 'returns invalid assignee error' do + result = service.execute + expect(result).to be_error + expect(result.message).to eq('Only active regular, auditor, or administrator users can be assigned') + end + end + + context 'when assignee user is not a human' do + let(:assignee_user) { create(:user, :bot) } + + it 'returns invalid assignee error' do + result = service.execute + expect(result).to be_error + expect(result.message).to eq('Only active regular, auditor, or administrator users can be assigned') + end + end + + context 'when assignee user is not active' do + let(:assignee_user) { create(:user, :deactivated) } + + it 'returns invalid assignee error' do + result = service.execute + expect(result).to be_error + expect(result.message).to eq('Only active regular, auditor, or administrator users can be assigned') + end + end + + context 'when an error occurs' do + before do + allow(import_source_user).to receive(:reassign).and_return(false) + allow(import_source_user).to receive(:errors).and_return(instance_double(ActiveModel::Errors, + full_messages: ['Error'])) + end + + it 'returns an error' do + result = service.execute + + expect(result).to be_error + expect(result.message).to eq(['Error']) + end + end + end +end diff --git a/spec/services/merge_requests/merge_orchestration_service_spec.rb b/spec/services/merge_requests/merge_orchestration_service_spec.rb index faec5ac2fde..020d433352c 100644 --- a/spec/services/merge_requests/merge_orchestration_service_spec.rb +++ b/spec/services/merge_requests/merge_orchestration_service_spec.rb @@ -48,15 +48,9 @@ RSpec.describe MergeRequests::MergeOrchestrationService, feature_category: :code expect(merge_request).to be_auto_merge_enabled - if Gitlab.ee? - expect(merge_request.auto_merge_strategy).to( - eq(AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS) - ) - else - expect(merge_request.auto_merge_strategy).to( - eq(AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) - ) - end + expect(merge_request.auto_merge_strategy).to( + eq(AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS) + ) expect(merge_request).not_to be_merged end @@ -122,12 +116,18 @@ RSpec.describe MergeRequests::MergeOrchestrationService, feature_category: :code stub_licensed_features(merge_request_approvers: true) if Gitlab.ee? end - it 'fetches preferred auto merge strategy', if: Gitlab.ee? do + it 'fetches preferred auto merge strategy' do is_expected.to eq(AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS) end - it 'fetches preferred auto merge strategy', unless: Gitlab.ee? do - is_expected.to eq(AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) + context 'when merge_when_checks_pass feature is off' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it 'fetches preferred auto merge strategy' do + is_expected.to eq(AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) + end end end diff --git a/spec/services/merge_requests/post_merge_service_spec.rb b/spec/services/merge_requests/post_merge_service_spec.rb index 6d62a7c22fe..6069d4f82de 100644 --- a/spec/services/merge_requests/post_merge_service_spec.rb +++ b/spec/services/merge_requests/post_merge_service_spec.rb @@ -169,31 +169,35 @@ RSpec.describe MergeRequests::PostMergeService, feature_category: :code_review_w end context 'when there are auto merge MRs with the branch as target' do - context 'when merge_when_checks_pass is disabled and when source branch is to be deleted' do + context 'when source branch is to be deleted' do let(:params) { { delete_source_branch: true } } - it 'aborts no non MWCP auto merges' do + it 'aborts auto merges' do mr_1 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: merge_request.source_branch, source_branch: "test", source_project: merge_request.project) - mr_2 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: 'feature', + mr_2 = create(:merge_request, :merge_when_checks_pass, target_branch: merge_request.source_branch, + source_branch: "feature", source_project: merge_request.project) + mr_3 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: 'feature', source_branch: 'second', source_project: merge_request.project) - expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2) + expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2, mr_3) subject - expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2) + expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_3) end end context 'when source branch is not be deleted' do - it 'aborts no non MWCP auto merges' do + it 'does not abort any auto merges' do mr_1 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: merge_request.source_branch, source_branch: "test", source_project: merge_request.project) - mr_2 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: 'feature', + mr_2 = create(:merge_request, :merge_when_checks_pass, target_branch: merge_request.source_branch, + source_branch: "feature", source_project: merge_request.project) + mr_3 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: 'feature', source_branch: 'second', source_project: merge_request.project) - expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2) + expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2, mr_3) subject - expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2) + expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2, mr_3) end end @@ -202,15 +206,17 @@ RSpec.describe MergeRequests::PostMergeService, feature_category: :code_review_w stub_feature_flags(merge_when_checks_pass: false) end - it 'aborts no non MWCP auto merges' do + it 'does not aborts any auto merges' do mr_1 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: merge_request.source_branch, source_branch: "test", source_project: merge_request.project) - mr_2 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: 'feature', + mr_2 = create(:merge_request, :merge_when_checks_pass, target_branch: merge_request.source_branch, + source_branch: "feature", source_project: merge_request.project) + mr_3 = create(:merge_request, :merge_when_pipeline_succeeds, target_branch: 'feature', source_branch: 'second', source_project: merge_request.project) - expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2) + expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2, mr_3) subject - expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2) + expect(merge_request.source_project.merge_requests.with_auto_merge_enabled).to contain_exactly(mr_1, mr_2, mr_3) end end end diff --git a/spec/services/merge_requests/push_options_handler_service_spec.rb b/spec/services/merge_requests/push_options_handler_service_spec.rb index 6a58733df30..25fd417f735 100644 --- a/spec/services/merge_requests/push_options_handler_service_spec.rb +++ b/spec/services/merge_requests/push_options_handler_service_spec.rb @@ -124,10 +124,25 @@ RSpec.describe MergeRequests::PushOptionsHandlerService, feature_category: :sour service.execute expect(last_mr.auto_merge_enabled).to eq(true) - expect(last_mr.auto_merge_strategy).to eq(AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) + expect(last_mr.auto_merge_strategy).to eq(AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS) expect(last_mr.merge_user).to eq(user1) expect(last_mr.merge_params['sha']).to eq(change[:newrev]) end + + context 'when merge_when_checks_pass is false' do + before do + stub_feature_flags(merge_when_checks_pass: false) + end + + it 'sets auto_merge_enabled' do + service.execute + + expect(last_mr.auto_merge_enabled).to eq(true) + expect(last_mr.auto_merge_strategy).to eq(AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS) + expect(last_mr.merge_user).to eq(user1) + expect(last_mr.merge_params['sha']).to eq(change[:newrev]) + end + end end shared_examples_for 'a service that can remove the source branch when it is merged' do diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb index 44439bbdf38..0d69addf3a1 100644 --- a/spec/services/merge_requests/refresh_service_spec.rb +++ b/spec/services/merge_requests/refresh_service_spec.rb @@ -975,6 +975,12 @@ RSpec.describe MergeRequests::RefreshService, feature_category: :code_review_wor end describe '#abort_ff_merge_requests_with_auto_merges' do + context 'when the auto megre strategy is MWCP' do + it_behaves_like 'abort ff merge requests with auto merges' do + let(:auto_merge_strategy) { AutoMergeService::STRATEGY_MERGE_WHEN_CHECKS_PASS } + end + end + context 'when auto merge strategy is MWPS' do it_behaves_like 'abort ff merge requests with auto merges' do let(:auto_merge_strategy) { AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS } diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index 3c25a0952df..72a7395715e 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -535,13 +535,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re head_pipeline_of: merge_request ) - expected_class = if Gitlab.ee? - AutoMerge::MergeWhenChecksPassService - else - AutoMerge::MergeWhenPipelineSucceedsService - end - - expect(expected_class).to receive(:new).with(project, user, { sha: merge_request.diff_head_sha }) + expect(AutoMerge::MergeWhenChecksPassService).to receive(:new).with(project, user, { sha: merge_request.diff_head_sha }) .and_return(service_mock) allow(service_mock).to receive(:available_for?) { true } expect(service_mock).to receive(:execute).with(merge_request) diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb index 4e590ae36a5..e8f2790cf0d 100644 --- a/spec/services/quick_actions/interpret_service_spec.rb +++ b/spec/services/quick_actions/interpret_service_spec.rb @@ -572,11 +572,7 @@ RSpec.describe QuickActions::InterpretService, feature_category: :team_planning expect(updates).to eq(merge: merge_request.diff_head_sha) - if Gitlab.ee? - expect(message).to eq(_('Scheduled to merge this merge request (Merge when checks pass).')) - else - expect(message).to eq(_('Scheduled to merge this merge request (Merge when pipeline succeeds).')) - end + expect(message).to eq(_('Scheduled to merge this merge request (Merge when checks pass).')) end end diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml index 1329a970a36..c331bb3a55a 100644 --- a/spec/support/rspec_order_todo.yml +++ b/spec/support/rspec_order_todo.yml @@ -5774,7 +5774,6 @@ - './spec/lib/gitlab/email/service_desk_receiver_spec.rb' - './spec/lib/gitlab/email/smime/signer_spec.rb' - './spec/lib/gitlab/emoji_spec.rb' -- './spec/lib/gitlab/empty_search_results_spec.rb' - './spec/lib/gitlab/encoding_helper_spec.rb' - './spec/lib/gitlab/encrypted_configuration_spec.rb' - './spec/lib/gitlab/endpoint_attributes_spec.rb' diff --git a/spec/support/shared_examples/controllers/merge_request_shared_examples.rb b/spec/support/shared_examples/controllers/merge_request_shared_examples.rb new file mode 100644 index 00000000000..85ea3bec9b3 --- /dev/null +++ b/spec/support/shared_examples/controllers/merge_request_shared_examples.rb @@ -0,0 +1,76 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'api merge with auto merge' do + it 'returns the correct auto merge strategy' do + set_auto_merge + + expect(json_response).to eq('status' => status) + end + + it 'sets the MR to merge when the pipeline succeeds' do + expect_next_instance_of(service_class) do |service| + expect(service).to receive(:execute).with(merge_request) + allow(service).to receive(:available_for?).and_return(true) + end + + set_auto_merge + end + + context 'for logging' do + let(:expected_params) { { merge_action_status: status } } + let(:subject_proc) { proc { subject } } + + subject { set_auto_merge } + + it_behaves_like 'storing arguments in the application context' + it_behaves_like 'not executing any extra queries for the application context' + end + + context 'when project.only_allow_merge_if_pipeline_succeeds? is true' do + before do + project.update_column(:only_allow_merge_if_pipeline_succeeds, true) + end + + context 'and head pipeline is not the current one' do + before do + head_pipeline.update!(sha: 'not_current_sha') + end + + it 'returns expected status when pipeline is not current' do + set_auto_merge + + expect(json_response).to eq('status' => not_current_pipeline_status) + end + end + + it 'returns the correct auto merge strategy' do + set_auto_merge + + expect(json_response).to eq('status' => status) + end + end + + context 'when auto merge has not been enabled yet' do + it 'calls AutoMergeService#execute' do + expect_next_instance_of(AutoMergeService) do |service| + expect(service).to receive(:execute).with(merge_request, status) + end + + set_auto_merge + end + end + + context 'when auto merge has already been enabled' do + before do + merge_request.update!(auto_merge_enabled: true, merge_user: user) + end + + it 'calls AutoMergeService#update' do + expect_next_instance_of(AutoMergeService) do |service| + expect(service).to receive(:update).with(merge_request) + end + + set_auto_merge + end + end +end diff --git a/spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb b/spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb index f9bcfb1f304..2c59d85729c 100644 --- a/spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb +++ b/spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb @@ -43,13 +43,9 @@ RSpec.shared_examples 'merge quick action' do it 'schedules to merge the MR' do add_note("/merge") - if Gitlab.ee? - expect(page).to( - have_content("Scheduled to merge this merge request (Merge when checks pass).") - ) - else - expect(page).to have_content "Scheduled to merge this merge request (Merge when pipeline succeeds)." - end + expect(page).to( + have_content("Scheduled to merge this merge request (Merge when checks pass).") + ) expect(merge_request.reload).to be_auto_merge_enabled expect(merge_request.reload).not_to be_merged diff --git a/spec/tooling/danger/ci_jobs_dependency_validation_spec.rb b/spec/tooling/danger/ci_jobs_dependency_validation_spec.rb index 192bc769992..140745aed9c 100644 --- a/spec/tooling/danger/ci_jobs_dependency_validation_spec.rb +++ b/spec/tooling/danger/ci_jobs_dependency_validation_spec.rb @@ -112,12 +112,47 @@ RSpec.describe Tooling::Danger::CiJobsDependencyValidation, feature_category: :t it_behaves_like 'empty message' end + context 'when retrieving target branch jobs fails' do + before do + allow(ci_jobs_dependency_validation).to receive_message_chain(:gitlab, :api, :get) + .with("/projects/1/ci/lint", query: query).and_raise('404 Not Found') + end + + it 'prints the failure but does not break' do + expect { expect(ci_jobs_dependency_validation.output_message).to eq('') }.tap do |expectation| + expectation + .to output(<<~MSG).to_stdout + Initializing 1 jobs from master ci config... + 404 Not Found + Initializing 0 jobs from feature_branch ci config... + MSG + end + end + end + context 'when source branch jobs is empty' do let(:master_merged_yaml) { YAML.dump({}) } it_behaves_like 'empty message' end + context 'when retrieving source branch jobs fails' do + before do + allow(ci_jobs_dependency_validation).to receive_message_chain(:gitlab, :api, :get) + .with("/projects/1/ci/lint", query: {}).and_raise('404 Not Found') + end + + it 'prints the failure but does not break' do + expect { expect(ci_jobs_dependency_validation.output_message).to eq('') }.tap do |expectation| + expectation + .to output(<<~MSG).to_stdout + 404 Not Found + Initializing 0 jobs from master ci config... + MSG + end + end + end + context 'when jobs do not have dependencies' do it_behaves_like 'empty message', :default_stdout_output, 1, 4 end @@ -331,7 +366,7 @@ RSpec.describe Tooling::Danger::CiJobsDependencyValidation, feature_category: :t end it 'returns jobs yaml' do - expect(ci_jobs_dependency_validation.send(:fetch_jobs_yaml, '1', 'master')).to eq([]) + expect(ci_jobs_dependency_validation.send(:fetch_jobs_yaml, '1', 'master')).to eq({}) end end @@ -343,7 +378,7 @@ RSpec.describe Tooling::Danger::CiJobsDependencyValidation, feature_category: :t end it 'returns jobs yaml' do - expect(ci_jobs_dependency_validation.send(:fetch_jobs_yaml, '1', 'master')).to eq([]) + expect(ci_jobs_dependency_validation.send(:fetch_jobs_yaml, '1', 'master')).to eq({}) end end @@ -357,7 +392,7 @@ RSpec.describe Tooling::Danger::CiJobsDependencyValidation, feature_category: :t end it 'returns jobs yaml' do - expect(ci_jobs_dependency_validation.send(:fetch_jobs_yaml, '1', 'master')).to eq([]) + expect(ci_jobs_dependency_validation.send(:fetch_jobs_yaml, '1', 'master')).to eq({}) end end end diff --git a/spec/workers/merge_requests/process_auto_merge_from_event_worker_spec.rb b/spec/workers/merge_requests/process_auto_merge_from_event_worker_spec.rb new file mode 100644 index 00000000000..bd006ab5b7b --- /dev/null +++ b/spec/workers/merge_requests/process_auto_merge_from_event_worker_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe MergeRequests::ProcessAutoMergeFromEventWorker, feature_category: :code_review_workflow do + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:merge_request) { create(:merge_request, source_project: project, merge_user: user) } + let(:merge_request_id) { merge_request.id } + + let(:data) { { current_user_id: user.id, merge_request_id: merge_request_id } } + + it_behaves_like 'process auto merge from event worker' do + let(:event) { ::MergeRequests::DiscussionsResolvedEvent.new(data: data) } + end + + it_behaves_like 'process auto merge from event worker' do + let(:event) { ::MergeRequests::DraftStateChangeEvent.new(data: data) } + end +end diff --git a/tooling/danger/ci_jobs_dependency_validation.rb b/tooling/danger/ci_jobs_dependency_validation.rb index 3d02d6dd127..f84922a4333 100644 --- a/tooling/danger/ci_jobs_dependency_validation.rb +++ b/tooling/danger/ci_jobs_dependency_validation.rb @@ -71,7 +71,7 @@ module Tooling YAML.load(api_response['merged_yaml'], aliases: true) rescue StandardError => e puts e.message - [] + {} end def build_jobs_from_yaml(jobs_yaml, ref) diff --git a/vendor/spdx.json b/vendor/spdx.json index ede6678a931..4bfc0549afa 100644 --- a/vendor/spdx.json +++ b/vendor/spdx.json @@ -1,187 +1,150 @@ { - "licenseListVersion": "3.22", + "licenseListVersion": "3.24.0", "licenses": [ { - "reference": "https://spdx.org/licenses/Qhull.html", + "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Qhull.json", + "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json", "referenceNumber": 0, - "name": "Qhull License", - "licenseId": "Qhull", + "name": "BSD 4.3 TAHOE License", + "licenseId": "BSD-4.3TAHOE", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Qhull" + "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n1788" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NOSL.html", + "reference": "https://spdx.org/licenses/AML-glslang.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NOSL.json", + "detailsUrl": "https://spdx.org/licenses/AML-glslang.json", "referenceNumber": 1, - "name": "Netizen Open Source License", - "licenseId": "NOSL", + "name": "AML glslang variant License", + "licenseId": "AML-glslang", "seeAlso": [ - "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + "https://github.com/KhronosGroup/glslang/blob/main/LICENSE.txt#L949", + "https://docs.omniverse.nvidia.com/install-guide/latest/common/licenses.html" ], - "isOsiApproved": false, - "isFsfLibre": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", + "reference": "https://spdx.org/licenses/TCL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", + "detailsUrl": "https://spdx.org/licenses/TCL.json", "referenceNumber": 2, - "name": "Creative Commons Attribution No Derivatives 2.5 Generic", - "licenseId": "CC-BY-ND-2.5", + "name": "TCL/TK License", + "licenseId": "TCL", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL" ], - "isOsiApproved": false, - "isFsfLibre": false + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/O-UDA-1.0.html", + "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", "referenceNumber": 3, - "name": "Open Use of Data Agreement v1.0", - "licenseId": "O-UDA-1.0", + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", "seeAlso": [ - "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", - "https://cdla.dev/open-use-of-data-agreement-v1-0/" + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" ], - "isOsiApproved": false + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/DRL-1.0.html", + "reference": "https://spdx.org/licenses/OAR.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", + "detailsUrl": "https://spdx.org/licenses/OAR.json", "referenceNumber": 4, - "name": "Detection Rule License 1.0", - "licenseId": "DRL-1.0", + "name": "OAR License", + "licenseId": "OAR", "seeAlso": [ - "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" + "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/string/strsignal.c;hb=HEAD#l35" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/ImageMagick.html", + "reference": "https://spdx.org/licenses/OLDAP-2.8.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", "referenceNumber": 5, - "name": "ImageMagick License", - "licenseId": "ImageMagick", + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", "seeAlso": [ - "http://www.imagemagick.org/script/license.php" + "http://www.openldap.org/software/release/license.html" ], - "isOsiApproved": false + "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/mpich2.html", + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mpich2.json", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", "referenceNumber": 6, - "name": "mpich2 License", - "licenseId": "mpich2", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", - "referenceNumber": 7, - "name": "Creative Commons Attribution Share Alike 4.0 International", - "licenseId": "CC-BY-SA-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", - "referenceNumber": 8, - "name": "Sun Public License v1.0", - "licenseId": "SPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/SPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/McPhee-slideshow.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/McPhee-slideshow.json", - "referenceNumber": 9, - "name": "McPhee Slideshow License", - "licenseId": "McPhee-slideshow", - "seeAlso": [ - "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-enna.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", - "referenceNumber": 10, - "name": "enna License", - "licenseId": "MIT-enna", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#enna" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", - "referenceNumber": 11, - "name": "Open Software License 2.1", - "licenseId": "OSL-2.1", - "seeAlso": [ - "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", - "https://opensource.org/licenses/OSL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", - "referenceNumber": 12, - "name": "GNU Free Documentation License v1.2 or later", - "licenseId": "GFDL-1.2-or-later", + "name": "GNU Free Documentation License v1.2 or later - invariants", + "licenseId": "GFDL-1.2-invariants-or-later", "seeAlso": [ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" ], - "isOsiApproved": false, - "isFsfLibre": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "reference": "https://spdx.org/licenses/ODC-By-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", - "referenceNumber": 13, - "name": "Lawrence Berkeley National Labs BSD variant license", - "licenseId": "BSD-3-Clause-LBNL", + "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", + "referenceNumber": 7, + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + "https://opendatacommons.org/licenses/by/1.0/" ], - "isOsiApproved": true + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json", + "referenceNumber": 8, + "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant", + "licenseId": "HPND-Markus-Kuhn", + "seeAlso": [ + "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", + "https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=readline/readline/support/wcwidth.c;h=0f5ec995796f4813abbcf4972aec0378ab74722a;hb=HEAD#l55" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCP-wrappers.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", + "referenceNumber": 9, + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "seeAlso": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xdebug-1.03.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xdebug-1.03.json", + "referenceNumber": 10, + "name": "Xdebug License v 1.03", + "licenseId": "Xdebug-1.03", + "seeAlso": [ + "https://github.com/xdebug/xdebug/blob/master/LICENSE" + ], + "isOsiApproved": false }, { "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", - "referenceNumber": 14, + "referenceNumber": 11, "name": "SIL Open Font License 1.0 with Reserved Font Name", "licenseId": "OFL-1.0-RFN", "seeAlso": [ @@ -189,212 +152,11 @@ ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/GPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", - "referenceNumber": 15, - "name": "GNU General Public License v3.0 only", - "licenseId": "GPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Watcom-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", - "referenceNumber": 16, - "name": "Sybase Open Watcom Public License 1.0", - "licenseId": "Watcom-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Watcom-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/MPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", - "referenceNumber": 17, - "name": "Mozilla Public License 1.0", - "licenseId": "MPL-1.0", - "seeAlso": [ - "http://www.mozilla.org/MPL/MPL-1.0.html", - "https://opensource.org/licenses/MPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Aladdin.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Aladdin.json", - "referenceNumber": 18, - "name": "Aladdin Free Public License", - "licenseId": "Aladdin", - "seeAlso": [ - "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/etalab-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", - "referenceNumber": 19, - "name": "Etalab Open License 2.0", - "licenseId": "etalab-2.0", - "seeAlso": [ - "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", - "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", - "referenceNumber": 20, - "name": "copyleft-next 0.3.0", - "licenseId": "copyleft-next-0.3.0", - "seeAlso": [ - "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NLPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLPL.json", - "referenceNumber": 21, - "name": "No Limit Public License", - "licenseId": "NLPL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/NLPL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mplus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mplus.json", - "referenceNumber": 22, - "name": "mplus Font License", - "licenseId": "mplus", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:Mplus?rd=Licensing/mplus" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ECL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", - "referenceNumber": 23, - "name": "Educational Community License v1.0", - "licenseId": "ECL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/ECL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/fwlw.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/fwlw.json", - "referenceNumber": 24, - "name": "fwlw License", - "licenseId": "fwlw", - "seeAlso": [ - "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", - "referenceNumber": 25, - "name": "Blue Oak Model License 1.0.0", - "licenseId": "BlueOak-1.0.0", - "seeAlso": [ - "https://blueoakcouncil.org/license/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JPNIC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JPNIC.json", - "referenceNumber": 26, - "name": "Japan Network Information Center License", - "licenseId": "JPNIC", - "seeAlso": [ - "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AFL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", - "referenceNumber": 27, - "name": "Academic Free License v3.0", - "licenseId": "AFL-3.0", - "seeAlso": [ - "http://www.rosenlaw.com/AFL3.0.htm", - "https://opensource.org/licenses/afl-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", - "referenceNumber": 28, - "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", - "licenseId": "CC-BY-NC-SA-2.0-FR", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", - "referenceNumber": 29, - "name": "GNU Free Documentation License v1.3 or later - invariants", - "licenseId": "GFDL-1.3-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CFITSIO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CFITSIO.json", - "referenceNumber": 30, - "name": "CFITSIO License", - "licenseId": "CFITSIO", - "seeAlso": [ - "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", - "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/GPL-1.0-only.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", - "referenceNumber": 31, + "referenceNumber": 12, "name": "GNU General Public License v1.0 only", "licenseId": "GPL-1.0-only", "seeAlso": [ @@ -403,35 +165,95 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/XSkat.html", + "reference": "https://spdx.org/licenses/AML.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/XSkat.json", - "referenceNumber": 32, - "name": "XSkat License", - "licenseId": "XSkat", + "detailsUrl": "https://spdx.org/licenses/AML.json", + "referenceNumber": 13, + "name": "Apple MIT License", + "licenseId": "AML", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/XSkat_License" + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", + "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", - "referenceNumber": 33, - "name": "Creative Commons Attribution No Derivatives 2.0 Generic", - "licenseId": "CC-BY-ND-2.0", + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", + "referenceNumber": 14, + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DEC-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DEC-3-Clause.json", + "referenceNumber": 15, + "name": "DEC 3-Clause License", + "licenseId": "DEC-3-Clause", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type=heads#L239" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", + "referenceNumber": 16, + "name": "Detection Rule License 1.0", + "licenseId": "DRL-1.0", + "seeAlso": [ + "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", + "referenceNumber": 17, + "name": "Server Side Public License, v 1", + "licenseId": "SSPL-1.0", + "seeAlso": [ + "https://www.mongodb.com/licensing/server-side-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3a.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", + "referenceNumber": 18, + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt" ], "isOsiApproved": false, - "isFsfLibre": false + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", + "referenceNumber": 19, + "name": "Creative Commons Attribution 3.0 IGO", + "licenseId": "CC-BY-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/igo/legalcode" + ], + "isOsiApproved": false }, { "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json", - "referenceNumber": 34, + "referenceNumber": 20, "name": "Creative Commons Attribution-ShareAlike 3.0 IGO", "licenseId": "CC-BY-SA-3.0-IGO", "seeAlso": [ @@ -440,119 +262,60 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", - "referenceNumber": 35, - "name": "Creative Commons Attribution 3.0 Netherlands", - "licenseId": "CC-BY-3.0-NL", + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", + "referenceNumber": 21, + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/nl/legalcode" + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/FSFUL.html", + "reference": "https://spdx.org/licenses/BSD-Source-Code.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFUL.json", - "referenceNumber": 36, - "name": "FSF Unlimited License", - "licenseId": "FSFUL", + "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", + "referenceNumber": 22, + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/HPND-export-US.html", + "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json", - "referenceNumber": 37, - "name": "HPND with US Government export control warning", - "licenseId": "HPND-export-US", + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", + "referenceNumber": 23, + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "licenseId": "OFL-1.0-no-RFN", "seeAlso": [ - "https://www.kermitproject.org/ck90.html#source" + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CATOSL-1.1.html", + "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", - "referenceNumber": 38, - "name": "Computer Associates Trusted Open Source License 1.1", - "licenseId": "CATOSL-1.1", + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", + "referenceNumber": 24, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", "seeAlso": [ - "https://opensource.org/licenses/CATOSL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ZPL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", - "referenceNumber": 39, - "name": "Zope Public License 2.1", - "licenseId": "ZPL-2.1", - "seeAlso": [ - "http://old.zope.org/Resources/ZPL/" + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" ], "isOsiApproved": true, "isFsfLibre": true }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", - "referenceNumber": 40, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", - "licenseId": "CC-BY-NC-SA-2.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", - "referenceNumber": 41, - "name": "Open Government Licence v1.0", - "licenseId": "OGL-UK-1.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", - "referenceNumber": 42, - "name": "BSD 3-Clause No Nuclear Warranty", - "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", - "seeAlso": [ - "https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", - "referenceNumber": 43, - "name": "Technische Universitaet Berlin License 2.0", - "licenseId": "TU-Berlin-2.0", - "seeAlso": [ - "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/GPL-2.0+.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", - "referenceNumber": 44, + "referenceNumber": 25, "name": "GNU General Public License v2.0 or later", "licenseId": "GPL-2.0+", "seeAlso": [ @@ -563,14 +326,312 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Saxpath.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Saxpath.json", - "referenceNumber": 45, - "name": "Saxpath License", - "licenseId": "Saxpath", + "reference": "https://spdx.org/licenses/GPL-1.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", + "referenceNumber": 26, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bcrypt-Solar-Designer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bcrypt-Solar-Designer.json", + "referenceNumber": 27, + "name": "bcrypt Solar Designer License", + "licenseId": "bcrypt-Solar-Designer", + "seeAlso": [ + "https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/ext/mri/crypt_blowfish.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", + "referenceNumber": 28, + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SHL-0.51.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", + "referenceNumber": 29, + "name": "Solderpad Hardware License, Version 0.51", + "licenseId": "SHL-0.51", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.51/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", + "referenceNumber": 30, + "name": "BSD 3-Clause No Military License", + "licenseId": "BSD-3-Clause-No-Military-License", + "seeAlso": [ + "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", + "https://github.com/greymass/swift-eosio/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", + "referenceNumber": 31, + "name": "Creative Commons Attribution Share Alike 3.0 Austria", + "licenseId": "CC-BY-SA-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", + "referenceNumber": 32, + "name": "CERN Open Hardware Licence v1.1", + "licenseId": "CERN-OHL-1.1", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export2-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export2-US.json", + "referenceNumber": 33, + "name": "HPND with US Government export control and 2 disclaimers", + "licenseId": "HPND-export2-US", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L111-L133", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", + "referenceNumber": 34, + "name": "NIST Public Domain Notice with license fallback", + "licenseId": "NIST-PD-fallback", + "seeAlso": [ + "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", + "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SCEA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SCEA.json", + "referenceNumber": 35, + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "seeAlso": [ + "http://research.scea.com/scea_shared_source_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFAP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP.json", + "referenceNumber": 36, + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "seeAlso": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", + "referenceNumber": 37, + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", + "referenceNumber": 38, + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", + "referenceNumber": 39, + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", + "referenceNumber": 40, + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NBPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", + "referenceNumber": 41, + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", + "referenceNumber": 42, + "name": "SugarCRM Public License v1.1.3", + "licenseId": "SugarCRM-1.1.3", + "seeAlso": [ + "http://www.sugarcrm.com/crm/SPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", + "referenceNumber": 43, + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "seeAlso": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Nokia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Nokia.json", + "referenceNumber": 44, + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "seeAlso": [ + "https://opensource.org/licenses/nokia" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Catharon.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Catharon.json", + "referenceNumber": 45, + "name": "Catharon License", + "licenseId": "Catharon", + "seeAlso": [ + "https://github.com/scummvm/scummvm/blob/v2.8.0/LICENSES/CatharonLicense.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-3.0.json", + "referenceNumber": 46, + "name": "Unicode License v3", + "licenseId": "Unicode-3.0", + "seeAlso": [ + "https://www.unicode.org/license.txt" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", + "referenceNumber": 47, + "name": "GNU Free Documentation License v1.1 only - no invariants", + "licenseId": "GFDL-1.1-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Barr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Barr.json", + "referenceNumber": 48, + "name": "Barr License", + "licenseId": "Barr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Barr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FDK-AAC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", + "referenceNumber": 49, + "name": "Fraunhofer FDK AAC Codec Library", + "licenseId": "FDK-AAC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FDK-AAC", + "https://directory.fsf.org/wiki/License:Fdk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Rdisc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Rdisc.json", + "referenceNumber": 50, + "name": "Rdisc License", + "licenseId": "Rdisc", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License" ], "isOsiApproved": false }, @@ -578,7 +639,7 @@ "reference": "https://spdx.org/licenses/ZPL-2.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", - "referenceNumber": 46, + "referenceNumber": 51, "name": "Zope Public License 2.0", "licenseId": "ZPL-2.0", "seeAlso": [ @@ -589,36 +650,183 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Bitstream-Charter.html", + "reference": "https://spdx.org/licenses/RPL-1.5.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json", - "referenceNumber": 47, - "name": "Bitstream Charter Font License", - "licenseId": "Bitstream-Charter", + "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", + "referenceNumber": 52, + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", - "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt" + "https://opensource.org/licenses/RPL-1.5" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-feh.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", + "referenceNumber": 53, + "name": "feh License", + "licenseId": "MIT-feh", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#feh" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OpenSSL.html", + "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", - "referenceNumber": 48, - "name": "OpenSSL License", - "licenseId": "OpenSSL", + "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", + "referenceNumber": 54, + "name": "PolyForm Noncommercial License 1.0.0", + "licenseId": "PolyForm-Noncommercial-1.0.0", "seeAlso": [ - "http://www.openssl.org/source/license.html" + "https://polyformproject.org/licenses/noncommercial/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PSF-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", + "referenceNumber": 55, + "name": "Python Software Foundation License 2.0", + "licenseId": "PSF-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", + "referenceNumber": 56, + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "licenseId": "CC-BY-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/1.0/legalcode" ], "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/SunPro.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SunPro.json", + "referenceNumber": 57, + "name": "SunPro License", + "licenseId": "SunPro", + "seeAlso": [ + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", + "referenceNumber": 58, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause.json", + "referenceNumber": 59, + "name": "Mackerras 3-Clause License", + "licenseId": "Mackerras-3-Clause", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/chap_ms.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", + "referenceNumber": 60, + "name": "Blue Oak Model License 1.0.0", + "licenseId": "BlueOak-1.0.0", + "seeAlso": [ + "https://blueoakcouncil.org/license/1.0.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/TORQUE-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", + "referenceNumber": 61, + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", + "referenceNumber": 62, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Eurosym.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Eurosym.json", + "referenceNumber": 63, + "name": "Eurosym License", + "licenseId": "Eurosym", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", + "referenceNumber": 64, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/JSON.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JSON.json", + "referenceNumber": 65, + "name": "JSON License", + "licenseId": "JSON", + "seeAlso": [ + "http://www.json.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, { "reference": "https://spdx.org/licenses/ClArtistic.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", - "referenceNumber": 49, + "referenceNumber": 66, "name": "Clarified Artistic License", "licenseId": "ClArtistic", "seeAlso": [ @@ -629,927 +837,73 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", + "reference": "https://spdx.org/licenses/ICU.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", - "referenceNumber": 50, - "name": "Mozilla Public License 2.0 (no copyleft exception)", - "licenseId": "MPL-2.0-no-copyleft-exception", - "seeAlso": [ - "https://www.mozilla.org/MPL/2.0/", - "https://opensource.org/licenses/MPL-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/X11.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11.json", - "referenceNumber": 51, - "name": "X11 License", - "licenseId": "X11", - "seeAlso": [ - "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/FSFULLR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", - "referenceNumber": 52, - "name": "FSF Unlimited License (with License Retention)", - "licenseId": "FSFULLR", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", - "referenceNumber": 53, - "name": "Creative Commons Attribution 4.0 International", - "licenseId": "CC-BY-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", - "referenceNumber": 54, - "name": "Creative Commons Attribution Share Alike 3.0 Germany", - "licenseId": "CC-BY-SA-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", - "referenceNumber": 55, - "name": "Creative Commons Attribution Share Alike 2.5 Generic", - "licenseId": "CC-BY-SA-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPEG-SSG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPEG-SSG.json", - "referenceNumber": 56, - "name": "MPEG Software Simulation", - "licenseId": "MPEG-SSG", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/wxWindows.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/wxWindows.json", - "referenceNumber": 57, - "name": "wxWindows Library License", - "licenseId": "wxWindows", - "seeAlso": [ - "https://opensource.org/licenses/WXwindows" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", - "referenceNumber": 58, - "name": "LaTeX Project Public License v1.0", - "licenseId": "LPPL-1.0", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", - "referenceNumber": 59, - "name": "GNU Library General Public License v2 only", - "licenseId": "LGPL-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/FreeImage.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FreeImage.json", - "referenceNumber": 60, - "name": "FreeImage Public License v1.0", - "licenseId": "FreeImage", - "seeAlso": [ - "http://freeimage.sourceforge.net/freeimage-license.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", - "referenceNumber": 61, - "name": "CERN Open Hardware Licence v1.2", - "licenseId": "CERN-OHL-1.2", - "seeAlso": [ - "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", - "referenceNumber": 62, - "name": "Artistic License 1.0 w/clause 8", - "licenseId": "Artistic-1.0-cl8", - "seeAlso": [ - "https://opensource.org/licenses/Artistic-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", - "referenceNumber": 63, - "name": "LZMA SDK License (versions 9.22 and beyond)", - "licenseId": "LZMA-SDK-9.22", - "seeAlso": [ - "https://www.7-zip.org/sdk.html", - "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", - "referenceNumber": 64, - "name": "BSD 3-Clause No Nuclear License 2014", - "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", - "seeAlso": [ - "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", - "referenceNumber": 65, - "name": "Creative Commons Attribution No Derivatives 3.0 Germany", - "licenseId": "CC-BY-ND-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Afmparse.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Afmparse.json", - "referenceNumber": 66, - "name": "Afmparse License", - "licenseId": "Afmparse", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Afmparse" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", + "detailsUrl": "https://spdx.org/licenses/ICU.json", "referenceNumber": 67, - "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", - "licenseId": "CERN-OHL-S-2.0", + "name": "ICU License", + "licenseId": "ICU", "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + "http://source.icu-project.org/repos/icu/icu/trunk/license.html" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/DOC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DOC.json", + "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", "referenceNumber": 68, - "name": "DOC License", - "licenseId": "DOC", + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", "seeAlso": [ - "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", - "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + "https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GL2PS.html", + "reference": "https://spdx.org/licenses/LPL-1.02.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GL2PS.json", + "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", "referenceNumber": 69, - "name": "GL2PS License", - "licenseId": "GL2PS", + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", "seeAlso": [ - "http://www.geuz.org/gl2ps/COPYING.GL2PS" + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02" ], - "isOsiApproved": false + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/YPL-1.1.html", + "reference": "https://spdx.org/licenses/CC0-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", + "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", "referenceNumber": 70, - "name": "Yahoo! Public License v1.1", - "licenseId": "YPL-1.1", + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", "seeAlso": [ - "http://www.zimbra.com/license/yahoo_public_license_1.1.html" + "https://creativecommons.org/publicdomain/zero/1.0/legalcode" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", + "reference": "https://spdx.org/licenses/NLPL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", + "detailsUrl": "https://spdx.org/licenses/NLPL.json", "referenceNumber": 71, - "name": "GNU Free Documentation License v1.2 only", - "licenseId": "GFDL-1.2-only", + "name": "No Limit Public License", + "licenseId": "NLPL", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", - "referenceNumber": 72, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", - "licenseId": "CC-BY-NC-ND-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + "https://fedoraproject.org/wiki/Licensing/NLPL" ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/eCos-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", - "referenceNumber": 73, - "name": "eCos license version 2.0", - "licenseId": "eCos-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/ecos-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", - "referenceNumber": 74, - "name": "SIL Open Font License 1.0 with no Reserved Font Name", - "licenseId": "OFL-1.0-no-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail.json", - "referenceNumber": 75, - "name": "Sendmail License", - "licenseId": "Sendmail", - "seeAlso": [ - "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", - "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", - "referenceNumber": 76, - "name": "GNU Affero General Public License v3.0 only", - "licenseId": "AGPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", - "referenceNumber": 77, - "name": "CeCILL Free Software License Agreement v2.0", - "licenseId": "CECILL-2.0", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MIT-advertising.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", - "referenceNumber": 78, - "name": "Enlightenment License (e16)", - "licenseId": "MIT-advertising", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/snprintf.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/snprintf.json", - "referenceNumber": 79, - "name": "snprintf License", - "licenseId": "snprintf", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", - "referenceNumber": 80, - "name": "Creative Commons Attribution No Derivatives 3.0 Unported", - "licenseId": "CC-BY-ND-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/3.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", - "referenceNumber": 81, - "name": "Creative Commons Attribution 2.5 Australia", - "licenseId": "CC-BY-2.5-AU", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.5/au/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NAIST-2003.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", - "referenceNumber": 82, - "name": "Nara Institute of Science and Technology License (2003)", - "licenseId": "NAIST-2003", - "seeAlso": [ - "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", - "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NBPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", - "referenceNumber": 83, - "name": "Net Boolean Public License v1", - "licenseId": "NBPL-1.0", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Ruby.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ruby.json", - "referenceNumber": 84, - "name": "Ruby License", - "licenseId": "Ruby", - "seeAlso": [ - "https://www.ruby-lang.org/en/about/license.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/HPND-doc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-doc.json", - "referenceNumber": 85, - "name": "Historical Permission Notice and Disclaimer - documentation variant", - "licenseId": "HPND-doc", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L185-197", - "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L70-77" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", - "referenceNumber": 86, - "name": "Open Software License 2.0", - "licenseId": "OSL-2.0", - "seeAlso": [ - "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", - "referenceNumber": 87, - "name": "GNU General Public License v2.0 only", - "licenseId": "GPL-2.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SMPPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SMPPL.json", - "referenceNumber": 88, - "name": "Secure Messaging Protocol Public License", - "licenseId": "SMPPL", - "seeAlso": [ - "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", - "referenceNumber": 89, - "name": "LZMA SDK License (versions 9.11 to 9.20)", - "licenseId": "LZMA-SDK-9.11-to-9.20", - "seeAlso": [ - "https://www.7-zip.org/sdk.html", - "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.6.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", - "referenceNumber": 90, - "name": "Open LDAP Public License v2.6", - "licenseId": "OLDAP-2.6", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Parity-7.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", - "referenceNumber": 91, - "name": "The Parity Public License 7.0.0", - "licenseId": "Parity-7.0.0", - "seeAlso": [ - "https://paritylicense.com/versions/7.0.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Clips.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Clips.json", - "referenceNumber": 92, - "name": "Clips License", - "licenseId": "Clips", - "seeAlso": [ - "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Symlinks.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Symlinks.json", - "referenceNumber": 93, - "name": "Symlinks License", - "licenseId": "Symlinks", - "seeAlso": [ - "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", - "referenceNumber": 94, - "name": "Open LDAP Public License v1.1", - "licenseId": "OLDAP-1.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NICTA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", - "referenceNumber": 95, - "name": "NICTA Public Software License, Version 1.0", - "licenseId": "NICTA-1.0", - "seeAlso": [ - "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/python-ldap.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/python-ldap.json", - "referenceNumber": 96, - "name": "Python ldap License", - "licenseId": "python-ldap", - "seeAlso": [ - "https://github.com/zdohnal/hplip/blob/master/base/ldif.py", - "https://sourceforge.net/projects/hplip/files/hplip/3.23.5/hplip-3.23.5.tar.gz/download" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", - "referenceNumber": 97, - "name": "GNU General Public License v1.0 only", - "licenseId": "GPL-1.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", - "referenceNumber": 98, - "name": "Licence Libre du Québec – Réciprocité forte version 1.1", - "licenseId": "LiLiQ-Rplus-1.1", - "seeAlso": [ - "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", - "http://opensource.org/licenses/LiLiQ-Rplus-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", - "referenceNumber": 99, - "name": "BSD-2-Clause Plus Patent License", - "licenseId": "BSD-2-Clause-Patent", - "seeAlso": [ - "https://opensource.org/licenses/BSDplusPatent" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", - "referenceNumber": 100, - "name": "Creative Commons Attribution Share Alike 1.0 Generic", - "licenseId": "CC-BY-SA-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", - "referenceNumber": 101, - "name": "GNU Library General Public License v2 or later", - "licenseId": "LGPL-2.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Intel-ACPI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", - "referenceNumber": 102, - "name": "Intel ACPI Software License Agreement", - "licenseId": "Intel-ACPI", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", - "referenceNumber": 103, - "name": "CERN Open Hardware Licence Version 2 - Permissive", - "licenseId": "CERN-OHL-P-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/SSH-short.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSH-short.json", - "referenceNumber": 104, - "name": "SSH short notice", - "licenseId": "SSH-short", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", - "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", - "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Kazlib.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Kazlib.json", - "referenceNumber": 105, - "name": "Kazlib License", - "licenseId": "Kazlib", - "seeAlso": [ - "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id=0062df360c2d17d57f6af19b0e444c51feb99036" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TOSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TOSL.json", - "referenceNumber": 106, - "name": "Trusster Open Source License", - "licenseId": "TOSL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TOSL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GLWTPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", - "referenceNumber": 107, - "name": "Good Luck With That Public License", - "licenseId": "GLWTPL", - "seeAlso": [ - "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", - "referenceNumber": 108, - "name": "BSD 3-Clause Modification", - "licenseId": "BSD-3-Clause-Modification", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", - "referenceNumber": 109, - "name": "Open LDAP Public License v2.2", - "licenseId": "OLDAP-2.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", - "referenceNumber": 110, - "name": "BSD 3-Clause No Nuclear License", - "licenseId": "BSD-3-Clause-No-Nuclear-License", - "seeAlso": [ - "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TORQUE-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", - "referenceNumber": 111, - "name": "TORQUE v2.5+ Software License v1.1", - "licenseId": "TORQUE-1.1", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PSF-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", - "referenceNumber": 112, - "name": "Python Software Foundation License 2.0", - "licenseId": "PSF-2.0", - "seeAlso": [ - "https://opensource.org/licenses/Python-2.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDDL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", - "referenceNumber": 113, - "name": "Common Development and Distribution License 1.1", - "licenseId": "CDDL-1.1", - "seeAlso": [ - "http://glassfish.java.net/public/CDDL+GPL_1_1.html", - "https://javaee.github.io/glassfish/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", - "referenceNumber": 114, - "name": "Common Documentation License 1.0", - "licenseId": "CDL-1.0", - "seeAlso": [ - "http://www.opensource.apple.com/cdl/", - "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", - "https://www.gnu.org/licenses/license-list.html#ACDL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", - "referenceNumber": 115, - "name": "OSET Public License version 2.1", - "licenseId": "OSET-PL-2.1", - "seeAlso": [ - "http://www.osetfoundation.org/public-license", - "https://opensource.org/licenses/OPL-2.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/EUPL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", - "referenceNumber": 116, - "name": "European Union Public License 1.2", - "licenseId": "EUPL-1.2", - "seeAlso": [ - "https://joinup.ec.europa.eu/page/eupl-text-11-12", - "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", - "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", - "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", - "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863", - "https://opensource.org/licenses/EUPL-1.2" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/StandardML-NJ.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", - "referenceNumber": 117, - "name": "Standard ML of New Jersey License", - "licenseId": "StandardML-NJ", - "seeAlso": [ - "https://www.smlnj.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CAL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", - "referenceNumber": 118, - "name": "Cryptographic Autonomy License 1.0", - "licenseId": "CAL-1.0", - "seeAlso": [ - "http://cryptographicautonomylicense.com/license-text.html", - "https://opensource.org/licenses/CAL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OPL-UK-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPL-UK-3.0.json", - "referenceNumber": 119, - "name": "United Kingdom Open Parliament Licence v3.0", - "licenseId": "OPL-UK-3.0", - "seeAlso": [ - "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Cronyx.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cronyx.json", - "referenceNumber": 120, - "name": "Cronyx License", - "licenseId": "Cronyx", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", - "referenceNumber": 121, - "name": "GNU Free Documentation License v1.1 or later", - "licenseId": "GFDL-1.1-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", - "referenceNumber": 122, - "name": "Academic Free License v2.1", - "licenseId": "AFL-2.1", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, { "reference": "https://spdx.org/licenses/AFL-1.2.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", - "referenceNumber": 123, + "referenceNumber": 72, "name": "Academic Free License v1.2", "licenseId": "AFL-1.2", "seeAlso": [ @@ -1560,146 +914,168 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/FDK-AAC.html", + "reference": "https://spdx.org/licenses/CECILL-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", - "referenceNumber": 124, - "name": "Fraunhofer FDK AAC Codec Library", - "licenseId": "FDK-AAC", + "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", + "referenceNumber": 73, + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FDK-AAC", - "https://directory.fsf.org/wiki/License:Fdk" + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-1-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", - "referenceNumber": 125, - "name": "BSD 1-Clause License", - "licenseId": "BSD-1-Clause", - "seeAlso": [ - "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/psfrag.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/psfrag.json", - "referenceNumber": 126, - "name": "psfrag License", - "licenseId": "psfrag", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/psfrag" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", - "referenceNumber": 127, - "name": "SIL Open Font License 1.1 with Reserved Font Name", - "licenseId": "OFL-1.1-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", - "referenceNumber": 128, - "name": "CeCILL Free Software License Agreement v1.0", - "licenseId": "CECILL-1.0", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TCP-wrappers.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", - "referenceNumber": 129, - "name": "TCP Wrappers License", - "licenseId": "TCP-wrappers", - "seeAlso": [ - "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", - "referenceNumber": 130, - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", - "licenseId": "CC-BY-NC-ND-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", - "referenceNumber": 131, - "name": "Adaptive Public License 1.0", - "licenseId": "APL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/APL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Knuth-CTAN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json", - "referenceNumber": 132, - "name": "Knuth CTAN License", - "licenseId": "Knuth-CTAN", - "seeAlso": [ - "https://ctan.org/license/knuth" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-testregex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-testregex.json", - "referenceNumber": 133, - "name": "MIT testregex Variant", - "licenseId": "MIT-testregex", - "seeAlso": [ - "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", - "referenceNumber": 134, - "name": "Open Software License 3.0", - "licenseId": "OSL-3.0", - "seeAlso": [ - "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", - "https://opensource.org/licenses/OSL-3.0" - ], - "isOsiApproved": true, + "isOsiApproved": false, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", + "referenceNumber": 74, + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/TPDL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPDL.json", + "referenceNumber": 75, + "name": "Time::ParseDate License", + "licenseId": "TPDL", + "seeAlso": [ + "https://metacpan.org/pod/Time::ParseDate#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-Software.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-Software.json", + "referenceNumber": 76, + "name": "NIST Software License", + "licenseId": "NIST-Software", + "seeAlso": [ + "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", + "referenceNumber": 77, + "name": "GNU Free Documentation License v1.2 only - no invariants", + "licenseId": "GFDL-1.2-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCAR.json", + "referenceNumber": 78, + "name": "UCAR License", + "licenseId": "UCAR", + "seeAlso": [ + "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", + "referenceNumber": 79, + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpi-permissive.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", + "referenceNumber": 80, + "name": "mpi Permissive License", + "licenseId": "mpi-permissive", + "seeAlso": [ + "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl=19#L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/hdparm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/hdparm.json", + "referenceNumber": 81, + "name": "hdparm License", + "licenseId": "hdparm", + "seeAlso": [ + "https://github.com/Distrotech/hdparm/blob/4517550db29a91420fb2b020349523b1b4512df2/LICENSE.TXT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", + "referenceNumber": 82, + "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + "licenseId": "CERN-OHL-W-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/JPNIC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPNIC.json", + "referenceNumber": 83, + "name": "Japan Network Information Center License", + "licenseId": "JPNIC", + "seeAlso": [ + "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", + "referenceNumber": 84, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", + "licenseId": "CC-BY-NC-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glulxe.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glulxe.json", + "referenceNumber": 85, + "name": "Glulxe License", + "licenseId": "Glulxe", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json", - "referenceNumber": 135, + "referenceNumber": 86, "name": "Linux man-pages Copyleft - 2 paragraphs", "licenseId": "Linux-man-pages-copyleft-2-para", "seeAlso": [ @@ -1709,162 +1085,37 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "reference": "https://spdx.org/licenses/TTWL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", - "referenceNumber": 136, - "name": "Open LDAP Public License v2.0.1", - "licenseId": "OLDAP-2.0.1", + "detailsUrl": "https://spdx.org/licenses/TTWL.json", + "referenceNumber": 87, + "name": "Text-Tabs+Wrap License", + "licenseId": "TTWL", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e" + "https://fedoraproject.org/wiki/Licensing/TTWL", + "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Beerware.html", + "reference": "https://spdx.org/licenses/EFL-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Beerware.json", - "referenceNumber": 137, - "name": "Beerware License", - "licenseId": "Beerware", + "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", + "referenceNumber": 88, + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Beerware", - "https://people.freebsd.org/~phk/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Apache-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", - "referenceNumber": 138, - "name": "Apache License 2.0", - "licenseId": "Apache-2.0", - "seeAlso": [ - "https://www.apache.org/licenses/LICENSE-2.0", - "https://opensource.org/licenses/Apache-2.0" + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0" ], "isOsiApproved": true, "isFsfLibre": true }, - { - "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", - "referenceNumber": 139, - "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", - "licenseId": "CAL-1.0-Combined-Work-Exception", - "seeAlso": [ - "http://cryptographicautonomylicense.com/license-text.html", - "https://opensource.org/licenses/CAL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", - "referenceNumber": 140, - "name": "GNU General Public License v2.0 w/Autoconf exception", - "licenseId": "GPL-2.0-with-autoconf-exception", - "seeAlso": [ - "http://ac-archive.sourceforge.net/doc/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Sun.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Sun.json", - "referenceNumber": 141, - "name": "BSD 3-Clause Sun Microsystems", - "licenseId": "BSD-3-Clause-Sun", - "seeAlso": [ - "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MakeIndex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", - "referenceNumber": 142, - "name": "MakeIndex License", - "licenseId": "MakeIndex", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MakeIndex" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", - "referenceNumber": 143, - "name": "BSD 2-Clause NetBSD License", - "licenseId": "BSD-2-Clause-NetBSD", - "seeAlso": [ - "http://www.netbsd.org/about/redistribution.html#default" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", - "referenceNumber": 144, - "name": "GNU Free Documentation License v1.1 only - no invariants", - "licenseId": "GFDL-1.1-no-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UCL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", - "referenceNumber": 145, - "name": "Upstream Compatibility License v1.0", - "licenseId": "UCL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/UCL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NASA-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", - "referenceNumber": 146, - "name": "NASA Open Source Agreement 1.3", - "licenseId": "NASA-1.3", - "seeAlso": [ - "http://ti.arc.nasa.gov/opensource/nosa/", - "https://opensource.org/licenses/NASA-1.3" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/IJG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IJG.json", - "referenceNumber": 147, - "name": "Independent JPEG Group License", - "licenseId": "IJG", - "seeAlso": [ - "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, { "reference": "https://spdx.org/licenses/Xfig.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Xfig.json", - "referenceNumber": 148, + "referenceNumber": 89, "name": "Xfig License", "licenseId": "Xfig", "seeAlso": [ @@ -1875,83 +1126,36 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Noweb.html", + "reference": "https://spdx.org/licenses/swrule.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Noweb.json", - "referenceNumber": 149, - "name": "Noweb License", - "licenseId": "Noweb", + "detailsUrl": "https://spdx.org/licenses/swrule.json", + "referenceNumber": 90, + "name": "swrule License", + "licenseId": "swrule", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Noweb" + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Mup.html", + "reference": "https://spdx.org/licenses/OPL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Mup.json", - "referenceNumber": 150, - "name": "Mup License", - "licenseId": "Mup", + "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", + "referenceNumber": 91, + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Mup" + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License" ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", - "referenceNumber": 151, - "name": "Creative Commons Attribution 2.0 Generic", - "licenseId": "CC-BY-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ODC-By-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", - "referenceNumber": 152, - "name": "Open Data Commons Attribution License v1.0", - "licenseId": "ODC-By-1.0", - "seeAlso": [ - "https://opendatacommons.org/licenses/by/1.0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/blessing.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/blessing.json", - "referenceNumber": 153, - "name": "SQLite Blessing", - "licenseId": "blessing", - "seeAlso": [ - "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9", - "https://sqlite.org/src/artifact/df5091916dbb40e6" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", - "referenceNumber": 154, - "name": "SSH OpenSSH license", - "licenseId": "SSH-OpenSSH", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" - ], - "isOsiApproved": false + "isOsiApproved": false, + "isFsfLibre": false }, { "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", - "referenceNumber": 155, + "referenceNumber": 92, "name": "Creative Commons Attribution Non Commercial 2.0 Generic", "licenseId": "CC-BY-NC-2.0", "seeAlso": [ @@ -1961,496 +1165,97 @@ "isFsfLibre": false }, { - "reference": "https://spdx.org/licenses/LPPL-1.2.html", + "reference": "https://spdx.org/licenses/OLDAP-2.4.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", - "referenceNumber": 156, - "name": "LaTeX Project Public License v1.2", - "licenseId": "LPPL-1.2", + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", + "referenceNumber": 93, + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", - "referenceNumber": 157, - "name": "GNU Free Documentation License v1.3 only - invariants", - "licenseId": "GFDL-1.3-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "reference": "https://spdx.org/licenses/IPA.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", - "referenceNumber": 158, - "name": "GNU Free Documentation License v1.2 only - no invariants", - "licenseId": "GFDL-1.2-no-invariants-only", + "detailsUrl": "https://spdx.org/licenses/IPA.json", + "referenceNumber": 94, + "name": "IPA Font License", + "licenseId": "IPA", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", - "referenceNumber": 159, - "name": "SIL Open Font License 1.0", - "licenseId": "OFL-1.0", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SISSL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", - "referenceNumber": 160, - "name": "Sun Industry Standards Source License v1.2", - "licenseId": "SISSL-1.2", - "seeAlso": [ - "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json", - "referenceNumber": 161, - "name": "THOR Public License 1.0", - "licenseId": "TPL-1.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/lsof.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/lsof.json", - "referenceNumber": 162, - "name": "lsof License", - "licenseId": "lsof", - "seeAlso": [ - "https://github.com/lsof-org/lsof/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", - "referenceNumber": 163, - "name": "Affero General Public License v1.0 or later", - "licenseId": "AGPL-1.0-or-later", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MITNFA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MITNFA.json", - "referenceNumber": 164, - "name": "MIT +no-false-attribs license", - "licenseId": "MITNFA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MITNFA" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/metamail.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/metamail.json", - "referenceNumber": 165, - "name": "metamail License", - "licenseId": "metamail", - "seeAlso": [ - "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Imlib2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Imlib2.json", - "referenceNumber": 166, - "name": "Imlib2 License", - "licenseId": "Imlib2", - "seeAlso": [ - "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", - "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", - "referenceNumber": 167, - "name": "Academic Free License v2.0", - "licenseId": "AFL-2.0", - "seeAlso": [ - "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" + "https://opensource.org/licenses/IPA" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/EUPL-1.0.html", + "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", - "referenceNumber": 168, - "name": "European Union Public License 1.0", - "licenseId": "EUPL-1.0", + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", + "referenceNumber": 95, + "name": "CERN Open Hardware Licence v1.2", + "licenseId": "CERN-OHL-1.2", "seeAlso": [ - "http://ec.europa.eu/idabc/en/document/7330.html", - "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id=31096" + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/AAL.html", + "reference": "https://spdx.org/licenses/CFITSIO.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AAL.json", - "referenceNumber": 169, - "name": "Attribution Assurance License", - "licenseId": "AAL", + "detailsUrl": "https://spdx.org/licenses/CFITSIO.json", + "referenceNumber": 96, + "name": "CFITSIO License", + "licenseId": "CFITSIO", "seeAlso": [ - "https://opensource.org/licenses/attribution" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ssh-keyscan.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ssh-keyscan.json", - "referenceNumber": 170, - "name": "ssh-keyscan License", - "licenseId": "ssh-keyscan", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82" + "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", + "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Soundex.html", + "reference": "https://spdx.org/licenses/BSD-Source-beginning-file.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Soundex.json", - "referenceNumber": 171, - "name": "Soundex License", - "licenseId": "Soundex", + "detailsUrl": "https://spdx.org/licenses/BSD-Source-beginning-file.json", + "referenceNumber": 97, + "name": "BSD Source Code Attribution - beginning of file variant", + "licenseId": "BSD-Source-beginning-file", "seeAlso": [ - "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11" + "https://github.com/lattera/freebsd/blob/master/sys/cam/cam.c#L4" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/W3C-19980720.html", + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", - "referenceNumber": 172, - "name": "W3C Software Notice and License (1998-07-20)", - "licenseId": "W3C-19980720", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", + "referenceNumber": 98, + "name": "GNU Free Documentation License v1.1 or later - invariants", + "licenseId": "GFDL-1.1-invariants-or-later", "seeAlso": [ - "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/W3C.html", + "reference": "https://spdx.org/licenses/RHeCos-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C.json", - "referenceNumber": 173, - "name": "W3C Software Notice and License (2002-12-31)", - "licenseId": "W3C", + "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", + "referenceNumber": 99, + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", "seeAlso": [ - "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", - "https://opensource.org/licenses/W3C" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", - "referenceNumber": 174, - "name": "BitTorrent Open Source License v1.1", - "licenseId": "BitTorrent-1.1", - "seeAlso": [ - "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + "http://ecos.sourceware.org/old-license.html" ], "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", - "referenceNumber": 175, - "name": "GNU General Public License v1.0 or later", - "licenseId": "GPL-1.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Spencer-99.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", - "referenceNumber": 176, - "name": "Spencer License 99", - "licenseId": "Spencer-99", - "seeAlso": [ - "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sleepycat.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", - "referenceNumber": 177, - "name": "Sleepycat License", - "licenseId": "Sleepycat", - "seeAlso": [ - "https://opensource.org/licenses/Sleepycat" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", - "referenceNumber": 178, - "name": "Data licence Germany – zero – version 2.0", - "licenseId": "DL-DE-ZERO-2.0", - "seeAlso": [ - "https://www.govdata.de/dl-de/zero-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", - "referenceNumber": 179, - "name": "BSD 3-Clause \"New\" or \"Revised\" License", - "licenseId": "BSD-3-Clause", - "seeAlso": [ - "https://opensource.org/licenses/BSD-3-Clause", - "https://www.eclipse.org/org/documents/edl-v10.php" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", - "referenceNumber": 180, - "name": "BSD 4 Clause Shortened", - "licenseId": "BSD-4-Clause-Shortened", - "seeAlso": [ - "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SHL-0.51.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", - "referenceNumber": 181, - "name": "Solderpad Hardware License, Version 0.51", - "licenseId": "SHL-0.51", - "seeAlso": [ - "https://solderpad.org/licenses/SHL-0.51/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", - "referenceNumber": 182, - "name": "GNU Lesser General Public License v2.1 only", - "licenseId": "LGPL-2.1-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Parity-6.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", - "referenceNumber": 183, - "name": "The Parity Public License 6.0.0", - "licenseId": "Parity-6.0.0", - "seeAlso": [ - "https://paritylicense.com/versions/6.0.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", - "referenceNumber": 184, - "name": "GNU General Public License v3.0 w/Autoconf exception", - "licenseId": "GPL-3.0-with-autoconf-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/autoconf-exception-3.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-0.json", - "referenceNumber": 185, - "name": "MIT No Attribution", - "licenseId": "MIT-0", - "seeAlso": [ - "https://github.com/aws/mit-0", - "https://romanrm.net/mit-zero", - "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-PDDC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", - "referenceNumber": 186, - "name": "Creative Commons Public Domain Dedication and Certification", - "licenseId": "CC-PDDC", - "seeAlso": [ - "https://creativecommons.org/licenses/publicdomain/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ulem.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ulem.json", - "referenceNumber": 187, - "name": "ulem License", - "licenseId": "ulem", - "seeAlso": [ - "https://mirrors.ctan.org/macros/latex/contrib/ulem/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/xinetd.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xinetd.json", - "referenceNumber": 188, - "name": "xinetd License", - "licenseId": "xinetd", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Xinetd_License" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Linux-man-pages-1-para.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-1-para.json", - "referenceNumber": 189, - "name": "Linux man-pages - 1 paragraph", - "licenseId": "Linux-man-pages-1-para", - "seeAlso": [ - "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.8.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", - "referenceNumber": 190, - "name": "Open LDAP Public License v2.8", - "licenseId": "OLDAP-2.8", - "seeAlso": [ - "http://www.openldap.org/software/release/license.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OML.json", - "referenceNumber": 191, - "name": "Open Market License", - "licenseId": "OML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Open_Market_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ICU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ICU.json", - "referenceNumber": 192, - "name": "ICU License", - "licenseId": "ICU", - "seeAlso": [ - "http://source.icu-project.org/repos/icu/icu/trunk/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", - "referenceNumber": 193, - "name": "SGI Free Software License B v2.0", - "licenseId": "SGI-B-2.0", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", - "referenceNumber": 194, - "name": "ANTLR Software Rights Notice with license fallback", - "licenseId": "ANTLR-PD-fallback", - "seeAlso": [ - "http://www.antlr2.org/license.html" - ], - "isOsiApproved": false + "isFsfLibre": false }, { "reference": "https://spdx.org/licenses/dvipdfm.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", - "referenceNumber": 195, + "referenceNumber": 100, "name": "dvipdfm License", "licenseId": "dvipdfm", "seeAlso": [ @@ -2459,12 +1264,410 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GPL-3.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", - "referenceNumber": 196, - "name": "GNU General Public License v3.0 or later", - "licenseId": "GPL-3.0+", + "reference": "https://spdx.org/licenses/TGPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TGPPL-1.0.json", + "referenceNumber": 101, + "name": "Transitive Grace Period Public Licence 1.0", + "licenseId": "TGPPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TGPPL", + "https://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/COPYING.TGPPL.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IBM-pibs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", + "referenceNumber": 102, + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", + "seeAlso": [ + "http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Leptonica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Leptonica.json", + "referenceNumber": 103, + "name": "Leptonica License", + "licenseId": "Leptonica", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NAIST-2003.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", + "referenceNumber": 104, + "name": "Nara Institute of Science and Technology License (2003)", + "licenseId": "NAIST-2003", + "seeAlso": [ + "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", + "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", + "referenceNumber": 105, + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", + "referenceNumber": 106, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", + "referenceNumber": 107, + "name": "Mulan Permissive Software License, Version 1", + "licenseId": "MulanPSL-1.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL/", + "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Jam.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Jam.json", + "referenceNumber": 108, + "name": "Jam License", + "licenseId": "Jam", + "seeAlso": [ + "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", + "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Saxpath.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Saxpath.json", + "referenceNumber": 109, + "name": "Saxpath License", + "licenseId": "Saxpath", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gnuplot.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gnuplot.json", + "referenceNumber": 110, + "name": "gnuplot License", + "licenseId": "gnuplot", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach-nodoc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach-nodoc.json", + "referenceNumber": 111, + "name": "CMU Mach - no notices-in-documentation variant", + "licenseId": "CMU-Mach-nodoc", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L718-L728", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", + "referenceNumber": 112, + "name": "X11 License Distribution Modification Variant", + "licenseId": "X11-distribute-modifications-variant", + "seeAlso": [ + "https://github.com/mirror/ncurses/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PADL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PADL.json", + "referenceNumber": 113, + "name": "PADL License", + "licenseId": "PADL", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type=heads#L19-23" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", + "referenceNumber": 114, + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GCR-docs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GCR-docs.json", + "referenceNumber": 115, + "name": "Gnome GCR Documentation License", + "licenseId": "GCR-docs", + "seeAlso": [ + "https://github.com/GNOME/gcr/blob/master/docs/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", + "referenceNumber": 116, + "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", + "licenseId": "CC-BY-NC-SA-2.0-FR", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", + "referenceNumber": 117, + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "seeAlso": [ + "http://www.freebsd.org/copyright/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC-export-US.json", + "referenceNumber": 118, + "name": "Historical Permission Notice and Disclaimer - University of California, US export warning", + "licenseId": "HPND-UC-export-US", + "seeAlso": [ + "https://github.com/RTimothyEdwards/magic/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", + "referenceNumber": 119, + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EPICS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPICS.json", + "referenceNumber": 120, + "name": "EPICS Open License", + "licenseId": "EPICS", + "seeAlso": [ + "https://epics.anl.gov/license/open.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/any-OSI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/any-OSI.json", + "referenceNumber": 121, + "name": "Any OSI License", + "licenseId": "any-OSI", + "seeAlso": [ + "https://metacpan.org/pod/Exporter::Tidy#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/VOSTROM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", + "referenceNumber": 122, + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/VOSTROM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", + "referenceNumber": 123, + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ECL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", + "referenceNumber": 124, + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.json", + "referenceNumber": 125, + "name": "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer", + "licenseId": "HPND-sell-MIT-disclaimer-xserver", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type=heads#L1781" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NOSL.json", + "referenceNumber": 126, + "name": "Netizen Open Source License", + "licenseId": "NOSL", + "seeAlso": [ + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NASA-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", + "referenceNumber": 127, + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "seeAlso": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Naumen.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Naumen.json", + "referenceNumber": 128, + "name": "Naumen Public License", + "licenseId": "Naumen", + "seeAlso": [ + "https://opensource.org/licenses/Naumen" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", + "referenceNumber": 129, + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", + "referenceNumber": 130, + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "seeAlso": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Arphic-1999.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", + "referenceNumber": 131, + "name": "Arphic Public License", + "licenseId": "Arphic-1999", + "seeAlso": [ + "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Dotseqn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", + "referenceNumber": 132, + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", + "referenceNumber": 133, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", "seeAlso": [ "https://www.gnu.org/licenses/gpl-3.0-standalone.html", "https://opensource.org/licenses/GPL-3.0" @@ -2473,116 +1676,253 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/EPL-2.0.html", + "reference": "https://spdx.org/licenses/HTMLTIDY.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", - "referenceNumber": 197, - "name": "Eclipse Public License 2.0", - "licenseId": "EPL-2.0", + "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", + "referenceNumber": 134, + "name": "HTML Tidy License", + "licenseId": "HTMLTIDY", "seeAlso": [ - "https://www.eclipse.org/legal/epl-2.0", - "https://www.opensource.org/licenses/EPL-2.0" + "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", + "referenceNumber": 135, + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPL-1.0" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OLDAP-1.3.html", + "reference": "https://spdx.org/licenses/APAFML.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", - "referenceNumber": 198, - "name": "Open LDAP Public License v1.3", - "licenseId": "OLDAP-1.3", + "detailsUrl": "https://spdx.org/licenses/APAFML.json", + "referenceNumber": 136, + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", + "reference": "https://spdx.org/licenses/MTLL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", - "referenceNumber": 199, - "name": "Linux man-pages Copyleft", - "licenseId": "Linux-man-pages-copyleft", + "detailsUrl": "https://spdx.org/licenses/MTLL.json", + "referenceNumber": 137, + "name": "Matrix Template Library License", + "licenseId": "MTLL", "seeAlso": [ - "https://www.kernel.org/doc/man-pages/licenses.html" + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "reference": "https://spdx.org/licenses/OSL-2.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", - "referenceNumber": 200, - "name": "SIL Open Font License 1.1 with no Reserved Font Name", - "licenseId": "OFL-1.1-no-RFN", + "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", + "referenceNumber": 138, + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", - "https://opensource.org/licenses/OFL-1.1" + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Spencer-99.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", + "referenceNumber": 139, + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "seeAlso": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.json", + "referenceNumber": 140, + "name": "xkeyboard-config Zinoviev License", + "licenseId": "xkeyboard-config-Zinoviev", + "seeAlso": [ + "https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/COPYING?ref_type=heads#L178" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Plexus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Plexus.json", + "referenceNumber": 141, + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLFL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLFL-1.3.json", + "referenceNumber": 142, + "name": "Open Logistics Foundation License Version 1.3", + "licenseId": "OLFL-1.3", + "seeAlso": [ + "https://openlogisticsfoundation.org/licenses/", + "https://opensource.org/license/olfl-1-3/" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/ISC.html", + "reference": "https://spdx.org/licenses/Beerware.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ISC.json", - "referenceNumber": 201, - "name": "ISC License", - "licenseId": "ISC", + "detailsUrl": "https://spdx.org/licenses/Beerware.json", + "referenceNumber": 143, + "name": "Beerware License", + "licenseId": "Beerware", "seeAlso": [ - "https://www.isc.org/licenses/", - "https://www.isc.org/downloads/software-support-policy/isc-license/", - "https://opensource.org/licenses/ISC" + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", + "referenceNumber": 144, + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "seeAlso": [ + "http://www.opensource.apple.com/license/apsl/" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", + "reference": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", - "referenceNumber": 202, - "name": "GNU Free Documentation License v1.1 only - invariants", - "licenseId": "GFDL-1.1-invariants-only", + "detailsUrl": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.json", + "referenceNumber": 145, + "name": "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant", + "licenseId": "HPND-Fenneberg-Livingston", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + "https://github.com/FreeRADIUS/freeradius-client/blob/master/COPYRIGHT#L32", + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L34" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Adobe-2006.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", - "referenceNumber": 203, - "name": "Adobe Systems Incorporated Source Code License Agreement", - "licenseId": "Adobe-2006", + "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", + "referenceNumber": 146, + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + "http://ac-archive.sourceforge.net/doc/copyright.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "reference": "https://spdx.org/licenses/Elastic-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", - "referenceNumber": 204, - "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", - "licenseId": "CC-BY-NC-ND-1.0", + "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", + "referenceNumber": 147, + "name": "Elastic License 2.0", + "licenseId": "Elastic-2.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + "https://www.elastic.co/licensing/elastic-license", + "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/DSDP.html", + "reference": "https://spdx.org/licenses/SMLNJ.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DSDP.json", - "referenceNumber": 205, - "name": "DSDP License", - "licenseId": "DSDP", + "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", + "referenceNumber": 148, + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/DSDP" + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AMDPLPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", + "referenceNumber": 149, + "name": "AMD's plpa_map.c License", + "licenseId": "AMDPLPA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", + "referenceNumber": 150, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", + "licenseId": "CC-BY-NC-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", + "referenceNumber": 151, + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", + "referenceNumber": 152, + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "seeAlso": [ + "https://www.unicode.org/license.txt", + "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCL.json", + "referenceNumber": 153, + "name": "NCL Source Code License", + "licenseId": "NCL", + "seeAlso": [ + "https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/modules/module-filter-chain/pffft.c?ref_type=heads#L1-52" ], "isOsiApproved": false }, @@ -2590,7 +1930,7 @@ "reference": "https://spdx.org/licenses/D-FSL-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json", - "referenceNumber": 206, + "referenceNumber": 154, "name": "Deutsche Freie Software Lizenz", "licenseId": "D-FSL-1.0", "seeAlso": [ @@ -2606,316 +1946,108 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/SHL-0.5.html", + "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", - "referenceNumber": 207, - "name": "Solderpad Hardware License v0.5", - "licenseId": "SHL-0.5", + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", + "referenceNumber": 155, + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", "seeAlso": [ - "https://solderpad.org/licenses/SHL-0.5/" + "https://creativecommons.org/licenses/by-sa/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/W3C-19980720.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", + "referenceNumber": 156, + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/SchemeReport.html", + "reference": "https://spdx.org/licenses/MITNFA.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", - "referenceNumber": 208, - "name": "Scheme Language Report License", - "licenseId": "SchemeReport", + "detailsUrl": "https://spdx.org/licenses/MITNFA.json", + "referenceNumber": 157, + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", "seeAlso": [ - + "https://fedoraproject.org/wiki/Licensing/MITNFA" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", + "reference": "https://spdx.org/licenses/pnmstitch.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", - "referenceNumber": 209, - "name": "Mulan Permissive Software License, Version 1", - "licenseId": "MulanPSL-1.0", + "detailsUrl": "https://spdx.org/licenses/pnmstitch.json", + "referenceNumber": 158, + "name": "pnmstitch License", + "licenseId": "pnmstitch", "seeAlso": [ - "https://license.coscl.org.cn/MulanPSL/", - "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NTP.html", + "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTP.json", - "referenceNumber": 210, - "name": "NTP License", - "licenseId": "NTP", + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", + "referenceNumber": 159, + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", "seeAlso": [ - "https://opensource.org/licenses/NTP" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Jam.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Jam.json", - "referenceNumber": 211, - "name": "Jam License", - "licenseId": "Jam", - "seeAlso": [ - "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", - "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", - "referenceNumber": 212, - "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", - "licenseId": "CC-BY-SA-2.0-UK", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", - "referenceNumber": 213, - "name": "BSD with attribution", - "licenseId": "BSD-3-Clause-Attribution", + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", + "referenceNumber": 160, + "name": "HPND sell variant with MIT disclaimer", + "licenseId": "HPND-sell-variant-MIT-disclaimer", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", + "reference": "https://spdx.org/licenses/snprintf.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", - "referenceNumber": 214, - "name": "Lucida Bitmap Fonts License", - "licenseId": "Lucida-Bitmap-Fonts", + "detailsUrl": "https://spdx.org/licenses/snprintf.json", + "referenceNumber": 161, + "name": "snprintf License", + "licenseId": "snprintf", "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type=heads" + "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Zimbra-1.4.html", + "reference": "https://spdx.org/licenses/OSL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", - "referenceNumber": 215, - "name": "Zimbra Public License v1.4", - "licenseId": "Zimbra-1.4", + "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", + "referenceNumber": 162, + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", "seeAlso": [ - "http://www.zimbra.com/legal/zimbra-public-license-1-4" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", - "referenceNumber": 216, - "name": "CUA Office Public License v1.0", - "licenseId": "CUA-OPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CUA-OPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", - "referenceNumber": 217, - "name": "BSD 2-Clause \"Simplified\" License", - "licenseId": "BSD-2-Clause", - "seeAlso": [ - "https://opensource.org/licenses/BSD-2-Clause" + "https://opensource.org/licenses/OSL-1.0" ], "isOsiApproved": true, "isFsfLibre": true }, - { - "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", - "referenceNumber": 218, - "name": "Community Specification License 1.0", - "licenseId": "Community-Spec-1.0", - "seeAlso": [ - "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", - "referenceNumber": 219, - "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", - "licenseId": "OLDAP-2.0", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/diffmark.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/diffmark.json", - "referenceNumber": 220, - "name": "diffmark license", - "licenseId": "diffmark", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/diffmark" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Abstyles.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Abstyles.json", - "referenceNumber": 221, - "name": "Abstyles License", - "licenseId": "Abstyles", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Abstyles" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Zeeff.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zeeff.json", - "referenceNumber": 222, - "name": "Zeeff License", - "licenseId": "Zeeff", - "seeAlso": [ - "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", - "referenceNumber": 223, - "name": "Brian Gladman 3-Clause License", - "licenseId": "Brian-Gladman-3-Clause", - "seeAlso": [ - "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Bitstream-Vera.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", - "referenceNumber": 224, - "name": "Bitstream Vera Font License", - "licenseId": "Bitstream-Vera", - "seeAlso": [ - "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", - "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Naumen.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Naumen.json", - "referenceNumber": 225, - "name": "Naumen Public License", - "licenseId": "Naumen", - "seeAlso": [ - "https://opensource.org/licenses/Naumen" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/SGI-OpenGL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-OpenGL.json", - "referenceNumber": 226, - "name": "SGI OpenGL License", - "licenseId": "SGI-OpenGL", - "seeAlso": [ - "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type=heads" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", - "referenceNumber": 227, - "name": "Creative Commons Attribution Share Alike 2.1 Japan", - "licenseId": "CC-BY-SA-2.1-JP", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", - "referenceNumber": 228, - "name": "Creative Commons Attribution No Derivatives 4.0 International", - "licenseId": "CC-BY-ND-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Wu.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json", - "referenceNumber": 229, - "name": "MIT Tom Wu Variant", - "licenseId": "MIT-Wu", - "seeAlso": [ - "https://github.com/chromium/octane/blob/master/crypto.js" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/gnuplot.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/gnuplot.json", - "referenceNumber": 230, - "name": "gnuplot License", - "licenseId": "gnuplot", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Gnuplot" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SAX-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", - "referenceNumber": 231, - "name": "Sax Public Domain Notice", - "licenseId": "SAX-PD", - "seeAlso": [ - "http://www.saxproject.org/copying.html" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/HPND-doc-sell.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/HPND-doc-sell.json", - "referenceNumber": 232, + "referenceNumber": 163, "name": "Historical Permission Notice and Disclaimer - documentation sell variant", "licenseId": "HPND-doc-sell", "seeAlso": [ @@ -2925,164 +2057,177 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", + "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", - "referenceNumber": 233, - "name": "BitTorrent Open Source License v1.0", - "licenseId": "BitTorrent-1.0", + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", + "referenceNumber": 164, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", "seeAlso": [ - "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HP-1989.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HP-1989.json", - "referenceNumber": 234, - "name": "Hewlett-Packard 1989 License", - "licenseId": "HP-1989", - "seeAlso": [ - "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OCLC-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", - "referenceNumber": 235, - "name": "OCLC Research Public License 2.0", - "licenseId": "OCLC-2.0", - "seeAlso": [ - "http://www.oclc.org/research/activities/software/license/v2final.htm", - "https://opensource.org/licenses/OCLC-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MS-LPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", - "referenceNumber": 236, - "name": "Microsoft Limited Public License", - "licenseId": "MS-LPL", - "seeAlso": [ - "https://www.openhub.net/licenses/mslpl", - "https://github.com/gabegundy/atlserver/blob/master/License.txt", - "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Artistic-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", - "referenceNumber": 237, - "name": "Artistic License 2.0", - "licenseId": "Artistic-2.0", - "seeAlso": [ - "http://www.perlfoundation.org/artistic_license_2_0", - "https://www.perlfoundation.org/artistic-license-20.html", - "https://opensource.org/licenses/artistic-license-2.0" + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", + "reference": "https://spdx.org/licenses/LAL-1.2.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", - "referenceNumber": 238, - "name": "GNU Free Documentation License v1.2 or later - invariants", - "licenseId": "GFDL-1.2-invariants-or-later", + "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", + "referenceNumber": 165, + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + "http://artlibre.org/licence/lal/licence-art-libre-12/" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/JSON.html", + "reference": "https://spdx.org/licenses/OGC-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JSON.json", - "referenceNumber": 239, - "name": "JSON License", - "licenseId": "JSON", + "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", + "referenceNumber": 166, + "name": "OGC Software License, Version 1.0", + "licenseId": "OGC-1.0", "seeAlso": [ - "http://www.json.org/license.html" + "https://www.ogc.org/ogc/software/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", + "referenceNumber": 167, + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode" ], "isOsiApproved": false, "isFsfLibre": false }, { - "reference": "https://spdx.org/licenses/checkmk.html", + "reference": "https://spdx.org/licenses/Aladdin.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/checkmk.json", - "referenceNumber": 240, - "name": "Checkmk License", - "licenseId": "checkmk", + "detailsUrl": "https://spdx.org/licenses/Aladdin.json", + "referenceNumber": 168, + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", "seeAlso": [ - "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in" + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Imlib2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Imlib2.json", + "referenceNumber": 169, + "name": "Imlib2 License", + "licenseId": "Imlib2", + "seeAlso": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", + "referenceNumber": 170, + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", + "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", - "referenceNumber": 241, - "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", - "licenseId": "CC-BY-NC-SA-4.0", + "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", + "referenceNumber": 171, + "name": "BSD with Attribution and HPND disclaimer", + "licenseId": "BSD-Attribution-HPND-disclaimer", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Graphics-Gems.html", + "reference": "https://spdx.org/licenses/Giftware.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json", - "referenceNumber": 242, - "name": "Graphics Gems License", - "licenseId": "Graphics-Gems", + "detailsUrl": "https://spdx.org/licenses/Giftware.json", + "referenceNumber": 172, + "name": "Giftware License", + "licenseId": "Giftware", "seeAlso": [ - "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md" + "http://liballeg.org/license.html#allegro-4-the-giftware-license" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GD.html", + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GD.json", - "referenceNumber": 243, - "name": "GD License", - "licenseId": "GD", + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", + "referenceNumber": 173, + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", "seeAlso": [ - "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" + "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", + "referenceNumber": 174, + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/0BSD.html", + "reference": "https://spdx.org/licenses/FBM.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/0BSD.json", - "referenceNumber": 244, - "name": "BSD Zero Clause License", - "licenseId": "0BSD", + "detailsUrl": "https://spdx.org/licenses/FBM.json", + "referenceNumber": 175, + "name": "Fuzzy Bitmap License", + "licenseId": "FBM", "seeAlso": [ - "http://landley.net/toybox/license.html", - "https://opensource.org/licenses/0BSD" + "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26" ], - "isOsiApproved": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/LGPL-2.1+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", - "referenceNumber": 245, - "name": "GNU Lesser General Public License v2.1 or later", - "licenseId": "LGPL-2.1+", + "reference": "https://spdx.org/licenses/WTFPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/WTFPL.json", + "referenceNumber": 176, + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "seeAlso": [ + "http://www.wtfpl.net/about/", + "http://sam.zoy.org/wtfpl/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", + "referenceNumber": 177, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", "seeAlso": [ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", "https://opensource.org/licenses/LGPL-2.1" @@ -3091,64 +2236,267 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/MIT.html", + "reference": "https://spdx.org/licenses/BSD-Systemics.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT.json", - "referenceNumber": 246, - "name": "MIT License", - "licenseId": "MIT", + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics.json", + "referenceNumber": 178, + "name": "Systemics BSD variant license", + "licenseId": "BSD-Systemics", "seeAlso": [ - "https://opensource.org/licenses/MIT" + "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mailprio.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mailprio.json", + "referenceNumber": 179, + "name": "mailprio License", + "licenseId": "mailprio", + "seeAlso": [ + "https://fossies.org/linux/sendmail/contrib/mailprio" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", + "referenceNumber": 180, + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FreeImage.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeImage.json", + "referenceNumber": 181, + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "seeAlso": [ + "http://freeimage.sourceforge.net/freeimage-license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sleepycat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", + "referenceNumber": 182, + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "seeAlso": [ + "https://opensource.org/licenses/Sleepycat" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OCCT-PL.html", + "reference": "https://spdx.org/licenses/MirOS.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", - "referenceNumber": 247, - "name": "Open CASCADE Technology Public License", - "licenseId": "OCCT-PL", + "detailsUrl": "https://spdx.org/licenses/MirOS.json", + "referenceNumber": 183, + "name": "The MirOS Licence", + "licenseId": "MirOS", "seeAlso": [ - "http://www.opencascade.com/content/occt-public-license" + "https://opensource.org/licenses/MirOS" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", + "referenceNumber": 184, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", + "licenseId": "CC-BY-NC-SA-2.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", + "reference": "https://spdx.org/licenses/HPND-MIT-disclaimer.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", - "referenceNumber": 248, - "name": "GNU Lesser General Public License v3.0 only", - "licenseId": "LGPL-3.0-only", + "detailsUrl": "https://spdx.org/licenses/HPND-MIT-disclaimer.json", + "referenceNumber": 185, + "name": "Historical Permission Notice and Disclaimer with MIT disclaimer", + "licenseId": "HPND-MIT-disclaimer", "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" + "https://metacpan.org/release/NLNETLABS/Net-DNS-SEC-1.22/source/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Libpng.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Libpng.json", + "referenceNumber": 186, + "name": "libpng License", + "licenseId": "Libpng", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", + "referenceNumber": 187, + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "seeAlso": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/AdaCore-doc.html", + "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json", - "referenceNumber": 249, - "name": "AdaCore Doc License", - "licenseId": "AdaCore-doc", + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", + "referenceNumber": 188, + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", "seeAlso": [ - "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", - "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", - "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst" + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Glide.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glide.json", + "referenceNumber": 189, + "name": "3dfx Glide License", + "licenseId": "Glide", + "seeAlso": [ + "http://www.users.on.net/~triforce/glidexp/COPYING.txt" ], "isOsiApproved": false }, + { + "reference": "https://spdx.org/licenses/GLWTPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", + "referenceNumber": 190, + "name": "Good Luck With That Public License", + "licenseId": "GLWTPL", + "seeAlso": [ + "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/O-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", + "referenceNumber": 191, + "name": "Open Use of Data Agreement v1.0", + "licenseId": "O-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", + "https://cdla.dev/open-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "referenceNumber": 192, + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CATOSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", + "referenceNumber": 193, + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/CATOSL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", + "referenceNumber": 194, + "name": "ANTLR Software Rights Notice with license fallback", + "licenseId": "ANTLR-PD-fallback", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Intel.json", + "referenceNumber": 195, + "name": "Historical Permission Notice and Disclaimer - Intel variant", + "licenseId": "HPND-Intel", + "seeAlso": [ + "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/i960/memcpy.S;hb=HEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", + "referenceNumber": 196, + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/LPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FSFULLRWD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json", + "referenceNumber": 197, + "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)", + "licenseId": "FSFULLRWD", + "seeAlso": [ + "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", + "referenceNumber": 198, + "name": "CERN Open Hardware Licence Version 2 - Permissive", + "licenseId": "CERN-OHL-P-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, { "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", - "referenceNumber": 250, + "referenceNumber": 199, "name": "Creative Commons Attribution Non Commercial 3.0 Unported", "licenseId": "CC-BY-NC-3.0", "seeAlso": [ @@ -3158,542 +2506,116 @@ "isFsfLibre": false }, { - "reference": "https://spdx.org/licenses/Spencer-94.html", + "reference": "https://spdx.org/licenses/3D-Slicer-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", - "referenceNumber": 251, - "name": "Spencer License 94", - "licenseId": "Spencer-94", + "detailsUrl": "https://spdx.org/licenses/3D-Slicer-1.0.json", + "referenceNumber": 200, + "name": "3D Slicer License v1.0", + "licenseId": "3D-Slicer-1.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", - "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28" + "https://slicer.org/LICENSE", + "https://github.com/Slicer/Slicer/blob/main/License.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/HTMLTIDY.html", + "reference": "https://spdx.org/licenses/Python-2.0.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", - "referenceNumber": 252, - "name": "HTML Tidy License", - "licenseId": "HTMLTIDY", + "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", + "referenceNumber": 201, + "name": "Python License 2.0.1", + "licenseId": "Python-2.0.1", "seeAlso": [ - "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" + "https://www.python.org/download/releases/2.0.1/license/", + "https://docs.python.org/3/license.html", + "https://github.com/python/cpython/blob/main/LICENSE" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "reference": "https://spdx.org/licenses/w3m.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", - "referenceNumber": 253, - "name": "GNU Free Documentation License v1.2 or later - no invariants", - "licenseId": "GFDL-1.2-no-invariants-or-later", + "detailsUrl": "https://spdx.org/licenses/w3m.json", + "referenceNumber": 202, + "name": "w3m License", + "licenseId": "w3m", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + "https://github.com/tats/w3m/blob/master/COPYING" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html", + "reference": "https://spdx.org/licenses/X11.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json", - "referenceNumber": 254, - "name": "BSD 4.3 TAHOE License", - "licenseId": "BSD-4.3TAHOE", + "detailsUrl": "https://spdx.org/licenses/X11.json", + "referenceNumber": 203, + "name": "X11 License", + "licenseId": "X11", "seeAlso": [ - "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", - "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n1788" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Giftware.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Giftware.json", - "referenceNumber": 255, - "name": "Giftware License", - "licenseId": "Giftware", - "seeAlso": [ - "http://liballeg.org/license.html#allegro-4-the-giftware-license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", - "referenceNumber": 256, - "name": "Mozilla Public License 1.1", - "licenseId": "MPL-1.1", - "seeAlso": [ - "http://www.mozilla.org/MPL/MPL-1.1.html", - "https://opensource.org/licenses/MPL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", - "referenceNumber": 257, - "name": "Taiwan Open Government Data License, version 1.0", - "licenseId": "OGDL-Taiwan-1.0", - "seeAlso": [ - "https://data.gov.tw/license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.7.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", - "referenceNumber": 258, - "name": "Open LDAP Public License v2.7", - "licenseId": "OLDAP-2.7", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2" + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/RSA-MD.html", + "reference": "https://spdx.org/licenses/Pixar.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", - "referenceNumber": 259, - "name": "RSA Message-Digest License", - "licenseId": "RSA-MD", + "detailsUrl": "https://spdx.org/licenses/Pixar.json", + "referenceNumber": 204, + "name": "Pixar License", + "licenseId": "Pixar", "seeAlso": [ - "http://www.faqs.org/rfcs/rfc1321.html" + "https://github.com/PixarAnimationStudios/OpenSubdiv/raw/v3_5_0/LICENSE.txt", + "https://graphics.pixar.com/opensubdiv/docs/license.html", + "https://github.com/PixarAnimationStudios/OpenSubdiv/blob/v3_5_0/opensubdiv/version.cpp#L2-L22" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Ferguson-Twofish.html", + "reference": "https://spdx.org/licenses/RPL-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ferguson-Twofish.json", - "referenceNumber": 260, - "name": "Ferguson Twofish License", - "licenseId": "Ferguson-Twofish", + "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", + "referenceNumber": 205, + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", "seeAlso": [ - "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Source-Code.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", - "referenceNumber": 261, - "name": "BSD Source Code Attribution", - "licenseId": "BSD-Source-Code", - "seeAlso": [ - "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", - "referenceNumber": 262, - "name": "ASWF Digital Assets License version 1.0", - "licenseId": "ASWF-Digital-Assets-1.0", - "seeAlso": [ - "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/YPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", - "referenceNumber": 263, - "name": "Yahoo! Public License v1.0", - "licenseId": "YPL-1.0", - "seeAlso": [ - "http://www.zimbra.com/license/yahoo_public_license_1.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", - "referenceNumber": 264, - "name": "Open LDAP Public License v2.1", - "licenseId": "OLDAP-2.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Glulxe.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Glulxe.json", - "referenceNumber": 265, - "name": "Glulxe License", - "licenseId": "Glulxe", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Glulxe" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PostgreSQL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", - "referenceNumber": 266, - "name": "PostgreSQL License", - "licenseId": "PostgreSQL", - "seeAlso": [ - "http://www.postgresql.org/about/licence", - "https://opensource.org/licenses/PostgreSQL" + "https://opensource.org/licenses/RPL-1.1" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/Fair.html", + "reference": "https://spdx.org/licenses/MakeIndex.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Fair.json", - "referenceNumber": 267, - "name": "Fair License", - "licenseId": "Fair", + "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", + "referenceNumber": 206, + "name": "MakeIndex License", + "licenseId": "MakeIndex", "seeAlso": [ - "http://fairlicense.org/", - "https://opensource.org/licenses/Fair" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/APSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", - "referenceNumber": 268, - "name": "Apple Public Source License 1.0", - "licenseId": "APSL-1.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", - "referenceNumber": 269, - "name": "GNU General Public License v1.0 or later", - "licenseId": "GPL-1.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + "https://fedoraproject.org/wiki/Licensing/MakeIndex" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/libutil-David-Nugent.html", + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json", - "referenceNumber": 270, - "name": "libutil David Nugent License", - "licenseId": "libutil-David-Nugent", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", + "referenceNumber": 207, + "name": "GNU Free Documentation License v1.3 or later - no invariants", + "licenseId": "GFDL-1.3-no-invariants-or-later", "seeAlso": [ - "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", - "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd" + "https://www.gnu.org/licenses/fdl-1.3.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/SCEA.html", + "reference": "https://spdx.org/licenses/OLDAP-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SCEA.json", - "referenceNumber": 271, - "name": "SCEA Shared Source License", - "licenseId": "SCEA", + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", + "referenceNumber": 208, + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", "seeAlso": [ - "http://research.scea.com/scea_shared_source_license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", - "referenceNumber": 272, - "name": "BSD 3-Clause No Military License", - "licenseId": "BSD-3-Clause-No-Military-License", - "seeAlso": [ - "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", - "https://github.com/greymass/swift-eosio/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xnet.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xnet.json", - "referenceNumber": 273, - "name": "X.Net License", - "licenseId": "Xnet", - "seeAlso": [ - "https://opensource.org/licenses/Xnet" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MIT-feh.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", - "referenceNumber": 274, - "name": "feh License", - "licenseId": "MIT-feh", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#feh" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", - "referenceNumber": 275, - "name": "Affero General Public License v1.0 only", - "licenseId": "AGPL-1.0-only", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Nokia.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Nokia.json", - "referenceNumber": 276, - "name": "Nokia Open Source License", - "licenseId": "Nokia", - "seeAlso": [ - "https://opensource.org/licenses/nokia" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", - "referenceNumber": 277, - "name": "Cornell Lossless JPEG License", - "licenseId": "Cornell-Lossless-JPEG", - "seeAlso": [ - "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", - "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", - "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/swrule.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/swrule.json", - "referenceNumber": 278, - "name": "swrule License", - "licenseId": "swrule", - "seeAlso": [ - "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", - "referenceNumber": 279, - "name": "Open Software License 1.1", - "licenseId": "OSL-1.1", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/OSL1.1" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", - "referenceNumber": 280, - "name": "GNU General Public License v2.0 w/Bison exception", - "licenseId": "GPL-2.0-with-bison-exception", - "seeAlso": [ - "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", - "referenceNumber": 281, - "name": "Eclipse Public License 1.0", - "licenseId": "EPL-1.0", - "seeAlso": [ - "http://www.eclipse.org/legal/epl-v10.html", - "https://opensource.org/licenses/EPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/XFree86-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", - "referenceNumber": 282, - "name": "XFree86 License 1.1", - "licenseId": "XFree86-1.1", - "seeAlso": [ - "http://www.xfree86.org/current/LICENSE4.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/UCAR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UCAR.json", - "referenceNumber": 283, - "name": "UCAR License", - "licenseId": "UCAR", - "seeAlso": [ - "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", - "referenceNumber": 284, - "name": "copyleft-next 0.3.1", - "licenseId": "copyleft-next-0.3.1", - "seeAlso": [ - "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IJG-short.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IJG-short.json", - "referenceNumber": 285, - "name": "Independent JPEG Group License - short", - "licenseId": "IJG-short", - "seeAlso": [ - "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Plexus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Plexus.json", - "referenceNumber": 286, - "name": "Plexus Classworlds License", - "licenseId": "Plexus", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Apache-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", - "referenceNumber": 287, - "name": "Apache License 1.1", - "licenseId": "Apache-1.1", - "seeAlso": [ - "http://apache.org/licenses/LICENSE-1.1", - "https://opensource.org/licenses/Apache-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/UPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", - "referenceNumber": 288, - "name": "Universal Permissive License v1.0", - "licenseId": "UPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/UPL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/HPND-DEC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-DEC.json", - "referenceNumber": 289, - "name": "Historical Permission Notice and Disclaimer - DEC variant", - "licenseId": "HPND-DEC", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type=heads#L69" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HP-1986.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HP-1986.json", - "referenceNumber": 290, - "name": "Hewlett-Packard 1986 License", - "licenseId": "HP-1986", - "seeAlso": [ - "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/hppa/memchr.S;h=1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb=HEAD#l2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", - "referenceNumber": 291, - "name": "GNU Free Documentation License v1.1 only", - "licenseId": "GFDL-1.1-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/QPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", - "referenceNumber": 292, - "name": "Q Public License 1.0", - "licenseId": "QPL-1.0", - "seeAlso": [ - "http://doc.qt.nokia.com/3.3/license.html", - "https://opensource.org/licenses/QPL-1.0", - "https://doc.qt.io/archives/3.3/license.html" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/libpng-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", - "referenceNumber": 293, - "name": "PNG Reference Library version 2", - "licenseId": "libpng-2.0", - "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" ], "isOsiApproved": false }, @@ -3701,7 +2623,7 @@ "reference": "https://spdx.org/licenses/Zlib.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Zlib.json", - "referenceNumber": 294, + "referenceNumber": 209, "name": "zlib License", "licenseId": "Zlib", "seeAlso": [ @@ -3712,88 +2634,225 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", + "reference": "https://spdx.org/licenses/BSD-3-Clause-HP.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", - "referenceNumber": 295, - "name": "GNU Free Documentation License v1.3 or later", - "licenseId": "GFDL-1.3-or-later", + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-HP.json", + "referenceNumber": 210, + "name": "Hewlett-Packard BSD variant license", + "licenseId": "BSD-3-Clause-HP", "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" + "https://github.com/zdohnal/hplip/blob/master/COPYING#L939" ], - "isOsiApproved": false, + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-flex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-flex.json", + "referenceNumber": 211, + "name": "BSD 3-Clause Flex variant", + "licenseId": "BSD-3-Clause-flex", + "seeAlso": [ + "https://github.com/westes/flex/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-7.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", + "referenceNumber": 212, + "name": "The Parity Public License 7.0.0", + "licenseId": "Parity-7.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/7.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", + "referenceNumber": 213, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json", + "referenceNumber": 214, + "name": "HPND with US Government export control warning", + "licenseId": "HPND-export-US", + "seeAlso": [ + "https://www.kermitproject.org/ck90.html#source" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", + "referenceNumber": 215, + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", + "referenceNumber": 216, + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-3-Clause", + "https://www.eclipse.org/org/documents/edl-v10.php" + ], + "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", + "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", - "referenceNumber": 296, - "name": "CERN Open Hardware Licence v1.1", - "licenseId": "CERN-OHL-1.1", + "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", + "referenceNumber": 217, + "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + "licenseId": "CAL-1.0-Combined-Work-Exception", "seeAlso": [ - "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", - "referenceNumber": 297, - "name": "SugarCRM Public License v1.1.3", - "licenseId": "SugarCRM-1.1.3", - "seeAlso": [ - "http://www.sugarcrm.com/crm/SPL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/VSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", - "referenceNumber": 298, - "name": "Vovida Software License v1.0", - "licenseId": "VSL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/VSL-1.0" + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/NRL.html", + "reference": "https://spdx.org/licenses/Zeeff.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NRL.json", - "referenceNumber": 299, - "name": "NRL License", - "licenseId": "NRL", + "detailsUrl": "https://spdx.org/licenses/Zeeff.json", + "referenceNumber": 218, + "name": "Zeeff License", + "licenseId": "Zeeff", "seeAlso": [ - "http://web.mit.edu/network/isakmp/nrllicense.html" + "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Zend-2.0.html", + "reference": "https://spdx.org/licenses/CECILL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", - "referenceNumber": 300, - "name": "Zend License v2.0", - "licenseId": "Zend-2.0", + "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", + "referenceNumber": 219, + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", "seeAlso": [ - "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.7.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", + "referenceNumber": 220, + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", - "referenceNumber": 301, - "name": "Open Government Licence - Canada", - "licenseId": "OGL-Canada-2.0", + "reference": "https://spdx.org/licenses/AGPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", + "referenceNumber": 221, + "name": "Affero General Public License v1.0", + "licenseId": "AGPL-1.0", "seeAlso": [ - "https://open.canada.ca/en/open-government-licence-canada" + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AMD-newlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMD-newlib.json", + "referenceNumber": 222, + "name": "AMD newlib License", + "licenseId": "AMD-newlib", + "seeAlso": [ + "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/sys/a29khif/_close.S;h=04f52ae00de1dafbd9055ad8d73c5c697a3aae7f;hb=HEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ruby.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby.json", + "referenceNumber": 223, + "name": "Ruby License", + "licenseId": "Ruby", + "seeAlso": [ + "https://www.ruby-lang.org/en/about/license.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", + "referenceNumber": 224, + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", + "referenceNumber": 225, + "name": "Data licence Germany – attribution – version 2.0", + "licenseId": "DL-DE-BY-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/by-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Kastrup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kastrup.json", + "referenceNumber": 226, + "name": "Kastrup License", + "licenseId": "Kastrup", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", + "referenceNumber": 227, + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "seeAlso": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id=31096" ], "isOsiApproved": false }, @@ -3801,7 +2860,7 @@ "reference": "https://spdx.org/licenses/EUDatagrid.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", - "referenceNumber": 302, + "referenceNumber": 228, "name": "EU DataGrid Software License", "licenseId": "EUDatagrid", "seeAlso": [ @@ -3812,208 +2871,410 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Nunit.html", + "reference": "https://spdx.org/licenses/OLDAP-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", + "referenceNumber": 229, + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NRL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NRL.json", + "referenceNumber": 230, + "name": "NRL License", + "licenseId": "NRL", + "seeAlso": [ + "http://web.mit.edu/network/isakmp/nrllicense.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Darwin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Darwin.json", + "referenceNumber": 231, + "name": "BSD 2-Clause - Ian Darwin variant", + "licenseId": "BSD-2-Clause-Darwin", + "seeAlso": [ + "https://github.com/file/file/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Kazlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kazlib.json", + "referenceNumber": 232, + "name": "Kazlib License", + "licenseId": "Kazlib", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id=0062df360c2d17d57f6af19b0e444c51feb99036" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0+.html", "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/Nunit.json", - "referenceNumber": 303, - "name": "Nunit License", - "licenseId": "Nunit", + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", + "referenceNumber": 233, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Nunit" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", - "referenceNumber": 304, - "name": "Mulan Permissive Software License, Version 2", - "licenseId": "MulanPSL-2.0", - "seeAlso": [ - "https://license.coscl.org.cn/MulanPSL2/" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Newsletr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Newsletr.json", - "referenceNumber": 305, - "name": "Newsletr License", - "licenseId": "Newsletr", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Newsletr" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", - "referenceNumber": 306, - "name": "BSD-4-Clause (University of California-Specific)", - "licenseId": "BSD-4-Clause-UC", - "seeAlso": [ - "http://www.freebsd.org/copyright/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", - "referenceNumber": 307, - "name": "PolyForm Small Business License 1.0.0", - "licenseId": "PolyForm-Small-Business-1.0.0", - "seeAlso": [ - "https://polyformproject.org/licenses/small-business/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MirOS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MirOS.json", - "referenceNumber": 308, - "name": "The MirOS Licence", - "licenseId": "MirOS", - "seeAlso": [ - "https://opensource.org/licenses/MirOS" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Adobe-Utopia.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-Utopia.json", - "referenceNumber": 309, - "name": "Adobe Utopia Font License", - "licenseId": "Adobe-Utopia", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type=heads" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", - "referenceNumber": 310, - "name": "GNU Free Documentation License v1.1 or later - no invariants", - "licenseId": "GFDL-1.1-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RPL-1.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", - "referenceNumber": 311, - "name": "Reciprocal Public License 1.5", - "licenseId": "RPL-1.5", - "seeAlso": [ - "https://opensource.org/licenses/RPL-1.5" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/TMate.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TMate.json", - "referenceNumber": 312, - "name": "TMate Open Source License", - "licenseId": "TMate", - "seeAlso": [ - "http://svnkit.com/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libtiff.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libtiff.json", - "referenceNumber": 313, - "name": "libtiff License", - "licenseId": "libtiff", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/libtiff" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", - "referenceNumber": 314, - "name": "GNU General Public License v3.0 only", - "licenseId": "GPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", + "reference": "https://spdx.org/licenses/Net-SNMP.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", - "referenceNumber": 315, - "name": "Creative Commons Attribution Share Alike 3.0 Unported", - "licenseId": "CC-BY-SA-3.0", + "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", + "referenceNumber": 234, + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + "http://net-snmp.sourceforge.net/about/license.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", + "reference": "https://spdx.org/licenses/RSCPL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", - "referenceNumber": 316, - "name": "Unicode License Agreement - Data Files and Software (2016)", - "licenseId": "Unicode-DFS-2016", + "detailsUrl": "https://spdx.org/licenses/RSCPL.json", + "referenceNumber": 235, + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", "seeAlso": [ - "https://www.unicode.org/license.txt", - "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", - "http://www.unicode.org/copyright.html" + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", + "reference": "https://spdx.org/licenses/Xnet.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", - "referenceNumber": 317, - "name": "Creative Commons Attribution Non Commercial 3.0 Germany", - "licenseId": "CC-BY-NC-3.0-DE", + "detailsUrl": "https://spdx.org/licenses/Xnet.json", + "referenceNumber": 236, + "name": "X.Net License", + "licenseId": "Xnet", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" + "https://opensource.org/licenses/Xnet" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/gtkbook.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gtkbook.json", + "referenceNumber": 237, + "name": "gtkbook License", + "licenseId": "gtkbook", + "seeAlso": [ + "https://github.com/slogan621/gtkbook", + "https://github.com/oetiker/rrdtool-1.x/blob/master/src/plbasename.c#L8-L11" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NPL-1.0.html", + "reference": "https://spdx.org/licenses/OFFIS.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", - "referenceNumber": 318, - "name": "Netscape Public License v1.0", - "licenseId": "NPL-1.0", + "detailsUrl": "https://spdx.org/licenses/OFFIS.json", + "referenceNumber": 238, + "name": "OFFIS License", + "licenseId": "OFFIS", "seeAlso": [ - "http://www.mozilla.org/MPL/NPL/1.0/" + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", + "referenceNumber": 239, + "name": "Creative Commons Attribution 3.0 Germany", + "licenseId": "CC-BY-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3c.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", + "referenceNumber": 240, + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", + "referenceNumber": 241, + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", + "referenceNumber": 242, + "name": "TAPR Open Hardware License v1.0", + "licenseId": "TAPR-OHL-1.0", + "seeAlso": [ + "https://www.tapr.org/OHL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ODbL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", + "referenceNumber": 243, + "name": "Open Data Commons Open Database License v1.0", + "licenseId": "ODbL-1.0", + "seeAlso": [ + "http://www.opendatacommons.org/licenses/odbl/1.0/", + "https://opendatacommons.org/licenses/odbl/1-0/" ], "isOsiApproved": false, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", + "referenceNumber": 244, + "name": "LZMA SDK License (versions 9.22 and beyond)", + "licenseId": "LZMA-SDK-9.22", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-first-lines.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-first-lines.json", + "referenceNumber": 245, + "name": "BSD 2-Clause - first lines requirement", + "licenseId": "BSD-2-Clause-first-lines", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L664-L690", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-6.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", + "referenceNumber": 246, + "name": "The Parity Public License 6.0.0", + "licenseId": "Parity-6.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/6.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail-8.23.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", + "referenceNumber": 247, + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "seeAlso": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", + "referenceNumber": 248, + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MIT-Khronos-old.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Khronos-old.json", + "referenceNumber": 249, + "name": "MIT Khronos - old variant", + "licenseId": "MIT-Khronos-old", + "seeAlso": [ + "https://github.com/KhronosGroup/SPIRV-Cross/blob/main/LICENSES/LicenseRef-KhronosFreeUse.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SMPPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMPPL.json", + "referenceNumber": 250, + "name": "Secure Messaging Protocol Public License", + "licenseId": "SMPPL", + "seeAlso": [ + "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Condor-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", + "referenceNumber": 251, + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", + "seeAlso": [ + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", + "referenceNumber": 252, + "name": "BSD 4 Clause Shortened", + "licenseId": "BSD-4-Clause-Shortened", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", + "referenceNumber": 253, + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", + "referenceNumber": 254, + "name": "GNU Free Documentation License v1.3 only - no invariants", + "licenseId": "GFDL-1.3-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", + "referenceNumber": 255, + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TermReadKey.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TermReadKey.json", + "referenceNumber": 256, + "name": "TermReadKey License", + "licenseId": "TermReadKey", + "seeAlso": [ + "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libpng-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", + "referenceNumber": 257, + "name": "PNG Reference Library version 2", + "licenseId": "libpng-2.0", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/wxWindows.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/wxWindows.json", + "referenceNumber": 258, + "name": "wxWindows Library License", + "licenseId": "wxWindows", + "seeAlso": [ + "https://opensource.org/licenses/WXwindows" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Frameworx-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", + "referenceNumber": 259, + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Frameworx-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/psutils.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psutils.json", + "referenceNumber": 260, + "name": "psutils License", + "licenseId": "psutils", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psutils" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/eGenix.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/eGenix.json", - "referenceNumber": 319, + "referenceNumber": 261, "name": "eGenix.com Public License 1.1.0", "licenseId": "eGenix", "seeAlso": [ @@ -4023,137 +3284,65 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", + "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", - "referenceNumber": 320, - "name": "PolyForm Noncommercial License 1.0.0", - "licenseId": "PolyForm-Noncommercial-1.0.0", + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", + "referenceNumber": 262, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", "seeAlso": [ - "https://polyformproject.org/licenses/noncommercial/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Crossword.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Crossword.json", - "referenceNumber": 321, - "name": "Crossword License", - "licenseId": "Crossword", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Crossword" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json", - "referenceNumber": 322, - "name": "IEC Code Components End-user licence agreement", - "licenseId": "IEC-Code-Components-EULA", - "seeAlso": [ - "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", - "https://www.iec.ch/CCv1", - "https://www.iec.ch/copyright" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND.json", - "referenceNumber": 323, - "name": "Historical Permission Notice and Disclaimer", - "licenseId": "HPND", - "seeAlso": [ - "https://opensource.org/licenses/HPND", - "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html" + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/EFL-1.0.html", + "reference": "https://spdx.org/licenses/MPL-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", - "referenceNumber": 324, - "name": "Eiffel Forum License v1.0", - "licenseId": "EFL-1.0", + "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", + "referenceNumber": 263, + "name": "Mozilla Public License 2.0", + "licenseId": "MPL-2.0", "seeAlso": [ - "http://www.eiffel-nice.org/license/forum.txt", - "https://opensource.org/licenses/EFL-1.0" + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" ], - "isOsiApproved": true + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OLDAP-1.4.html", + "reference": "https://spdx.org/licenses/BSD-2-Clause.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", - "referenceNumber": 325, - "name": "Open LDAP Public License v1.4", - "licenseId": "OLDAP-1.4", + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", + "referenceNumber": 264, + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941" + "https://opensource.org/licenses/BSD-2-Clause" ], - "isOsiApproved": false + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/MMIXware.html", + "reference": "https://spdx.org/licenses/CC-BY-4.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MMIXware.json", - "referenceNumber": 326, - "name": "MMIXware License", - "licenseId": "MMIXware", + "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", + "referenceNumber": 265, + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", "seeAlso": [ - "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w" + "https://creativecommons.org/licenses/by/4.0/legalcode" ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OpenPBS-2.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json", - "referenceNumber": 327, - "name": "OpenPBS v2.3 Software License", - "licenseId": "OpenPBS-2.3", - "seeAlso": [ - "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", - "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unicode-TOU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", - "referenceNumber": 328, - "name": "Unicode Terms of Use", - "licenseId": "Unicode-TOU", - "seeAlso": [ - "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", - "http://www.unicode.org/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", - "referenceNumber": 329, - "name": "Creative Commons Attribution 3.0 Germany", - "licenseId": "CC-BY-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/de/legalcode" - ], - "isOsiApproved": false + "isOsiApproved": false, + "isFsfLibre": true }, { "reference": "https://spdx.org/licenses/EUPL-1.1.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", - "referenceNumber": 330, + "referenceNumber": 266, "name": "European Union Public License 1.1", "licenseId": "EUPL-1.1", "seeAlso": [ @@ -4165,50 +3354,3224 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/SL.html", + "reference": "https://spdx.org/licenses/TOSL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SL.json", - "referenceNumber": 331, - "name": "SL License", - "licenseId": "SL", + "detailsUrl": "https://spdx.org/licenses/TOSL.json", + "referenceNumber": 267, + "name": "Trusster Open Source License", + "licenseId": "TOSL", "seeAlso": [ - "https://github.com/mtoyoda/sl/blob/master/LICENSE" + "https://fedoraproject.org/wiki/Licensing/TOSL" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", + "reference": "https://spdx.org/licenses/SISSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL.json", + "referenceNumber": 268, + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "seeAlso": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Info-ZIP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", + "referenceNumber": 269, + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "seeAlso": [ + "http://www.info-zip.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0+.html", "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", - "referenceNumber": 332, - "name": "GNU General Public License v2.0 w/Font exception", - "licenseId": "GPL-2.0-with-font-exception", + "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", + "referenceNumber": 270, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", "seeAlso": [ - "https://www.gnu.org/licenses/gpl-faq.html#FontException" + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", + "referenceNumber": 271, + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/checkmk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/checkmk.json", + "referenceNumber": 272, + "name": "Checkmk License", + "licenseId": "checkmk", + "seeAlso": [ + "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Motosoto.html", + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Motosoto.json", - "referenceNumber": 333, - "name": "Motosoto License", - "licenseId": "Motosoto", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", + "referenceNumber": 273, + "name": "GNU Free Documentation License v1.1 or later - no invariants", + "licenseId": "GFDL-1.1-no-invariants-or-later", "seeAlso": [ - "https://opensource.org/licenses/Motosoto" + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail.json", + "referenceNumber": 274, + "name": "Sendmail License", + "licenseId": "Sendmail", + "seeAlso": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NGPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NGPL.json", + "referenceNumber": 275, + "name": "Nethack General Public License", + "licenseId": "NGPL", + "seeAlso": [ + "https://opensource.org/licenses/NGPL" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/Caldera.html", + "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Caldera.json", - "referenceNumber": 334, - "name": "Caldera License", - "licenseId": "Caldera", + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", + "referenceNumber": 276, + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", "seeAlso": [ - "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/HP-1986.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1986.json", + "referenceNumber": 277, + "name": "Hewlett-Packard 1986 License", + "licenseId": "HP-1986", + "seeAlso": [ + "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/hppa/memchr.S;h=1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb=HEAD#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.1.json", + "referenceNumber": 278, + "name": "Detection Rule License 1.1", + "licenseId": "DRL-1.1", + "seeAlso": [ + "https://github.com/SigmaHQ/Detection-Rule-License/blob/6ec7fbde6101d101b5b5d1fcb8f9b69fbc76c04a/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", + "referenceNumber": 279, + "name": "GNU Free Documentation License v1.2 or later - no invariants", + "licenseId": "GFDL-1.2-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", + "referenceNumber": 280, + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/SPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND.json", + "referenceNumber": 281, + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "seeAlso": [ + "https://opensource.org/licenses/HPND", + "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", + "referenceNumber": 282, + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/cddl1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MIT-open-group.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", + "referenceNumber": 283, + "name": "MIT Open Group variant", + "licenseId": "MIT-open-group", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/W3C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C.json", + "referenceNumber": 284, + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.json", + "referenceNumber": 285, + "name": "Python License 2.0", + "licenseId": "Python-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/COIL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", + "referenceNumber": 286, + "name": "Copyfree Open Innovation License", + "licenseId": "COIL-1.0", + "seeAlso": [ + "https://coil.apotheon.org/plaintext/01.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", + "referenceNumber": 287, + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", + "referenceNumber": 288, + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", + "referenceNumber": 289, + "name": "GNU Free Documentation License v1.3 only - invariants", + "licenseId": "GFDL-1.3-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Knuth-CTAN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json", + "referenceNumber": 290, + "name": "Knuth CTAN License", + "licenseId": "Knuth-CTAN", + "seeAlso": [ + "https://ctan.org/license/knuth" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GD.json", + "referenceNumber": 291, + "name": "GD License", + "licenseId": "GD", + "seeAlso": [ + "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/diffmark.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/diffmark.json", + "referenceNumber": 292, + "name": "diffmark license", + "licenseId": "diffmark", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/diffmark" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-advertising.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", + "referenceNumber": 293, + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ssh-keyscan.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ssh-keyscan.json", + "referenceNumber": 294, + "name": "ssh-keyscan License", + "licenseId": "ssh-keyscan", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", + "referenceNumber": 295, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", + "licenseId": "CC-BY-NC-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", + "referenceNumber": 296, + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Glyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", + "referenceNumber": 297, + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3RENO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json", + "referenceNumber": 298, + "name": "BSD 4.3 RENO License", + "licenseId": "BSD-4.3RENO", + "seeAlso": [ + "https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=libiberty/strcasecmp.c;h=131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb=HEAD", + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", + "referenceNumber": 299, + "name": "Hippocratic License 2.1", + "licenseId": "Hippocratic-2.1", + "seeAlso": [ + "https://firstdonoharm.dev/version/2/1/license.html", + "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", + "referenceNumber": 300, + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "seeAlso": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SAX-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", + "referenceNumber": 301, + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", + "referenceNumber": 302, + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenSSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", + "referenceNumber": 303, + "name": "OpenSSL License", + "licenseId": "OpenSSL", + "seeAlso": [ + "http://www.openssl.org/source/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", + "referenceNumber": 304, + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", + "seeAlso": [ + "http://www.zimbra.com/legal/zimbra-public-license-1-4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Wsuipa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", + "referenceNumber": 305, + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/cve-tou.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/cve-tou.json", + "referenceNumber": 306, + "name": "Common Vulnerability Enumeration ToU License", + "licenseId": "cve-tou", + "seeAlso": [ + "https://www.cve.org/Legal/TermsOfUse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", + "referenceNumber": 307, + "name": "GNU Free Documentation License v1.1 only - invariants", + "licenseId": "GFDL-1.1-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCLC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", + "referenceNumber": 308, + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "seeAlso": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NIST-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", + "referenceNumber": 309, + "name": "NIST Public Domain Notice", + "licenseId": "NIST-PD", + "seeAlso": [ + "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", + "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP-2000.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP-2000.json", + "referenceNumber": 310, + "name": "Sun PPP License (2000)", + "licenseId": "Sun-PPP-2000", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/modules/ppp_ahdlc.c#L7-L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NICTA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", + "referenceNumber": 311, + "name": "NICTA Public Software License, Version 1.0", + "licenseId": "NICTA-1.0", + "seeAlso": [ + "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xpp.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xpp.json", + "referenceNumber": 312, + "name": "XPP License", + "licenseId": "xpp", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/xpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", + "referenceNumber": 313, + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "seeAlso": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OpenPBS-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json", + "referenceNumber": 314, + "name": "OpenPBS v2.3 Software License", + "licenseId": "OpenPBS-2.3", + "seeAlso": [ + "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", + "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", + "referenceNumber": 315, + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPAL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", + "referenceNumber": 316, + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Festival.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Festival.json", + "referenceNumber": 317, + "name": "MIT Festival Variant", + "licenseId": "MIT-Festival", + "seeAlso": [ + "https://github.com/festvox/flite/blob/master/COPYING", + "https://github.com/festvox/speech_tools/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", + "referenceNumber": 318, + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", + "referenceNumber": 319, + "name": "Community Data License Agreement Permissive 2.0", + "licenseId": "CDLA-Permissive-2.0", + "seeAlso": [ + "https://cdla.dev/permissive-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", + "referenceNumber": 320, + "name": "Non-Commercial Government Licence", + "licenseId": "NCGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", + "referenceNumber": 321, + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Boehm-GC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Boehm-GC.json", + "referenceNumber": 322, + "name": "Boehm-Demers-Weiser GC License", + "licenseId": "Boehm-GC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", + "https://github.com/uim/libgcroots/blob/master/COPYING", + "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", + "referenceNumber": 323, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", + "referenceNumber": 324, + "name": "Creative Commons Attribution 3.0 Austria", + "licenseId": "CC-BY-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", + "referenceNumber": 325, + "name": "Creative Commons Attribution Share Alike 3.0 Germany", + "licenseId": "CC-BY-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Qhull.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Qhull.json", + "referenceNumber": 326, + "name": "Qhull License", + "licenseId": "Qhull", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Qhull" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/iMatix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/iMatix.json", + "referenceNumber": 327, + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "seeAlso": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", + "referenceNumber": 328, + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/OPUBL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", + "referenceNumber": 329, + "name": "Open Publication License v1.0", + "licenseId": "OPUBL-1.0", + "seeAlso": [ + "http://opencontent.org/openpub/", + "https://www.debian.org/opl", + "https://www.ctan.org/license/opl" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", + "referenceNumber": 330, + "name": "ASWF Digital Assets License version 1.0", + "licenseId": "ASWF-Digital-Assets-1.0", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", + "referenceNumber": 331, + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "seeAlso": [ + "https://www.gnu.org/software/classpath/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", + "referenceNumber": 332, + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/IPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", + "referenceNumber": 333, + "name": "FreeBSD Documentation License", + "licenseId": "FreeBSD-DOC", + "seeAlso": [ + "https://www.freebsd.org/copyright/freebsd-doc-license/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", + "referenceNumber": 334, + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", + "referenceNumber": 335, + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SGP4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGP4.json", + "referenceNumber": 336, + "name": "SGP4 Permission Notice", + "licenseId": "SGP4", + "seeAlso": [ + "https://celestrak.org/publications/AIAA/2006-6753/faq.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", + "referenceNumber": 337, + "name": "Linux man-pages Copyleft Variant", + "licenseId": "Linux-man-pages-copyleft-var", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", + "referenceNumber": 338, + "name": "Solderpad Hardware License v0.5", + "licenseId": "SHL-0.5", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.5/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-1-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-1-para.json", + "referenceNumber": 339, + "name": "Linux man-pages - 1 paragraph", + "licenseId": "Linux-man-pages-1-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Crossword.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Crossword.json", + "referenceNumber": 340, + "name": "Crossword License", + "licenseId": "Crossword", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Crossword" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", + "referenceNumber": 341, + "name": "Data licence Germany – zero – version 2.0", + "licenseId": "DL-DE-ZERO-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/zero-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AU.json", + "referenceNumber": 342, + "name": "Creative Commons Attribution 3.0 Australia", + "licenseId": "CC-BY-3.0-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-RL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-RL.json", + "referenceNumber": 343, + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", + "referenceNumber": 344, + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Afmparse.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Afmparse.json", + "referenceNumber": 345, + "name": "Afmparse License", + "licenseId": "Afmparse", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Afmparse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", + "referenceNumber": 346, + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", + "referenceNumber": 347, + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "seeAlso": [ + "http://labs.metacarta.com/license-explanation.html#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", + "referenceNumber": 348, + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-PDDC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", + "referenceNumber": 349, + "name": "Creative Commons Public Domain Dedication and Certification", + "licenseId": "CC-PDDC", + "seeAlso": [ + "https://creativecommons.org/licenses/publicdomain/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics-W3Works.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics-W3Works.json", + "referenceNumber": 350, + "name": "Systemics W3Works BSD variant license", + "licenseId": "BSD-Systemics-W3Works", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-Blowfish-2.14/source/COPYRIGHT#L7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", + "referenceNumber": 351, + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", + "referenceNumber": 352, + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "seeAlso": [ + "http://old.zope.org/Resources/ZPL/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", + "referenceNumber": 353, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-B.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", + "referenceNumber": 354, + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", + "referenceNumber": 355, + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "seeAlso": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://www.perlfoundation.org/artistic-license-20.html", + "https://opensource.org/licenses/artistic-license-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", + "referenceNumber": 356, + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/xlock.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xlock.json", + "referenceNumber": 357, + "name": "xlock License", + "licenseId": "xlock", + "seeAlso": [ + "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dtoa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dtoa.json", + "referenceNumber": 358, + "name": "David M. Gay dtoa License", + "licenseId": "dtoa", + "seeAlso": [ + "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c", + "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/stdlib/mprec.h;hb=HEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json", + "referenceNumber": 359, + "name": "IEC Code Components End-user licence agreement", + "licenseId": "IEC-Code-Components-EULA", + "seeAlso": [ + "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", + "https://www.iec.ch/CCv1", + "https://www.iec.ch/copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", + "referenceNumber": 360, + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ECL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", + "referenceNumber": 361, + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NCBI-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCBI-PD.json", + "referenceNumber": 362, + "name": "NCBI Public Domain Notice", + "licenseId": "NCBI-PD", + "seeAlso": [ + "https://github.com/ncbi/sra-tools/blob/e8e5b6af4edc460156ad9ce5902d0779cffbf685/LICENSE", + "https://github.com/ncbi/datasets/blob/0ea4cd16b61e5b799d9cc55aecfa016d6c9bd2bf/LICENSE.md", + "https://github.com/ncbi/gprobe/blob/de64d30fee8b4c4013094d7d3139ea89b5dd1ace/LICENSE", + "https://github.com/ncbi/egapx/blob/08930b9dec0c69b2d1a05e5153c7b95ef0a3eb0f/LICENSE", + "https://github.com/ncbi/datasets/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPL-image.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPL-image.json", + "referenceNumber": 363, + "name": "JPL Image Use Policy", + "licenseId": "JPL-image", + "seeAlso": [ + "https://www.jpl.nasa.gov/jpl-image-use-policy" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", + "referenceNumber": 364, + "name": "BSD 3-Clause Modification", + "licenseId": "BSD-3-Clause-Modification", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", + "referenceNumber": 365, + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", + "referenceNumber": 366, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OGTSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGTSL.json", + "referenceNumber": 367, + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "seeAlso": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Soundex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Soundex.json", + "referenceNumber": 368, + "name": "Soundex License", + "licenseId": "Soundex", + "seeAlso": [ + "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", + "referenceNumber": 369, + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", + "seeAlso": [ + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", + "referenceNumber": 370, + "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + "licenseId": "CERN-OHL-S-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Vim.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Vim.json", + "referenceNumber": 371, + "name": "Vim License", + "licenseId": "Vim", + "seeAlso": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eCos-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", + "referenceNumber": 372, + "name": "eCos license version 2.0", + "licenseId": "eCos-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/ecos-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", + "referenceNumber": 373, + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "seeAlso": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", + "referenceNumber": 374, + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OML.json", + "referenceNumber": 375, + "name": "Open Market License", + "licenseId": "OML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", + "referenceNumber": 376, + "name": "BSD 3-Clause Open MPI variant", + "licenseId": "BSD-3-Clause-Open-MPI", + "seeAlso": [ + "https://www.open-mpi.org/community/license.php", + "http://www.netlib.org/lapack/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cronyx.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cronyx.json", + "referenceNumber": 377, + "name": "Cronyx License", + "licenseId": "Cronyx", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-94.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", + "referenceNumber": 378, + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", + "referenceNumber": 379, + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "seeAlso": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Furuseth.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Furuseth.json", + "referenceNumber": 380, + "name": "Furuseth License", + "licenseId": "Furuseth", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type=heads#L39-51" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", + "referenceNumber": 381, + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AdaCore-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json", + "referenceNumber": 382, + "name": "AdaCore Doc License", + "licenseId": "AdaCore-doc", + "seeAlso": [ + "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", + "referenceNumber": 383, + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", + "referenceNumber": 384, + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP.json", + "referenceNumber": 385, + "name": "Sun PPP License", + "licenseId": "Sun-PPP", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/eap.c#L7-L16" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC.json", + "referenceNumber": 386, + "name": "Historical Permission Notice and Disclaimer - University of California variant", + "licenseId": "HPND-UC", + "seeAlso": [ + "https://core.tcl-lang.org/tk/file?name=compat/unistd.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", + "referenceNumber": 387, + "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", + "referenceNumber": 388, + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/pkgconf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pkgconf.json", + "referenceNumber": 389, + "name": "pkgconf License", + "licenseId": "pkgconf", + "seeAlso": [ + "https://github.com/pkgconf/pkgconf/blob/master/cli/main.c#L8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", + "referenceNumber": 390, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc.json", + "referenceNumber": 391, + "name": "Historical Permission Notice and Disclaimer - documentation variant", + "licenseId": "HPND-doc", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L185-197", + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L70-77" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libtiff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libtiff.json", + "referenceNumber": 392, + "name": "libtiff License", + "licenseId": "libtiff", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/libtiff" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", + "referenceNumber": 393, + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", + "referenceNumber": 394, + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MIT-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-0.json", + "referenceNumber": 395, + "name": "MIT No Attribution", + "licenseId": "MIT-0", + "seeAlso": [ + "https://github.com/aws/mit-0", + "https://romanrm.net/mit-zero", + "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", + "referenceNumber": 396, + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "seeAlso": [ + "https://sourceware.org/git/?p=bzip2.git;a=blob;f=LICENSE;hb=bzip2-1.0.6", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", + "https://sourceware.org/cgit/valgrind/tree/mpi/libmpiwrap.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DOC.json", + "referenceNumber": 397, + "name": "DOC License", + "licenseId": "DOC", + "seeAlso": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/threeparttable.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/threeparttable.json", + "referenceNumber": 398, + "name": "threeparttable License", + "licenseId": "threeparttable", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Threeparttable" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", + "referenceNumber": 399, + "name": "Lucida Bitmap Fonts License", + "licenseId": "Lucida-Bitmap-Fonts", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type=heads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libutil-David-Nugent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json", + "referenceNumber": 400, + "name": "libutil David Nugent License", + "licenseId": "libutil-David-Nugent", + "seeAlso": [ + "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", + "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", + "referenceNumber": 401, + "name": "BSD-Inferno-Nettverk", + "licenseId": "BSD-Inferno-Nettverk", + "seeAlso": [ + "https://www.inet.no/dante/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", + "referenceNumber": 402, + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "seeAlso": [ + "https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Protection.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", + "referenceNumber": 403, + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cube.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cube.json", + "referenceNumber": 404, + "name": "Cube License", + "licenseId": "Cube", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Cube" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", + "referenceNumber": 405, + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AAL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AAL.json", + "referenceNumber": 406, + "name": "Attribution Assurance License", + "licenseId": "AAL", + "seeAlso": [ + "https://opensource.org/licenses/attribution" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", + "referenceNumber": 407, + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", + "seeAlso": [ + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-acpica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-acpica.json", + "referenceNumber": 408, + "name": "BSD 3-Clause acpica variant", + "licenseId": "BSD-3-Clause-acpica", + "seeAlso": [ + "https://github.com/acpica/acpica/blob/master/source/common/acfileio.c#L119" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", + "referenceNumber": 409, + "name": "Brian Gladman 3-Clause License", + "licenseId": "Brian-Gladman-3-Clause", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json", + "referenceNumber": 410, + "name": "CMU Mach License", + "licenseId": "CMU-Mach", + "seeAlso": [ + "https://www.cs.cmu.edu/~410/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unlicense.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense.json", + "referenceNumber": 411, + "name": "The Unlicense", + "licenseId": "Unlicense", + "seeAlso": [ + "https://unlicense.org/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Newsletr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Newsletr.json", + "referenceNumber": 412, + "name": "Newsletr License", + "licenseId": "Newsletr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", + "referenceNumber": 413, + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "seeAlso": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0", + "https://doc.qt.io/archives/3.3/license.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Symlinks.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Symlinks.json", + "referenceNumber": 414, + "name": "Symlinks License", + "licenseId": "Symlinks", + "seeAlso": [ + "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", + "referenceNumber": 415, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-NC-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "referenceNumber": 416, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPEG-SSG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPEG-SSG.json", + "referenceNumber": 417, + "name": "MPEG Software Simulation", + "licenseId": "MPEG-SSG", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", + "referenceNumber": 418, + "name": "Netscape Public License v1.1", + "licenseId": "NPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.1/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", + "referenceNumber": 419, + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "seeAlso": [ + "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMPAS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMPAS.json", + "referenceNumber": 420, + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", + "referenceNumber": 421, + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", + "referenceNumber": 422, + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", + "referenceNumber": 423, + "name": "BSD Advertising Acknowledgement License", + "licenseId": "BSD-Advertising-Acknowledgement", + "seeAlso": [ + "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", + "referenceNumber": 424, + "name": "MIT License Modern Variant", + "licenseId": "MIT-Modern-Variant", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", + "https://ptolemy.berkeley.edu/copyright.htm", + "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SchemeReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", + "referenceNumber": 425, + "name": "Scheme Language Report License", + "licenseId": "SchemeReport", + "seeAlso": [ + + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", + "referenceNumber": 426, + "name": "Open LDAP Public License v2.2.1", + "licenseId": "OLDAP-2.2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-testregex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-testregex.json", + "referenceNumber": 427, + "name": "MIT testregex Variant", + "licenseId": "MIT-testregex", + "seeAlso": [ + "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Kevlin-Henney.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Kevlin-Henney.json", + "referenceNumber": 428, + "name": "Historical Permission Notice and Disclaimer - Kevlin Henney variant", + "licenseId": "HPND-Kevlin-Henney", + "seeAlso": [ + "https://github.com/mruby/mruby/blob/83d12f8d52522cdb7c8cc46fad34821359f453e6/mrbgems/mruby-dir/src/Win/dirent.c#L127-L140" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", + "referenceNumber": 429, + "name": "Creative Commons Attribution Non Commercial 3.0 Germany", + "licenseId": "CC-BY-NC-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", + "referenceNumber": 430, + "name": "LZMA SDK License (versions 9.11 to 9.20)", + "licenseId": "LZMA-SDK-9.11-to-9.20", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Display-PostScript.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Display-PostScript.json", + "referenceNumber": 431, + "name": "Adobe Display PostScript License", + "licenseId": "Adobe-Display-PostScript", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type=heads#L752" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/C-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", + "referenceNumber": 432, + "name": "Computational Use of Data Agreement v1.0", + "licenseId": "C-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", + "https://cdla.dev/computational-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/radvd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/radvd.json", + "referenceNumber": 433, + "name": "radvd License", + "licenseId": "radvd", + "seeAlso": [ + "https://github.com/radvd-project/radvd/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GL2PS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GL2PS.json", + "referenceNumber": 434, + "name": "GL2PS License", + "licenseId": "GL2PS", + "seeAlso": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", + "referenceNumber": 435, + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Baekmuk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", + "referenceNumber": 436, + "name": "Baekmuk License", + "licenseId": "Baekmuk", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd=Licensing/Baekmuk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/metamail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/metamail.json", + "referenceNumber": 437, + "name": "metamail License", + "licenseId": "metamail", + "seeAlso": [ + "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FTL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FTL.json", + "referenceNumber": 438, + "name": "Freetype Project License", + "licenseId": "FTL", + "seeAlso": [ + "http://freetype.fis.uniroma2.it/FTL.TXT", + "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", + "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Latex2e.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e.json", + "referenceNumber": 439, + "name": "Latex2e License", + "licenseId": "Latex2e", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mup.json", + "referenceNumber": 440, + "name": "Mup License", + "licenseId": "Mup", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Mup" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Gutmann.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Gutmann.json", + "referenceNumber": 441, + "name": "Gutmann License", + "licenseId": "Gutmann", + "seeAlso": [ + "https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", + "referenceNumber": 442, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/URT-RLE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/URT-RLE.json", + "referenceNumber": 443, + "name": "Utah Raster Toolkit Run Length Encoded License", + "licenseId": "URT-RLE", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SimPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", + "referenceNumber": 444, + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/SimPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", + "referenceNumber": 445, + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "seeAlso": [ + "https://cdla.io/sharing-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/python-ldap.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/python-ldap.json", + "referenceNumber": 446, + "name": "Python ldap License", + "licenseId": "python-ldap", + "seeAlso": [ + "https://github.com/python-ldap/python-ldap/blob/main/LICENCE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", + "referenceNumber": 447, + "name": "ASWF Digital Assets License 1.1", + "licenseId": "ASWF-Digital-Assets-1.1", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", + "referenceNumber": 448, + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", + "referenceNumber": 449, + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", + "seeAlso": [ + "http://www.netbsd.org/about/redistribution.html#default" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Clips.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Clips.json", + "referenceNumber": 450, + "name": "Clips License", + "licenseId": "Clips", + "seeAlso": [ + "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTYP0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTYP0.json", + "referenceNumber": 451, + "name": "TTYP0 License", + "licenseId": "TTYP0", + "seeAlso": [ + "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/W3C-20150513.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", + "referenceNumber": 452, + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "seeAlso": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", + "https://www.w3.org/copyright/software-license-2015/", + "https://www.w3.org/copyright/software-license-2023/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", + "referenceNumber": 453, + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFUL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFUL.json", + "referenceNumber": 454, + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", + "referenceNumber": 455, + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", + "referenceNumber": 456, + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-2-Clause.json", + "referenceNumber": 457, + "name": "Brian Gladman 2-Clause License", + "licenseId": "Brian-Gladman-2-Clause", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L140-L156", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", + "referenceNumber": 458, + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Wu.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json", + "referenceNumber": 459, + "name": "MIT Tom Wu Variant", + "licenseId": "MIT-Wu", + "seeAlso": [ + "https://github.com/chromium/octane/blob/master/crypto.js" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NTP-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP-0.json", + "referenceNumber": 460, + "name": "NTP No Attribution", + "licenseId": "NTP-0", + "seeAlso": [ + "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", + "referenceNumber": 461, + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UnixCrypt.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UnixCrypt.json", + "referenceNumber": 462, + "name": "UnixCrypt License", + "licenseId": "UnixCrypt", + "seeAlso": [ + "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", + "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", + "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ADSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ADSL.json", + "referenceNumber": 463, + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", + "referenceNumber": 464, + "name": "Open Government Licence - Canada", + "licenseId": "OGL-Canada-2.0", + "seeAlso": [ + "https://open.canada.ca/en/open-government-licence-canada" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xinetd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xinetd.json", + "referenceNumber": 465, + "name": "xinetd License", + "licenseId": "xinetd", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ErlPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", + "referenceNumber": 466, + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "seeAlso": [ + "http://www.erlang.org/EPLICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", + "referenceNumber": 467, + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", + "referenceNumber": 468, + "name": "Taiwan Open Government Data License, version 1.0", + "licenseId": "OGDL-Taiwan-1.0", + "seeAlso": [ + "https://data.gov.tw/license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/blessing.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/blessing.json", + "referenceNumber": 469, + "name": "SQLite Blessing", + "licenseId": "blessing", + "seeAlso": [ + "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9", + "https://sqlite.org/src/artifact/df5091916dbb40e6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/App-s2p.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/App-s2p.json", + "referenceNumber": 470, + "name": "App::s2p License", + "licenseId": "App-s2p", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/App-s2p" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", + "referenceNumber": 471, + "name": "Creative Commons Attribution Share Alike 2.1 Japan", + "licenseId": "CC-BY-SA-2.1-JP", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-86.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", + "referenceNumber": 472, + "name": "Spencer License 86", + "licenseId": "Spencer-86", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", + "referenceNumber": 473, + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MMIXware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MMIXware.json", + "referenceNumber": 474, + "name": "MMIXware License", + "licenseId": "MMIXware", + "seeAlso": [ + "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", + "referenceNumber": 475, + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", + "referenceNumber": 476, + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPLLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", + "referenceNumber": 477, + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "seeAlso": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ImageMagick.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", + "referenceNumber": 478, + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "seeAlso": [ + "http://www.imagemagick.org/script/license.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPOL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", + "referenceNumber": 479, + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "seeAlso": [ + "http://www.codeproject.com/info/cpol10.aspx" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/OPL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-UK-3.0.json", + "referenceNumber": 480, + "name": "United Kingdom Open Parliament Licence v3.0", + "licenseId": "OPL-UK-3.0", + "seeAlso": [ + "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zend-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", + "referenceNumber": 481, + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "seeAlso": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/mpich2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpich2.json", + "referenceNumber": 482, + "name": "mpich2 License", + "licenseId": "mpich2", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", + "referenceNumber": 483, + "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", + "licenseId": "NLOD-2.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", + "referenceNumber": 484, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DSDP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DSDP.json", + "referenceNumber": 485, + "name": "DSDP License", + "licenseId": "DSDP", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/DSDP" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", + "referenceNumber": 486, + "name": "Q Public License 1.0 - INRIA 2004 variant", + "licenseId": "QPL-1.0-INRIA-2004", + "seeAlso": [ + "https://github.com/maranget/hevea/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JasPer-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", + "referenceNumber": 487, + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "seeAlso": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ISC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC.json", + "referenceNumber": 488, + "name": "ISC License", + "licenseId": "ISC", + "seeAlso": [ + "https://www.isc.org/licenses/", + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", + "referenceNumber": 489, + "name": "Open Government Licence v1.0", + "licenseId": "OGL-UK-1.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", + "referenceNumber": 490, + "name": "Mulan Permissive Software License, Version 2", + "licenseId": "MulanPSL-2.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/YPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", + "referenceNumber": 491, + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/McPhee-slideshow.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/McPhee-slideshow.json", + "referenceNumber": 492, + "name": "McPhee Slideshow License", + "licenseId": "McPhee-slideshow", + "seeAlso": [ + "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", + "referenceNumber": 493, + "name": "Open Data Commons Public Domain Dedication & License 1.0", + "licenseId": "PDDL-1.0", + "seeAlso": [ + "http://opendatacommons.org/licenses/pddl/1.0/", + "https://opendatacommons.org/licenses/pddl/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bahyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bahyph.json", + "referenceNumber": 494, + "name": "Bahyph License", + "licenseId": "Bahyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", + "referenceNumber": 495, + "name": "GNU Free Documentation License v1.2 only - invariants", + "licenseId": "GFDL-1.2-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RSA-MD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", + "referenceNumber": 496, + "name": "RSA Message-Digest License", + "licenseId": "RSA-MD", + "seeAlso": [ + "http://www.faqs.org/rfcs/rfc1321.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", + "referenceNumber": 497, + "name": "GNU Free Documentation License v1.3 or later - invariants", + "licenseId": "GFDL-1.3-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-modify.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-modify.json", + "referenceNumber": 498, + "name": "HPND with US Government export control warning and modification rqmt", + "licenseId": "HPND-export-US-modify", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", + "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-PL.json", + "referenceNumber": 499, + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", + "referenceNumber": 500, + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "seeAlso": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", + "referenceNumber": 501, + "name": "Creative Commons Attribution 3.0 Netherlands", + "licenseId": "CC-BY-3.0-NL", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/nl/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SISSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", + "referenceNumber": 502, + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "seeAlso": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NetCDF.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NetCDF.json", + "referenceNumber": 503, + "name": "NetCDF license", + "licenseId": "NetCDF", + "seeAlso": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", + "referenceNumber": 504, + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "seeAlso": [ + "http://www.python.org/download/releases/1.6.1/download_win/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UMich-Merit.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UMich-Merit.json", + "referenceNumber": 505, + "name": "Michigan/Merit Networks License", + "licenseId": "UMich-Merit", + "seeAlso": [ + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L64" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", + "referenceNumber": 506, + "name": "SSH OpenSSH license", + "licenseId": "SSH-OpenSSH", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", + "referenceNumber": 507, + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "licenseId": "OFL-1.1-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/TPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json", + "referenceNumber": 508, + "name": "THOR Public License 1.0", + "licenseId": "TPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Jython.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", + "referenceNumber": 509, + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "seeAlso": [ + "http://www.jython.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/VSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", + "referenceNumber": 510, + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/VSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/UPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", + "referenceNumber": 511, + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UPL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Minpack.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Minpack.json", + "referenceNumber": 512, + "name": "Minpack License", + "licenseId": "Minpack", + "seeAlso": [ + "http://www.netlib.org/minpack/disclaimer", + "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ISC-Veillard.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC-Veillard.json", + "referenceNumber": 513, + "name": "ISC Veillard variant", + "licenseId": "ISC-Veillard", + "seeAlso": [ + "https://raw.githubusercontent.com/GNOME/libxml2/4c2e7c651f6c2f0d1a74f350cbda95f7df3e7017/hash.c", + "https://github.com/GNOME/libxml2/blob/master/dict.c", + "https://sourceforge.net/p/ctrio/git/ci/master/tree/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", + "referenceNumber": 514, + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "seeAlso": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/APL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", + "referenceNumber": 515, + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/APL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/magaz.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/magaz.json", + "referenceNumber": 516, + "name": "magaz License", + "licenseId": "magaz", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", + "referenceNumber": 517, + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "seeAlso": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SNIA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SNIA.json", + "referenceNumber": 518, + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json", + "referenceNumber": 519, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", + "referenceNumber": 520, + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/check-cvs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/check-cvs.json", + "referenceNumber": 521, + "name": "check-cvs License", + "licenseId": "check-cvs", + "seeAlso": [ + "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision=1.1.4.3&view=markup&pathrev=cvs1-11-23#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPD-document.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPD-document.json", + "referenceNumber": 522, + "name": "LPD Documentation License", + "licenseId": "LPD-document", + "seeAlso": [ + "https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md", + "https://www.ietf.org/rfc/rfc1952.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/softSurfer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/softSurfer.json", + "referenceNumber": 523, + "name": "softSurfer License", + "licenseId": "softSurfer", + "seeAlso": [ + "https://github.com/mm2/Little-CMS/blob/master/src/cmssm.c#L207", + "https://fedoraproject.org/wiki/Licensing/softSurfer" ], "isOsiApproved": false }, @@ -4216,7 +6579,7 @@ "reference": "https://spdx.org/licenses/GPL-2.0.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", - "referenceNumber": 335, + "referenceNumber": 524, "name": "GNU General Public License v2.0 only", "licenseId": "GPL-2.0", "seeAlso": [ @@ -4227,96 +6590,171 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", - "referenceNumber": 336, - "name": "BSD-Inferno-Nettverk", - "licenseId": "BSD-Inferno-Nettverk", + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", + "referenceNumber": 525, + "name": "Creative Commons Attribution No Derivatives 3.0 Germany", + "licenseId": "CC-BY-ND-3.0-DE", "seeAlso": [ - "https://www.inet.no/dante/LICENSE" + "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GFDL-1.1.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", - "referenceNumber": 337, - "name": "GNU Free Documentation License v1.1", - "licenseId": "GFDL-1.1", + "reference": "https://spdx.org/licenses/Abstyles.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Abstyles.json", + "referenceNumber": 526, + "name": "Abstyles License", + "licenseId": "Abstyles", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + "https://fedoraproject.org/wiki/Licensing/Abstyles" ], - "isOsiApproved": false, + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", + "referenceNumber": 527, + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-LPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", + "referenceNumber": 528, + "name": "Microsoft Limited Public License", + "licenseId": "MS-LPL", + "seeAlso": [ + "https://www.openhub.net/licenses/mslpl", + "https://github.com/gabegundy/atlserver/blob/master/License.txt", + "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/fwlw.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/fwlw.json", + "referenceNumber": 529, + "name": "fwlw License", + "licenseId": "fwlw", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xzoom.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xzoom.json", + "referenceNumber": 530, + "name": "xzoom License", + "licenseId": "xzoom", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/x/xzoom/xzoom_0.3-27_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", + "referenceNumber": 531, + "name": "Open Software License 2.0", + "licenseId": "OSL-2.0", + "seeAlso": [ + "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" + ], + "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", + "reference": "https://spdx.org/licenses/Adobe-Utopia.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", - "referenceNumber": 338, - "name": "TAPR Open Hardware License v1.0", - "licenseId": "TAPR-OHL-1.0", + "detailsUrl": "https://spdx.org/licenses/Adobe-Utopia.json", + "referenceNumber": 532, + "name": "Adobe Utopia Font License", + "licenseId": "Adobe-Utopia", "seeAlso": [ - "https://www.tapr.org/OHL" + "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type=heads" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", + "reference": "https://spdx.org/licenses/Watcom-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", - "referenceNumber": 339, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", - "licenseId": "CC-BY-NC-SA-3.0", + "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", + "referenceNumber": 533, + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + "https://opensource.org/licenses/Watcom-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Noweb.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Noweb.json", + "referenceNumber": 534, + "name": "Noweb License", + "licenseId": "Noweb", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Noweb" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", + "reference": "https://spdx.org/licenses/Martin-Birgmeier.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", - "referenceNumber": 340, - "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", - "licenseId": "CC-BY-NC-SA-1.0", + "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json", + "referenceNumber": 535, + "name": "Martin Birgmeier License", + "licenseId": "Martin-Birgmeier", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" + "https://github.com/Perl/perl5/blob/blead/util.c#L6136" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", + "reference": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", - "referenceNumber": 341, - "name": "BSD 3-Clause Open MPI variant", - "licenseId": "BSD-3-Clause-Open-MPI", + "detailsUrl": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.json", + "referenceNumber": 536, + "name": "FSF All Permissive License (without Warranty)", + "licenseId": "FSFAP-no-warranty-disclaimer", "seeAlso": [ - "https://www.open-mpi.org/community/license.php", - "http://www.netlib.org/lapack/LICENSE.txt" + "https://git.savannah.gnu.org/cgit/wget.git/tree/util/trunc.c?h=v1.21.3&id=40747a11e44ced5a8ac628a41f879ced3e2ebce9#n6" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-1.0.html", + "reference": "https://spdx.org/licenses/0BSD.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", - "referenceNumber": 342, - "name": "Creative Commons Attribution 1.0 Generic", - "licenseId": "CC-BY-1.0", + "detailsUrl": "https://spdx.org/licenses/0BSD.json", + "referenceNumber": 537, + "name": "BSD Zero Clause License", + "licenseId": "0BSD", "seeAlso": [ - "https://creativecommons.org/licenses/by/1.0/legalcode" + "http://landley.net/toybox/license.html", + "https://opensource.org/licenses/0BSD" ], - "isOsiApproved": false + "isOsiApproved": true }, { "reference": "https://spdx.org/licenses/PHP-3.01.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", - "referenceNumber": 343, + "referenceNumber": 538, "name": "PHP License v3.01", "licenseId": "PHP-3.01", "seeAlso": [ @@ -4326,36 +6764,459 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/PADL.html", + "reference": "https://spdx.org/licenses/TMate.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PADL.json", - "referenceNumber": 344, - "name": "PADL License", - "licenseId": "PADL", + "detailsUrl": "https://spdx.org/licenses/TMate.json", + "referenceNumber": 539, + "name": "TMate Open Source License", + "licenseId": "TMate", "seeAlso": [ - "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type=heads#L19-23" + "http://svnkit.com/license.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/AFL-1.1.html", + "reference": "https://spdx.org/licenses/HPND-merchantability-variant.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", - "referenceNumber": 345, - "name": "Academic Free License v1.1", - "licenseId": "AFL-1.1", + "detailsUrl": "https://spdx.org/licenses/HPND-merchantability-variant.json", + "referenceNumber": 540, + "name": "Historical Permission Notice and Disclaimer - merchantability variant", + "licenseId": "HPND-merchantability-variant", "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", - "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/misc/fini.c;hb=HEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mplus.json", + "referenceNumber": 541, + "name": "mplus Font License", + "licenseId": "mplus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Mplus?rd=Licensing/mplus" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", + "referenceNumber": 542, + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", + "referenceNumber": 543, + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "seeAlso": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XSkat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XSkat.json", + "referenceNumber": 544, + "name": "XSkat License", + "licenseId": "XSkat", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", + "referenceNumber": 545, + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Entessa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Entessa.json", + "referenceNumber": 546, + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "seeAlso": [ + "https://opensource.org/licenses/Entessa" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NTP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP.json", + "referenceNumber": 547, + "name": "NTP License", + "licenseId": "NTP", + "seeAlso": [ + "https://opensource.org/licenses/NTP" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Widget-Workshop.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Widget-Workshop.json", + "referenceNumber": 548, + "name": "Widget Workshop License", + "licenseId": "Widget-Workshop", + "seeAlso": [ + "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BUSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", + "referenceNumber": 549, + "name": "Business Source License 1.1", + "licenseId": "BUSL-1.1", + "seeAlso": [ + "https://mariadb.com/bsl11/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", + "referenceNumber": 550, + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "licenseId": "OFL-1.1-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", + "referenceNumber": 551, + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "seeAlso": [ + "https://cdla.io/permissive-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Borceux.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Borceux.json", + "referenceNumber": 552, + "name": "Borceux license", + "licenseId": "Borceux", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Borceux" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", + "referenceNumber": 553, + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CUA-OPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Sun.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Sun.json", + "referenceNumber": 554, + "name": "BSD 3-Clause Sun Microsystems", + "licenseId": "BSD-3-Clause-Sun", + "seeAlso": [ + "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psfrag.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psfrag.json", + "referenceNumber": 555, + "name": "psfrag License", + "licenseId": "psfrag", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psfrag" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libselinux-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", + "referenceNumber": 556, + "name": "libselinux public domain notice", + "licenseId": "libselinux-1.0", + "seeAlso": [ + "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCSA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCSA.json", + "referenceNumber": 557, + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "seeAlso": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA" ], "isOsiApproved": true, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/Adobe-2006.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", + "referenceNumber": 558, + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", + "referenceNumber": 559, + "name": "European Union Public License 1.2", + "licenseId": "EUPL-1.2", + "seeAlso": [ + "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", + "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", + "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863", + "https://opensource.org/licenses/EUPL-1.2" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Charter.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json", + "referenceNumber": 560, + "name": "Bitstream Charter Font License", + "licenseId": "Bitstream-Charter", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", + "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD-2.0.json", + "referenceNumber": 561, + "name": "Sax Public Domain Notice 2.0", + "licenseId": "SAX-PD-2.0", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XFree86-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", + "referenceNumber": 562, + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", + "seeAlso": [ + "http://www.xfree86.org/current/LICENSE4.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SSH-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-short.json", + "referenceNumber": 563, + "name": "SSH short notice", + "licenseId": "SSH-short", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", + "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", + "referenceNumber": 564, + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", + "seeAlso": [ + "https://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NLOD-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", + "referenceNumber": 565, + "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", + "licenseId": "NLOD-1.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ulem.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ulem.json", + "referenceNumber": 566, + "name": "ulem License", + "licenseId": "ulem", + "seeAlso": [ + "https://mirrors.ctan.org/macros/latex/contrib/ulem/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-1-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", + "referenceNumber": 567, + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "seeAlso": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", + "referenceNumber": 568, + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", + "referenceNumber": 569, + "name": "Creative Commons Attribution 3.0 United States", + "licenseId": "CC-BY-3.0-US", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/us/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Fair.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Fair.json", + "referenceNumber": 570, + "name": "Fair License", + "licenseId": "Fair", + "seeAlso": [ + "https://web.archive.org/web/20150926120323/http://fairlicense.org/", + "https://opensource.org/licenses/Fair" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Intel-ACPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", + "referenceNumber": 571, + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Inner-Net-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Inner-Net-2.0.json", + "referenceNumber": 572, + "name": "Inner Net License v2.0", + "licenseId": "Inner-Net-2.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", + "https://sourceware.org/git/?p=glibc.git;a=blob;f=LICENSES;h=530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb=HEAD#l207" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Multics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Multics.json", + "referenceNumber": 573, + "name": "Multics License", + "licenseId": "Multics", + "seeAlso": [ + "https://opensource.org/licenses/Multics" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Graphics-Gems.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json", + "referenceNumber": 574, + "name": "Graphics Gems License", + "licenseId": "Graphics-Gems", + "seeAlso": [ + "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/MIT-CMU.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", - "referenceNumber": 346, + "referenceNumber": 575, "name": "CMU License", "licenseId": "MIT-CMU", "seeAlso": [ @@ -4365,188 +7226,26 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-flex.html", + "reference": "https://spdx.org/licenses/ANTLR-PD.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-flex.json", - "referenceNumber": 347, - "name": "BSD 3-Clause Flex variant", - "licenseId": "BSD-3-Clause-flex", + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", + "referenceNumber": 576, + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", "seeAlso": [ - "https://github.com/westes/flex/blob/master/COPYING" + "http://www.antlr2.org/license.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/ODbL-1.0.html", + "reference": "https://spdx.org/licenses/HPND-DEC.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", - "referenceNumber": 348, - "name": "Open Data Commons Open Database License v1.0", - "licenseId": "ODbL-1.0", + "detailsUrl": "https://spdx.org/licenses/HPND-DEC.json", + "referenceNumber": 577, + "name": "Historical Permission Notice and Disclaimer - DEC variant", + "licenseId": "HPND-DEC", "seeAlso": [ - "http://www.opendatacommons.org/licenses/odbl/1.0/", - "https://opendatacommons.org/licenses/odbl/1-0/" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", - "referenceNumber": 349, - "name": "Creative Commons Attribution Non Commercial 4.0 International", - "licenseId": "CC-BY-NC-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Python-2.0.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", - "referenceNumber": 350, - "name": "Python License 2.0.1", - "licenseId": "Python-2.0.1", - "seeAlso": [ - "https://www.python.org/download/releases/2.0.1/license/", - "https://docs.python.org/3/license.html", - "https://github.com/python/cpython/blob/main/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IPA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IPA.json", - "referenceNumber": 351, - "name": "IPA Font License", - "licenseId": "IPA", - "seeAlso": [ - "https://opensource.org/licenses/IPA" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AML.json", - "referenceNumber": 352, - "name": "Apple MIT License", - "licenseId": "AML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libselinux-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", - "referenceNumber": 353, - "name": "libselinux public domain notice", - "licenseId": "libselinux-1.0", - "seeAlso": [ - "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", - "referenceNumber": 354, - "name": "Creative Commons Attribution 3.0 Austria", - "licenseId": "CC-BY-3.0-AT", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/at/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", - "referenceNumber": 355, - "name": "Q Public License 1.0 - INRIA 2004 variant", - "licenseId": "QPL-1.0-INRIA-2004", - "seeAlso": [ - "https://github.com/maranget/hevea/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", - "referenceNumber": 356, - "name": "GNU Free Documentation License v1.1 or later - invariants", - "licenseId": "GFDL-1.1-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Rdisc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Rdisc.json", - "referenceNumber": 357, - "name": "Rdisc License", - "licenseId": "Rdisc", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Rdisc_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", - "referenceNumber": 358, - "name": "BSD with Attribution and HPND disclaimer", - "licenseId": "BSD-Attribution-HPND-disclaimer", - "seeAlso": [ - "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xerox.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xerox.json", - "referenceNumber": 359, - "name": "Xerox License", - "licenseId": "Xerox", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Xerox" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", - "referenceNumber": 360, - "name": "LaTeX Project Public License v1.1", - "licenseId": "LPPL-1.1", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", - "referenceNumber": 361, - "name": "Open Government Licence v3.0", - "licenseId": "OGL-UK-3.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" + "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type=heads#L69" ], "isOsiApproved": false }, @@ -4554,7 +7253,7 @@ "reference": "https://spdx.org/licenses/LGPL-3.0.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", - "referenceNumber": 362, + "referenceNumber": 578, "name": "GNU Lesser General Public License v3.0 only", "licenseId": "LGPL-3.0", "seeAlso": [ @@ -4566,203 +7265,352 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/LGPL-2.1.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", - "referenceNumber": 363, - "name": "GNU Lesser General Public License v2.1 only", - "licenseId": "LGPL-2.1", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Minpack.html", + "reference": "https://spdx.org/licenses/NPOSL-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Minpack.json", - "referenceNumber": 364, - "name": "Minpack License", - "licenseId": "Minpack", + "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", + "referenceNumber": 579, + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", "seeAlso": [ - "http://www.netlib.org/minpack/disclaimer", - "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APSL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", - "referenceNumber": 365, - "name": "Apple Public Source License 1.2", - "licenseId": "APSL-1.2", - "seeAlso": [ - "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" + "https://opensource.org/licenses/NOSL3.0" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/Eurosym.html", + "reference": "https://spdx.org/licenses/PPL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Eurosym.json", - "referenceNumber": 366, - "name": "Eurosym License", - "licenseId": "Eurosym", + "detailsUrl": "https://spdx.org/licenses/PPL.json", + "referenceNumber": 580, + "name": "Peer Production License", + "licenseId": "PPL", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Eurosym" + "https://wiki.p2pfoundation.net/Peer_Production_License", + "http://www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Vera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", + "referenceNumber": 581, + "name": "Bitstream Vera Font License", + "licenseId": "Bitstream-Vera", + "seeAlso": [ + "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", + "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", + "reference": "https://spdx.org/licenses/APSL-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", - "referenceNumber": 367, - "name": "BSD Advertising Acknowledgement License", - "licenseId": "BSD-Advertising-Acknowledgement", + "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", + "referenceNumber": 582, + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", "seeAlso": [ - "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", - "referenceNumber": 368, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", - "licenseId": "CC-BY-NC-SA-2.0-UK", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", - "referenceNumber": 369, - "name": "X11 License Distribution Modification Variant", - "licenseId": "X11-distribute-modifications-variant", - "seeAlso": [ - "https://github.com/mirror/ncurses/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/w3m.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/w3m.json", - "referenceNumber": 370, - "name": "w3m License", - "licenseId": "w3m", - "seeAlso": [ - "https://github.com/tats/w3m/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", - "referenceNumber": 371, - "name": "bzip2 and libbzip2 License v1.0.5", - "licenseId": "bzip2-1.0.5", - "seeAlso": [ - "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", - "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/pnmstitch.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/pnmstitch.json", - "referenceNumber": 372, - "name": "pnmstitch License", - "licenseId": "pnmstitch", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CPAL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", - "referenceNumber": 373, - "name": "Common Public Attribution License 1.0", - "licenseId": "CPAL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CPAL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SISSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SISSL.json", - "referenceNumber": 374, - "name": "Sun Industry Standards Source License v1.1", - "licenseId": "SISSL", - "seeAlso": [ - "http://www.openoffice.org/licenses/sissl_license.html", - "https://opensource.org/licenses/SISSL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", - "referenceNumber": 375, - "name": "Licence Libre du Québec – Réciprocité version 1.1", - "licenseId": "LiLiQ-R-1.1", - "seeAlso": [ - "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", - "http://opensource.org/licenses/LiLiQ-R-1.1" + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", - "referenceNumber": 376, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", - "licenseId": "CC-BY-NC-SA-2.0", + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", + "referenceNumber": 583, + "name": "Creative Commons Attribution 2.5 Australia", + "licenseId": "CC-BY-2.5-AU", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + "https://creativecommons.org/licenses/by/2.5/au/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Unlicense.html", + "reference": "https://spdx.org/licenses/PHP-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unlicense.json", - "referenceNumber": 377, - "name": "The Unlicense", - "licenseId": "Unlicense", + "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", + "referenceNumber": 584, + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", "seeAlso": [ - "https://unlicense.org/" + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Caldera-no-preamble.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera-no-preamble.json", + "referenceNumber": 585, + "name": "Caldera License (without preamble)", + "licenseId": "Caldera-no-preamble", + "seeAlso": [ + "https://github.com/apache/apr/blob/trunk/LICENSE#L298C6-L298C29" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", + "referenceNumber": 586, + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", + "referenceNumber": 587, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", + "licenseId": "CC-BY-NC-ND-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenVision.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenVision.json", + "referenceNumber": 588, + "name": "OpenVision License", + "licenseId": "OpenVision", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L66-L98", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html", + "https://fedoraproject.org/wiki/Licensing:MIT#OpenVision_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", + "referenceNumber": 589, + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", + "referenceNumber": 590, + "name": "Linux man-pages Copyleft", + "licenseId": "Linux-man-pages-copyleft", + "seeAlso": [ + "https://www.kernel.org/doc/man-pages/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSLeay-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSLeay-standalone.json", + "referenceNumber": 591, + "name": "SSLeay License - standalone", + "licenseId": "SSLeay-standalone", + "seeAlso": [ + "https://www.tq-group.com/filedownloads/files/software-license-conditions/OriginalSSLeay/OriginalSSLeay.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", + "referenceNumber": 592, + "name": "Common Documentation License 1.0", + "licenseId": "CDL-1.0", + "seeAlso": [ + "http://www.opensource.apple.com/cdl/", + "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", + "https://www.gnu.org/licenses/license-list.html#ACDL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CrystalStacker.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", + "referenceNumber": 593, + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", + "referenceNumber": 594, + "name": "PolyForm Small Business License 1.0.0", + "licenseId": "PolyForm-Small-Business-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/small-business/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xerox.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xerox.json", + "referenceNumber": 595, + "name": "Xerox License", + "licenseId": "Xerox", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xerox" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCCT-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", + "referenceNumber": 596, + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "seeAlso": [ + "http://www.opencascade.com/content/occt-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", + "referenceNumber": 597, + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.json", + "referenceNumber": 598, + "name": "Mackerras 3-Clause - acknowledgment variant", + "licenseId": "Mackerras-3-Clause-acknowledgment", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/auth.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zed.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zed.json", + "referenceNumber": 599, + "name": "Zed License", + "licenseId": "Zed", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Zed" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", + "referenceNumber": 600, + "name": "Licence Art Libre 1.3", + "licenseId": "LAL-1.3", + "seeAlso": [ + "https://artlibre.org/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", + "referenceNumber": 601, + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Linux-OpenIB.html", + "reference": "https://spdx.org/licenses/OpenSSL-standalone.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", - "referenceNumber": 378, - "name": "Linux Kernel Variant of OpenIB.org license", - "licenseId": "Linux-OpenIB", + "detailsUrl": "https://spdx.org/licenses/OpenSSL-standalone.json", + "referenceNumber": 602, + "name": "OpenSSL License - standalone", + "licenseId": "OpenSSL-standalone", "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" + "https://library.netapp.com/ecm/ecm_download_file/ECMP1196395", + "https://hstechdocs.helpsystems.com/manuals/globalscape/archive/cuteftp6/open_ssl_license_agreement.htm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Pbmplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Pbmplus.json", + "referenceNumber": 603, + "name": "Historical Permission Notice and Disclaimer - Pbmplus variant", + "licenseId": "HPND-Pbmplus", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/curl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/curl.json", + "referenceNumber": 604, + "name": "curl License", + "licenseId": "curl", + "seeAlso": [ + "https://github.com/bagder/curl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/lsof.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/lsof.json", + "referenceNumber": 605, + "name": "lsof License", + "licenseId": "lsof", + "seeAlso": [ + "https://github.com/lsof-org/lsof/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-TOU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", + "referenceNumber": 606, + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "seeAlso": [ + "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", + "http://www.unicode.org/copyright.html" ], "isOsiApproved": false }, @@ -4770,7 +7618,7 @@ "reference": "https://spdx.org/licenses/LOOP.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/LOOP.json", - "referenceNumber": 379, + "referenceNumber": 607, "name": "Common Lisp LOOP License", "licenseId": "LOOP", "seeAlso": [ @@ -4784,107 +7632,48 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "reference": "https://spdx.org/licenses/MIT.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", - "referenceNumber": 380, - "name": "Community Data License Agreement Sharing 1.0", - "licenseId": "CDLA-Sharing-1.0", + "detailsUrl": "https://spdx.org/licenses/MIT.json", + "referenceNumber": 608, + "name": "MIT License", + "licenseId": "MIT", "seeAlso": [ - "https://cdla.io/sharing-1-0" + "https://opensource.org/license/mit/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.json", + "referenceNumber": 609, + "name": "HPND sell variant with MIT disclaimer - reverse", + "licenseId": "HPND-sell-variant-MIT-disclaimer-rev", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/dynlist.c" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-3.0.html", + "reference": "https://spdx.org/licenses/HPND-export-US-acknowledgement.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", - "referenceNumber": 381, - "name": "Creative Commons Attribution 3.0 Unported", - "licenseId": "CC-BY-3.0", + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-acknowledgement.json", + "referenceNumber": 610, + "name": "HPND with US Government export control warning and acknowledgment", + "licenseId": "HPND-export-US-acknowledgement", "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/legalcode" + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L831-L852", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", - "referenceNumber": 382, - "name": "Open LDAP Public License v2.4", - "licenseId": "OLDAP-2.4", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CMU-Mach.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json", - "referenceNumber": 383, - "name": "CMU Mach License", - "licenseId": "CMU-Mach", - "seeAlso": [ - "https://www.cs.cmu.edu/~410/licenses.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", - "referenceNumber": 384, - "name": "Licence Libre du Québec – Permissive version 1.1", - "licenseId": "LiLiQ-P-1.1", - "seeAlso": [ - "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", - "http://opensource.org/licenses/LiLiQ-P-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json", - "referenceNumber": 385, - "name": "GNU Library General Public License v2 only", - "licenseId": "LGPL-2.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/APAFML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APAFML.json", - "referenceNumber": 386, - "name": "Adobe Postscript AFM License", - "licenseId": "APAFML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Entessa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Entessa.json", - "referenceNumber": 387, - "name": "Entessa Public License v1.0", - "licenseId": "Entessa", - "seeAlso": [ - "https://opensource.org/licenses/Entessa" - ], - "isOsiApproved": true - }, { "reference": "https://spdx.org/licenses/CNRI-Python.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", - "referenceNumber": 388, + "referenceNumber": 611, "name": "CNRI Python License", "licenseId": "CNRI-Python", "seeAlso": [ @@ -4893,545 +7682,148 @@ "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/OGC-1.0.html", + "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", - "referenceNumber": 389, - "name": "OGC Software License, Version 1.0", - "licenseId": "OGC-1.0", + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", + "referenceNumber": 612, + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", "seeAlso": [ - "https://www.ogc.org/ogc/software/1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-UC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-UC.json", - "referenceNumber": 390, - "name": "Historical Permission Notice and Disclaimer - University of California variant", - "licenseId": "HPND-UC", - "seeAlso": [ - "https://core.tcl-lang.org/tk/file?name=compat/unistd.h" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", - "referenceNumber": 391, - "name": "Creative Commons Attribution 3.0 IGO", - "licenseId": "CC-BY-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MTLL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MTLL.json", - "referenceNumber": 392, - "name": "Matrix Template Library License", - "licenseId": "MTLL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json", - "referenceNumber": 393, - "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant", - "licenseId": "HPND-Markus-Kuhn", - "seeAlso": [ - "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", - "https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=readline/readline/support/wcwidth.c;h=0f5ec995796f4813abbcf4972aec0378ab74722a;hb=HEAD#l55" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", - "referenceNumber": 394, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", - "licenseId": "CC-BY-NC-ND-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MS-RL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-RL.json", - "referenceNumber": 395, - "name": "Microsoft Reciprocal License", - "licenseId": "MS-RL", - "seeAlso": [ - "http://www.microsoft.com/opensource/licenses.mspx", - "https://opensource.org/licenses/MS-RL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AMDPLPA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", - "referenceNumber": 396, - "name": "AMD's plpa_map.c License", - "licenseId": "AMDPLPA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LAL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", - "referenceNumber": 397, - "name": "Licence Art Libre 1.2", - "licenseId": "LAL-1.2", - "seeAlso": [ - "http://artlibre.org/licence/lal/licence-art-libre-12/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", - "referenceNumber": 398, - "name": "Open LDAP Public License v2.2.1", - "licenseId": "OLDAP-2.2.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/curl.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/curl.json", - "referenceNumber": 399, - "name": "curl License", - "licenseId": "curl", - "seeAlso": [ - "https://github.com/bagder/curl/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", - "referenceNumber": 400, - "name": "Open LDAP Public License v1.2", - "licenseId": "OLDAP-1.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Inner-Net-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Inner-Net-2.0.json", - "referenceNumber": 401, - "name": "Inner Net License v2.0", - "licenseId": "Inner-Net-2.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", - "https://sourceware.org/git/?p=glibc.git;a=blob;f=LICENSES;h=530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb=HEAD#l207" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TermReadKey.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TermReadKey.json", - "referenceNumber": 402, - "name": "TermReadKey License", - "licenseId": "TermReadKey", - "seeAlso": [ - "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", - "referenceNumber": 403, - "name": "Affero General Public License v1.0", - "licenseId": "AGPL-1.0", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", - "referenceNumber": 404, - "name": "Artistic License 1.0", - "licenseId": "Artistic-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Artistic-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", - "referenceNumber": 405, - "name": "CeCILL Free Software License Agreement v1.1", - "licenseId": "CECILL-1.1", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", - "referenceNumber": 406, - "name": "IBM Public License v1.0", - "licenseId": "IPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/IPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPL-1.02.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", - "referenceNumber": 407, - "name": "Lucent Public License v1.02", - "licenseId": "LPL-1.02", - "seeAlso": [ - "http://plan9.bell-labs.com/plan9/license.html", - "https://opensource.org/licenses/LPL-1.02" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Baekmuk.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", - "referenceNumber": 408, - "name": "Baekmuk License", - "licenseId": "Baekmuk", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd=Licensing/Baekmuk" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NLOD-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", - "referenceNumber": 409, - "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", - "licenseId": "NLOD-1.0", - "seeAlso": [ - "http://data.norge.no/nlod/en/1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail-8.23.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", - "referenceNumber": 410, - "name": "Sendmail License 8.23", - "licenseId": "Sendmail-8.23", - "seeAlso": [ - "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", - "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NGPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NGPL.json", - "referenceNumber": 411, - "name": "Nethack General Public License", - "licenseId": "NGPL", - "seeAlso": [ - "https://opensource.org/licenses/NGPL" + "https://opensource.org/licenses/BSDplusPatent" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/SSPL-1.0.html", + "reference": "https://spdx.org/licenses/Linux-OpenIB.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", - "referenceNumber": 412, - "name": "Server Side Public License, v 1", - "licenseId": "SSPL-1.0", + "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", + "referenceNumber": 613, + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", "seeAlso": [ - "https://www.mongodb.com/licensing/server-side-public-license" + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NCSA.html", + "reference": "https://spdx.org/licenses/HPND-INRIA-IMAG.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCSA.json", - "referenceNumber": 413, - "name": "University of Illinois/NCSA Open Source License", - "licenseId": "NCSA", + "detailsUrl": "https://spdx.org/licenses/HPND-INRIA-IMAG.json", + "referenceNumber": 614, + "name": "Historical Permission Notice and Disclaimer - INRIA-IMAG variant", + "licenseId": "HPND-INRIA-IMAG", "seeAlso": [ - "http://otm.illinois.edu/uiuc_openSource", - "https://opensource.org/licenses/NCSA" + "https://github.com/ppp-project/ppp/blob/master/pppd/ipv6cp.c#L75-L83" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IJG-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG-short.json", + "referenceNumber": 615, + "name": "Independent JPEG Group License - short", + "licenseId": "IJG-short", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", + "referenceNumber": 616, + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-1.0" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Ferguson-Twofish.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ferguson-Twofish.json", + "referenceNumber": 617, + "name": "Ferguson Twofish License", + "licenseId": "Ferguson-Twofish", + "seeAlso": [ + "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", + "referenceNumber": 618, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt", + "https://opensource.org/licenses/GPL-2.0" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CC0-1.0.html", + "reference": "https://spdx.org/licenses/MPL-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", - "referenceNumber": 414, - "name": "Creative Commons Zero v1.0 Universal", - "licenseId": "CC0-1.0", + "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", + "referenceNumber": 619, + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", "seeAlso": [ - "https://creativecommons.org/publicdomain/zero/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-C.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", - "referenceNumber": 415, - "name": "CeCILL-C Free Software License Agreement", - "licenseId": "CECILL-C", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Furuseth.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Furuseth.json", - "referenceNumber": 416, - "name": "Furuseth License", - "licenseId": "Furuseth", - "seeAlso": [ - "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type=heads#L39-51" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JasPer-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", - "referenceNumber": 417, - "name": "JasPer License", - "licenseId": "JasPer-2.0", - "seeAlso": [ - "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", - "referenceNumber": 418, - "name": "GNU Lesser General Public License v3.0 or later", - "licenseId": "LGPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Libpng.html", + "reference": "https://spdx.org/licenses/Latex2e-translated-notice.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Libpng.json", - "referenceNumber": 419, - "name": "libpng License", - "licenseId": "Libpng", + "detailsUrl": "https://spdx.org/licenses/Latex2e-translated-notice.json", + "referenceNumber": 620, + "name": "Latex2e with translated notice permission", + "licenseId": "Latex2e-translated-notice", "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n74" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", - "referenceNumber": 420, - "name": "Linux man-pages Copyleft Variant", - "licenseId": "Linux-man-pages-copyleft-var", + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", + "referenceNumber": 621, + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", "seeAlso": [ - "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5" + "https://creativecommons.org/licenses/by-sa/3.0/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", + "reference": "https://spdx.org/licenses/Caldera.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", - "referenceNumber": 421, - "name": "Open LDAP Public License 2.2.2", - "licenseId": "OLDAP-2.2.2", + "detailsUrl": "https://spdx.org/licenses/Caldera.json", + "referenceNumber": 622, + "name": "Caldera License", + "licenseId": "Caldera", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188" + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", - "referenceNumber": 422, - "name": "FreeBSD Documentation License", - "licenseId": "FreeBSD-DOC", - "seeAlso": [ - "https://www.freebsd.org/copyright/freebsd-doc-license/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", - "referenceNumber": 423, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", - "licenseId": "CC-BY-NC-ND-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", - "referenceNumber": 424, - "name": "NIST Public Domain Notice with license fallback", - "licenseId": "NIST-PD-fallback", - "seeAlso": [ - "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", - "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Widget-Workshop.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Widget-Workshop.json", - "referenceNumber": 425, - "name": "Widget Workshop License", - "licenseId": "Widget-Workshop", - "seeAlso": [ - "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", - "referenceNumber": 426, - "name": "Reciprocal Public License 1.1", - "licenseId": "RPL-1.1", - "seeAlso": [ - "https://opensource.org/licenses/RPL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", - "referenceNumber": 427, - "name": "ASWF Digital Assets License 1.1", - "licenseId": "ASWF-Digital-Assets-1.1", - "seeAlso": [ - "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Net-SNMP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", - "referenceNumber": 428, - "name": "Net-SNMP License", - "licenseId": "Net-SNMP", - "seeAlso": [ - "http://net-snmp.sourceforge.net/about/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", - "referenceNumber": 429, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", - "licenseId": "CC-BY-NC-SA-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", - "referenceNumber": 430, - "name": "Unicode License Agreement - Data Files and Software (2015)", - "licenseId": "Unicode-DFS-2015", - "seeAlso": [ - "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", - "referenceNumber": 431, - "name": "GNU Free Documentation License v1.2", - "licenseId": "GFDL-1.2", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, { "reference": "https://spdx.org/licenses/Intel.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Intel.json", - "referenceNumber": 432, + "referenceNumber": 623, "name": "Intel Open Source License", "licenseId": "Intel", "seeAlso": [ @@ -5441,87 +7833,146 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/SGP4.html", + "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGP4.json", - "referenceNumber": 433, - "name": "SGP4 Permission Notice", - "licenseId": "SGP4", + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", + "referenceNumber": 624, + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", "seeAlso": [ - "https://celestrak.org/publications/AIAA/2006-6753/faq.php" + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "reference": "https://spdx.org/licenses/HaskellReport.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", - "referenceNumber": 434, - "name": "Zimbra Public License v1.3", - "licenseId": "Zimbra-1.3", + "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", + "referenceNumber": 625, + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", "seeAlso": [ - "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", + "referenceNumber": 626, + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OGTSL.html", + "reference": "https://spdx.org/licenses/Motosoto.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGTSL.json", - "referenceNumber": 435, - "name": "Open Group Test Suite License", - "licenseId": "OGTSL", + "detailsUrl": "https://spdx.org/licenses/Motosoto.json", + "referenceNumber": 627, + "name": "Motosoto License", + "licenseId": "Motosoto", "seeAlso": [ - "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", - "https://opensource.org/licenses/OGTSL" + "https://opensource.org/licenses/Motosoto" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "reference": "https://spdx.org/licenses/APSL-1.2.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", - "referenceNumber": 436, - "name": "Open Data Commons Public Domain Dedication & License 1.0", - "licenseId": "PDDL-1.0", + "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", + "referenceNumber": 628, + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", "seeAlso": [ - "http://opendatacommons.org/licenses/pddl/1.0/", - "https://opendatacommons.org/licenses/pddl/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UnixCrypt.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UnixCrypt.json", - "referenceNumber": 437, - "name": "UnixCrypt License", - "licenseId": "UnixCrypt", - "seeAlso": [ - "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", - "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", - "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", - "referenceNumber": 438, - "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", - "licenseId": "CERN-OHL-W-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" ], "isOsiApproved": true }, + { + "reference": "https://spdx.org/licenses/SGI-OpenGL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-OpenGL.json", + "referenceNumber": 629, + "name": "SGI OpenGL License", + "licenseId": "SGI-OpenGL", + "seeAlso": [ + "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type=heads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", + "referenceNumber": 630, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", + "referenceNumber": 631, + "name": "Community Specification License 1.0", + "licenseId": "Community-Spec-1.0", + "seeAlso": [ + "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", + "referenceNumber": 632, + "name": "Cornell Lossless JPEG License", + "licenseId": "Cornell-Lossless-JPEG", + "seeAlso": [ + "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", + "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", + "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-regexpr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-regexpr.json", + "referenceNumber": 633, + "name": "Historical Permission Notice and Disclaimer - sell regexpr variant", + "licenseId": "HPND-sell-regexpr", + "seeAlso": [ + "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type=heads#L245" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nunit.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Nunit.json", + "referenceNumber": 634, + "name": "Nunit License", + "licenseId": "Nunit", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Nunit" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, { "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", - "referenceNumber": 439, + "referenceNumber": 635, "name": "GNU Free Documentation License v1.3 only", "licenseId": "GFDL-1.3-only", "seeAlso": [ @@ -5531,199 +7982,15 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", + "reference": "https://spdx.org/licenses/etalab-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", - "referenceNumber": 440, - "name": "Creative Commons Attribution Non Commercial 2.5 Generic", - "licenseId": "CC-BY-NC-2.5", + "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", + "referenceNumber": 636, + "name": "Etalab Open License 2.0", + "licenseId": "etalab-2.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/2.5/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/ErlPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", - "referenceNumber": 441, - "name": "Erlang Public License v1.1", - "licenseId": "ErlPL-1.1", - "seeAlso": [ - "http://www.erlang.org/EPLICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/magaz.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/magaz.json", - "referenceNumber": 442, - "name": "magaz License", - "licenseId": "magaz", - "seeAlso": [ - "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Borceux.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Borceux.json", - "referenceNumber": 443, - "name": "Borceux license", - "licenseId": "Borceux", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Borceux" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/App-s2p.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/App-s2p.json", - "referenceNumber": 444, - "name": "App::s2p License", - "licenseId": "App-s2p", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/App-s2p" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", - "referenceNumber": 445, - "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", - "licenseId": "CC-BY-NC-ND-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", - "referenceNumber": 446, - "name": "GNU Affero General Public License v3.0", - "licenseId": "AGPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", - "referenceNumber": 447, - "name": "CeCILL Free Software License Agreement v2.1", - "licenseId": "CECILL-2.1", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", - "referenceNumber": 448, - "name": "Open Government Licence v2.0", - "licenseId": "OGL-UK-2.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-Protection.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", - "referenceNumber": 449, - "name": "BSD Protection License", - "licenseId": "BSD-Protection", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-B.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", - "referenceNumber": 450, - "name": "CeCILL-B Free Software License Agreement", - "licenseId": "CECILL-B", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-Systemics.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Systemics.json", - "referenceNumber": 451, - "name": "Systemics BSD variant license", - "licenseId": "BSD-Systemics", - "seeAlso": [ - "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", - "referenceNumber": 452, - "name": "GNU General Public License v2.0 w/Classpath exception", - "licenseId": "GPL-2.0-with-classpath-exception", - "seeAlso": [ - "https://www.gnu.org/software/classpath/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", - "referenceNumber": 453, - "name": "Open Software License 1.0", - "licenseId": "OSL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/OSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/EPICS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPICS.json", - "referenceNumber": 454, - "name": "EPICS Open License", - "licenseId": "EPICS", - "seeAlso": [ - "https://epics.anl.gov/license/open.php" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", - "referenceNumber": 455, - "name": "GNU Free Documentation License v1.3 only - no invariants", - "licenseId": "GFDL-1.3-no-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" + "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" ], "isOsiApproved": false }, @@ -5731,7 +7998,7 @@ "reference": "https://spdx.org/licenses/RPSL-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json", - "referenceNumber": 456, + "referenceNumber": 637, "name": "RealNetworks Public Source License v1.0", "licenseId": "RPSL-1.0", "seeAlso": [ @@ -5742,123 +8009,147 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CPL-1.0.html", + "reference": "https://spdx.org/licenses/MIT-enna.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", - "referenceNumber": 457, - "name": "Common Public License 1.0", - "licenseId": "CPL-1.0", + "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", + "referenceNumber": 638, + "name": "enna License", + "licenseId": "MIT-enna", "seeAlso": [ - "https://opensource.org/licenses/CPL-1.0" + "https://fedoraproject.org/wiki/Licensing/MIT#enna" ], - "isOsiApproved": true, - "isFsfLibre": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/EFL-2.0.html", + "reference": "https://spdx.org/licenses/HP-1989.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", - "referenceNumber": 458, - "name": "Eiffel Forum License v2.0", - "licenseId": "EFL-2.0", + "detailsUrl": "https://spdx.org/licenses/HP-1989.json", + "referenceNumber": 639, + "name": "Hewlett-Packard 1989 License", + "licenseId": "HP-1989", "seeAlso": [ - "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", - "https://opensource.org/licenses/EFL-2.0" + "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE" ], - "isOsiApproved": true, - "isFsfLibre": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NPL-1.1.html", + "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", - "referenceNumber": 459, - "name": "Netscape Public License v1.1", - "licenseId": "NPL-1.1", + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", + "referenceNumber": 640, + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", "seeAlso": [ - "http://www.mozilla.org/MPL/NPL/1.1/" + "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/IJG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG.json", + "referenceNumber": 641, + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "seeAlso": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Cube.html", + "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cube.json", - "referenceNumber": 460, - "name": "Cube License", - "licenseId": "Cube", + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", + "referenceNumber": 642, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Cube" + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/HPND-sell-regexpr.html", + "reference": "https://spdx.org/licenses/PostgreSQL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-regexpr.json", - "referenceNumber": 461, - "name": "Historical Permission Notice and Disclaimer - sell regexpr variant", - "licenseId": "HPND-sell-regexpr", + "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", + "referenceNumber": 643, + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", "seeAlso": [ - "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type=heads#L245" + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", + "referenceNumber": 644, + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SL.json", + "referenceNumber": 645, + "name": "SL License", + "licenseId": "SL", + "seeAlso": [ + "https://github.com/mtoyoda/sl/blob/master/LICENSE" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", + "reference": "https://spdx.org/licenses/UCL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", - "referenceNumber": 462, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", - "licenseId": "CC-BY-NC-SA-3.0-DE", + "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", + "referenceNumber": 646, + "name": "Upstream Compatibility License v1.0", + "licenseId": "UCL-1.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" + "https://opensource.org/licenses/UCL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", + "referenceNumber": 647, + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "seeAlso": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/AMPAS.html", + "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMPAS.json", - "referenceNumber": 463, - "name": "Academy of Motion Picture Arts and Sciences BSD", - "licenseId": "AMPAS", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", + "referenceNumber": 648, + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NLOD-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", - "referenceNumber": 464, - "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", - "licenseId": "NLOD-2.0", - "seeAlso": [ - "http://data.norge.no/nlod/en/2.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TTWL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TTWL.json", - "referenceNumber": 465, - "name": "Text-Tabs+Wrap License", - "licenseId": "TTWL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TTWL", - "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148" - ], - "isOsiApproved": false + "isOsiApproved": false, + "isFsfLibre": true }, { "reference": "https://spdx.org/licenses/SWL.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/SWL.json", - "referenceNumber": 466, + "referenceNumber": 649, "name": "Scheme Widget Library (SWL) Software License Agreement", "licenseId": "SWL", "seeAlso": [ @@ -5866,1369 +8157,11 @@ ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", - "referenceNumber": 467, - "name": "MIT License Modern Variant", - "licenseId": "MIT-Modern-Variant", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", - "https://ptolemy.berkeley.edu/copyright.htm", - "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/FSFULLRWD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json", - "referenceNumber": 468, - "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)", - "licenseId": "FSFULLRWD", - "seeAlso": [ - "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", - "referenceNumber": 469, - "name": "Non-Commercial Government Licence", - "licenseId": "NCGL-UK-2.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NTP-0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTP-0.json", - "referenceNumber": 470, - "name": "NTP No Attribution", - "licenseId": "NTP-0", - "seeAlso": [ - "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", - "referenceNumber": 471, - "name": "SGI Free Software License B v1.0", - "licenseId": "SGI-B-1.0", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-HP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-HP.json", - "referenceNumber": 472, - "name": "Hewlett-Packard BSD variant license", - "licenseId": "BSD-3-Clause-HP", - "seeAlso": [ - "https://github.com/zdohnal/hplip/blob/master/COPYING#L939" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", - "referenceNumber": 473, - "name": "CNRI Python Open Source GPL Compatible License Agreement", - "licenseId": "CNRI-Python-GPL-Compatible", - "seeAlso": [ - "http://www.python.org/download/releases/1.6.1/download_win/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", - "referenceNumber": 474, - "name": "Community Data License Agreement Permissive 1.0", - "licenseId": "CDLA-Permissive-1.0", - "seeAlso": [ - "https://cdla.io/permissive-1-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", - "referenceNumber": 475, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", - "licenseId": "CC-BY-NC-SA-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", - "referenceNumber": 476, - "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", - "licenseId": "GPL-2.0-with-GCC-exception", - "seeAlso": [ - "https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", - "referenceNumber": 477, - "name": "Open Public License v1.0", - "licenseId": "OPL-1.0", - "seeAlso": [ - "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", - "https://fedoraproject.org/wiki/Licensing/Open_Public_License" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Frameworx-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", - "referenceNumber": 478, - "name": "Frameworx Open License 1.0", - "licenseId": "Frameworx-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Frameworx-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Zed.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zed.json", - "referenceNumber": 479, - "name": "Zed License", - "licenseId": "Zed", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Zed" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RHeCos-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", - "referenceNumber": 480, - "name": "Red Hat eCos Public License v1.1", - "licenseId": "RHeCos-1.1", - "seeAlso": [ - "http://ecos.sourceware.org/old-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Boehm-GC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Boehm-GC.json", - "referenceNumber": 481, - "name": "Boehm-Demers-Weiser GC License", - "licenseId": "Boehm-GC", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", - "https://github.com/uim/libgcroots/blob/master/COPYING", - "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Martin-Birgmeier.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json", - "referenceNumber": 482, - "name": "Martin Birgmeier License", - "licenseId": "Martin-Birgmeier", - "seeAlso": [ - "https://github.com/Perl/perl5/blob/blead/util.c#L6136" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", - "referenceNumber": 483, - "name": "Creative Commons Attribution Share Alike 3.0 Austria", - "licenseId": "CC-BY-SA-3.0-AT", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", - "referenceNumber": 484, - "name": "GNU Lesser General Public License v2.1 or later", - "licenseId": "LGPL-2.1-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/W3C-20150513.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", - "referenceNumber": 485, - "name": "W3C Software Notice and Document License (2015-05-13)", - "licenseId": "W3C-20150513", - "seeAlso": [ - "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Kastrup.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Kastrup.json", - "referenceNumber": 486, - "name": "Kastrup License", - "licenseId": "Kastrup", - "seeAlso": [ - "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", - "referenceNumber": 487, - "name": "Mozilla Public License 2.0", - "licenseId": "MPL-2.0", - "seeAlso": [ - "https://www.mozilla.org/MPL/2.0/", - "https://opensource.org/licenses/MPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CPOL-1.02.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", - "referenceNumber": 488, - "name": "Code Project Open License 1.02", - "licenseId": "CPOL-1.02", - "seeAlso": [ - "http://www.codeproject.com/info/cpol10.aspx" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Vim.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Vim.json", - "referenceNumber": 489, - "name": "Vim License", - "licenseId": "Vim", - "seeAlso": [ - "http://vimdoc.sourceforge.net/htmldoc/uganda.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", - "referenceNumber": 490, - "name": "zlib/libpng License with Acknowledgement", - "licenseId": "zlib-acknowledgement", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", - "referenceNumber": 491, - "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", - "licenseId": "GPL-3.0-with-GCC-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/gcc-exception-3.1.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MIT-open-group.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", - "referenceNumber": 492, - "name": "MIT Open Group variant", - "licenseId": "MIT-open-group", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/iMatix.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/iMatix.json", - "referenceNumber": 493, - "name": "iMatix Standard Function Library Agreement", - "licenseId": "iMatix", - "seeAlso": [ - "http://legacy.imatix.com/html/sfl/sfl4.htm#license" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MIT-Festival.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Festival.json", - "referenceNumber": 494, - "name": "MIT Festival Variant", - "licenseId": "MIT-Festival", - "seeAlso": [ - "https://github.com/festvox/flite/blob/master/COPYING", - "https://github.com/festvox/speech_tools/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/URT-RLE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/URT-RLE.json", - "referenceNumber": 495, - "name": "Utah Raster Toolkit Run Length Encoded License", - "licenseId": "URT-RLE", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/C-UDA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", - "referenceNumber": 496, - "name": "Computational Use of Data Agreement v1.0", - "licenseId": "C-UDA-1.0", - "seeAlso": [ - "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", - "https://cdla.dev/computational-use-of-data-agreement-v1-0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ZPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", - "referenceNumber": 497, - "name": "Zope Public License 1.1", - "licenseId": "ZPL-1.1", - "seeAlso": [ - "http://old.zope.org/Resources/License/ZPL-1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CrystalStacker.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", - "referenceNumber": 498, - "name": "CrystalStacker License", - "licenseId": "CrystalStacker", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", - "referenceNumber": 499, - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", - "licenseId": "CC-BY-NC-ND-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", - "referenceNumber": 500, - "name": "Creative Commons Attribution Non Commercial 1.0 Generic", - "licenseId": "CC-BY-NC-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", - "referenceNumber": 501, - "name": "GNU Free Documentation License v1.2 only - invariants", - "licenseId": "GFDL-1.2-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", - "referenceNumber": 502, - "name": "HPND sell variant with MIT disclaimer", - "licenseId": "HPND-sell-variant-MIT-disclaimer", - "seeAlso": [ - "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MS-PL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-PL.json", - "referenceNumber": 503, - "name": "Microsoft Public License", - "licenseId": "MS-PL", - "seeAlso": [ - "http://www.microsoft.com/opensource/licenses.mspx", - "https://opensource.org/licenses/MS-PL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/HPND-Pbmplus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-Pbmplus.json", - "referenceNumber": 504, - "name": "Historical Permission Notice and Disclaimer - Pbmplus variant", - "licenseId": "HPND-Pbmplus", - "seeAlso": [ - "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", - "referenceNumber": 505, - "name": "SIL Open Font License 1.1", - "licenseId": "OFL-1.1", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Leptonica.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Leptonica.json", - "referenceNumber": 506, - "name": "Leptonica License", - "licenseId": "Leptonica", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Leptonica" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SunPro.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SunPro.json", - "referenceNumber": 507, - "name": "SunPro License", - "licenseId": "SunPro", - "seeAlso": [ - "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", - "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/WTFPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/WTFPL.json", - "referenceNumber": 508, - "name": "Do What The F*ck You Want To Public License", - "licenseId": "WTFPL", - "seeAlso": [ - "http://www.wtfpl.net/about/", - "http://sam.zoy.org/wtfpl/COPYING" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CDDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", - "referenceNumber": 509, - "name": "Common Development and Distribution License 1.0", - "licenseId": "CDDL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/cddl1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OFFIS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFFIS.json", - "referenceNumber": 510, - "name": "OFFIS License", - "licenseId": "OFFIS", - "seeAlso": [ - "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Latex2e.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Latex2e.json", - "referenceNumber": 511, - "name": "Latex2e License", - "licenseId": "Latex2e", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Latex2e" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", - "referenceNumber": 512, - "name": "GNU Free Documentation License v1.3 or later - no invariants", - "licenseId": "GFDL-1.3-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/xpp.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xpp.json", - "referenceNumber": 513, - "name": "XPP License", - "licenseId": "xpp", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/xpp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.3c.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", - "referenceNumber": 514, - "name": "LaTeX Project Public License v1.3c", - "licenseId": "LPPL-1.3c", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-3c.txt", - "https://opensource.org/licenses/LPPL-1.3c" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/xlock.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xlock.json", - "referenceNumber": 515, - "name": "xlock License", - "licenseId": "xlock", - "seeAlso": [ - "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", - "referenceNumber": 516, - "name": "Data licence Germany – attribution – version 2.0", - "licenseId": "DL-DE-BY-2.0", - "seeAlso": [ - "https://www.govdata.de/dl-de/by-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/VOSTROM.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", - "referenceNumber": 517, - "name": "VOSTROM Public License for Open Source", - "licenseId": "VOSTROM", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/VOSTROM" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", - "referenceNumber": 518, - "name": "Apple Public Source License 1.1", - "licenseId": "APSL-1.1", - "seeAlso": [ - "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ECL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", - "referenceNumber": 519, - "name": "Educational Community License v2.0", - "licenseId": "ECL-2.0", - "seeAlso": [ - "https://opensource.org/licenses/ECL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", - "referenceNumber": 520, - "name": "bzip2 and libbzip2 License v1.0.6", - "licenseId": "bzip2-1.0.6", - "seeAlso": [ - "https://sourceware.org/git/?p=bzip2.git;a=blob;f=LICENSE;hb=bzip2-1.0.6", - "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xdebug-1.03.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xdebug-1.03.json", - "referenceNumber": 521, - "name": "Xdebug License v 1.03", - "licenseId": "Xdebug-1.03", - "seeAlso": [ - "https://github.com/xdebug/xdebug/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PHP-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", - "referenceNumber": 522, - "name": "PHP License v3.0", - "licenseId": "PHP-3.0", - "seeAlso": [ - "http://www.php.net/license/3_0.txt", - "https://opensource.org/licenses/PHP-3.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/TCL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TCL.json", - "referenceNumber": 523, - "name": "TCL/TK License", - "licenseId": "TCL", - "seeAlso": [ - "http://www.tcl.tk/software/tcltk/license.html", - "https://fedoraproject.org/wiki/Licensing/TCL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", - "referenceNumber": 524, - "name": "SGI Free Software License B v1.1", - "licenseId": "SGI-B-1.1", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Python-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Python-2.0.json", - "referenceNumber": 525, - "name": "Python License 2.0", - "licenseId": "Python-2.0", - "seeAlso": [ - "https://opensource.org/licenses/Python-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/APSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", - "referenceNumber": 526, - "name": "Apple Public Source License 2.0", - "licenseId": "APSL-2.0", - "seeAlso": [ - "http://www.opensource.apple.com/license/apsl/" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Wsuipa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", - "referenceNumber": 527, - "name": "Wsuipa License", - "licenseId": "Wsuipa", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Wsuipa" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Apache-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", - "referenceNumber": 528, - "name": "Apache License 1.0", - "licenseId": "Apache-1.0", - "seeAlso": [ - "http://www.apache.org/licenses/LICENSE-1.0" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", - "referenceNumber": 529, - "name": "Boost Software License 1.0", - "licenseId": "BSL-1.0", - "seeAlso": [ - "http://www.boost.org/LICENSE_1_0.txt", - "https://opensource.org/licenses/BSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ANTLR-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", - "referenceNumber": 530, - "name": "ANTLR Software Rights Notice", - "licenseId": "ANTLR-PD", - "seeAlso": [ - "http://www.antlr2.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LAL-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", - "referenceNumber": 531, - "name": "Licence Art Libre 1.3", - "licenseId": "LAL-1.3", - "seeAlso": [ - "https://artlibre.org/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-export-US-modify.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-export-US-modify.json", - "referenceNumber": 532, - "name": "HPND with US Government export control warning and modification rqmt", - "licenseId": "HPND-export-US-modify", - "seeAlso": [ - "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", - "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Arphic-1999.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", - "referenceNumber": 533, - "name": "Arphic Public License", - "licenseId": "Arphic-1999", - "seeAlso": [ - "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Dotseqn.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", - "referenceNumber": 534, - "name": "Dotseqn License", - "licenseId": "Dotseqn", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Dotseqn" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Info-ZIP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", - "referenceNumber": 535, - "name": "Info-ZIP License", - "licenseId": "Info-ZIP", - "seeAlso": [ - "http://www.info-zip.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/psutils.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/psutils.json", - "referenceNumber": 536, - "name": "psutils License", - "licenseId": "psutils", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/psutils" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NIST-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", - "referenceNumber": 537, - "name": "NIST Public Domain Notice", - "licenseId": "NIST-PD", - "seeAlso": [ - "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", - "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", - "referenceNumber": 538, - "name": "GNU General Public License v2.0 or later", - "licenseId": "GPL-2.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-4.3RENO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json", - "referenceNumber": 539, - "name": "BSD 4.3 RENO License", - "licenseId": "BSD-4.3RENO", - "seeAlso": [ - "https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=libiberty/strcasecmp.c;h=131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb=HEAD", - "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", - "referenceNumber": 540, - "name": "Historical Permission Notice and Disclaimer - sell variant", - "licenseId": "HPND-sell-variant", - "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CNRI-Jython.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", - "referenceNumber": 541, - "name": "CNRI Jython License", - "licenseId": "CNRI-Jython", - "seeAlso": [ - "http://www.jython.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/COIL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", - "referenceNumber": 542, - "name": "Copyfree Open Innovation License", - "licenseId": "COIL-1.0", - "seeAlso": [ - "https://coil.apotheon.org/plaintext/01.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFAP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFAP.json", - "referenceNumber": 543, - "name": "FSF All Permissive License", - "licenseId": "FSFAP", - "seeAlso": [ - "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", - "referenceNumber": 544, - "name": "Lucent Public License Version 1.0", - "licenseId": "LPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/LPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OLFL-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLFL-1.3.json", - "referenceNumber": 545, - "name": "Open Logistics Foundation License Version 1.3", - "licenseId": "OLFL-1.3", - "seeAlso": [ - "https://openlogisticsfoundation.org/licenses/", - "https://opensource.org/license/olfl-1-3/" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Adobe-Glyph.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", - "referenceNumber": 546, - "name": "Adobe Glyph List License", - "licenseId": "Adobe-Glyph", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NIST-Software.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-Software.json", - "referenceNumber": 547, - "name": "NIST Software License", - "licenseId": "NIST-Software", - "seeAlso": [ - "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TTYP0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TTYP0.json", - "referenceNumber": 548, - "name": "TTYP0 License", - "licenseId": "TTYP0", - "seeAlso": [ - "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPLLR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", - "referenceNumber": 549, - "name": "Lesser General Public License For Linguistic Resources", - "licenseId": "LGPLLR", - "seeAlso": [ - "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", - "referenceNumber": 550, - "name": "Creative Commons Attribution No Derivatives 1.0 Generic", - "licenseId": "CC-BY-ND-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Elastic-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", - "referenceNumber": 551, - "name": "Elastic License 2.0", - "licenseId": "Elastic-2.0", - "seeAlso": [ - "https://www.elastic.co/licensing/elastic-license", - "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FBM.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FBM.json", - "referenceNumber": 552, - "name": "Fuzzy Bitmap License", - "licenseId": "FBM", - "seeAlso": [ - "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.3a.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", - "referenceNumber": 553, - "name": "LaTeX Project Public License v1.3a", - "licenseId": "LPPL-1.3a", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-3a.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", - "referenceNumber": 554, - "name": "GNU Affero General Public License v3.0 or later", - "licenseId": "AGPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Barr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Barr.json", - "referenceNumber": 555, - "name": "Barr License", - "licenseId": "Barr", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Barr" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", - "referenceNumber": 556, - "name": "Community Data License Agreement Permissive 2.0", - "licenseId": "CDLA-Permissive-2.0", - "seeAlso": [ - "https://cdla.dev/permissive-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", - "referenceNumber": 557, - "name": "GNU General Public License v3.0 or later", - "licenseId": "GPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NetCDF.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NetCDF.json", - "referenceNumber": 558, - "name": "NetCDF license", - "licenseId": "NetCDF", - "seeAlso": [ - "http://www.unidata.ucar.edu/software/netcdf/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Bahyph.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bahyph.json", - "referenceNumber": 559, - "name": "Bahyph License", - "licenseId": "Bahyph", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Bahyph" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", - "referenceNumber": 560, - "name": "Creative Commons Attribution 3.0 United States", - "licenseId": "CC-BY-3.0-US", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/us/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/dtoa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/dtoa.json", - "referenceNumber": 561, - "name": "David M. Gay dtoa License", - "licenseId": "dtoa", - "seeAlso": [ - "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", - "referenceNumber": 562, - "name": "Creative Commons Attribution 2.5 Generic", - "licenseId": "CC-BY-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Condor-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", - "referenceNumber": 563, - "name": "Condor Public License v1.1", - "licenseId": "Condor-1.1", - "seeAlso": [ - "http://research.cs.wisc.edu/condor/license.html#condor", - "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/check-cvs.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/check-cvs.json", - "referenceNumber": 564, - "name": "check-cvs License", - "licenseId": "check-cvs", - "seeAlso": [ - "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision=1.1.4.3&view=markup&pathrev=cvs1-11-23#l2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mpi-permissive.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", - "referenceNumber": 565, - "name": "mpi Permissive License", - "licenseId": "mpi-permissive", - "seeAlso": [ - "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl=19#L19" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RSCPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RSCPL.json", - "referenceNumber": 566, - "name": "Ricoh Source Code Public License", - "licenseId": "RSCPL", - "seeAlso": [ - "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", - "https://opensource.org/licenses/RSCPL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Latex2e-translated-notice.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Latex2e-translated-notice.json", - "referenceNumber": 567, - "name": "Latex2e with translated notice permission", - "licenseId": "Latex2e-translated-notice", - "seeAlso": [ - "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n74" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", - "referenceNumber": 568, - "name": "Technische Universitaet Berlin License 1.0", - "licenseId": "TU-Berlin-1.0", - "seeAlso": [ - "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SMLNJ.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", - "referenceNumber": 569, - "name": "Standard ML of New Jersey License", - "licenseId": "SMLNJ", - "seeAlso": [ - "https://www.smlnj.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", - "referenceNumber": 570, - "name": "BSD 2-Clause FreeBSD License", - "licenseId": "BSD-2-Clause-FreeBSD", - "seeAlso": [ - "http://www.freebsd.org/copyright/freebsd-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/TPDL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TPDL.json", - "referenceNumber": 571, - "name": "Time::ParseDate License", - "licenseId": "TPDL", - "seeAlso": [ - "https://metacpan.org/pod/Time::ParseDate#LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Multics.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Multics.json", - "referenceNumber": 572, - "name": "Multics License", - "licenseId": "Multics", - "seeAlso": [ - "https://opensource.org/licenses/Multics" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", - "referenceNumber": 573, - "name": "GNU Lesser General Public License v3.0 or later", - "licenseId": "LGPL-3.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", - "referenceNumber": 574, - "name": "GNU Free Documentation License v1.3", - "licenseId": "GFDL-1.3", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, { "reference": "https://spdx.org/licenses/BSD-4-Clause.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", - "referenceNumber": 575, + "referenceNumber": 650, "name": "BSD 4-Clause \"Original\" or \"Old\" License", "licenseId": "BSD-4-Clause", "seeAlso": [ @@ -7237,237 +8170,11 @@ "isOsiApproved": false, "isFsfLibre": true }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", - "referenceNumber": 576, - "name": "GNU Library General Public License v2 or later", - "licenseId": "LGPL-2.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", - "referenceNumber": 577, - "name": "BSD 2-Clause with views sentence", - "licenseId": "BSD-2-Clause-Views", - "seeAlso": [ - "http://www.freebsd.org/copyright/freebsd-license.html", - "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", - "https://github.com/protegeproject/protege/blob/master/license.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Glide.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Glide.json", - "referenceNumber": 578, - "name": "3dfx Glide License", - "licenseId": "Glide", - "seeAlso": [ - "http://www.users.on.net/~triforce/glidexp/COPYING.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OPUBL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", - "referenceNumber": 579, - "name": "Open Publication License v1.0", - "licenseId": "OPUBL-1.0", - "seeAlso": [ - "http://opencontent.org/openpub/", - "https://www.debian.org/opl", - "https://www.ctan.org/license/opl" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", - "referenceNumber": 580, - "name": "Creative Commons Attribution Share Alike 2.0 Generic", - "licenseId": "CC-BY-SA-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HaskellReport.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", - "referenceNumber": 581, - "name": "Haskell Language Report License", - "licenseId": "HaskellReport", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JPL-image.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JPL-image.json", - "referenceNumber": 582, - "name": "JPL Image Use Policy", - "licenseId": "JPL-image", - "seeAlso": [ - "https://www.jpl.nasa.gov/jpl-image-use-policy" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IBM-pibs.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", - "referenceNumber": 583, - "name": "IBM PowerPC Initialization and Boot Software", - "licenseId": "IBM-pibs", - "seeAlso": [ - "http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FTL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FTL.json", - "referenceNumber": 584, - "name": "Freetype Project License", - "licenseId": "FTL", - "seeAlso": [ - "http://freetype.fis.uniroma2.it/FTL.TXT", - "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", - "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SNIA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SNIA.json", - "referenceNumber": 585, - "name": "SNIA Public License 1.1", - "licenseId": "SNIA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", - "referenceNumber": 586, - "name": "Hippocratic License 2.1", - "licenseId": "Hippocratic-2.1", - "seeAlso": [ - "https://firstdonoharm.dev/version/2/1/license.html", - "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SimPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", - "referenceNumber": 587, - "name": "Simple Public License 2.0", - "licenseId": "SimPL-2.0", - "seeAlso": [ - "https://opensource.org/licenses/SimPL-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", - "referenceNumber": 588, - "name": "BSD 3-Clause Clear License", - "licenseId": "BSD-3-Clause-Clear", - "seeAlso": [ - "http://labs.metacarta.com/license-explanation.html#license" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Spencer-86.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", - "referenceNumber": 589, - "name": "Spencer License 86", - "licenseId": "Spencer-86", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BUSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", - "referenceNumber": 590, - "name": "Business Source License 1.1", - "licenseId": "BUSL-1.1", - "seeAlso": [ - "https://mariadb.com/bsl11/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ADSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ADSL.json", - "referenceNumber": 591, - "name": "Amazon Digital Services License", - "licenseId": "ADSL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", - "referenceNumber": 592, - "name": "Open LDAP Public License v2.3", - "licenseId": "OLDAP-2.3", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Interbase-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", - "referenceNumber": 593, - "name": "Interbase Public License v1.0", - "licenseId": "Interbase-1.0", - "seeAlso": [ - "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/OLDAP-2.5.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", - "referenceNumber": 594, + "referenceNumber": 651, "name": "Open LDAP Public License v2.5", "licenseId": "OLDAP-2.5", "seeAlso": [ @@ -7479,7 +8186,7 @@ "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json", - "referenceNumber": 595, + "referenceNumber": 652, "name": "Artistic License 1.0 (Perl)", "licenseId": "Artistic-1.0-Perl", "seeAlso": [ @@ -7487,11 +8194,36 @@ ], "isOsiApproved": true }, + { + "reference": "https://spdx.org/licenses/CAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", + "referenceNumber": 653, + "name": "Cryptographic Autonomy License 1.0", + "licenseId": "CAL-1.0", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Interbase-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", + "referenceNumber": 654, + "name": "Interbase Public License v1.0", + "licenseId": "Interbase-1.0", + "seeAlso": [ + "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", - "referenceNumber": 596, + "referenceNumber": 655, "name": "gSOAP Public License v1.3b", "licenseId": "gSOAP-1.3b", "seeAlso": [ @@ -7500,17 +8232,46 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NPOSL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", - "referenceNumber": 597, - "name": "Non-Profit Open Software License 3.0", - "licenseId": "NPOSL-3.0", + "reference": "https://spdx.org/licenses/LGPL-2.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", + "referenceNumber": 656, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1", "seeAlso": [ - "https://opensource.org/licenses/NOSL3.0" + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" ], - "isOsiApproved": true + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", + "referenceNumber": 657, + "name": "BSD 2-Clause with views sentence", + "licenseId": "BSD-2-Clause-Views", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html", + "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", + "https://github.com/protegeproject/protege/blob/master/license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/StandardML-NJ.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", + "referenceNumber": 658, + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true } ], - "releaseDate": "2023-10-05" -} \ No newline at end of file + "releaseDate": "2024-05-22" +}