Skip to content
Snippets Groups Projects

Add deprecation notice for GlobalID compatibility layer

Merged Alex Kalderimis requested to merge 257883-deprecation-entry into master

Be sure to link this MR to the relevant deprecation issue(s).

Adds a deprecation notice for the GraphQL ID/GlobalID compatibility layer.

See: #257883 (closed)

By the 10th: Assign this MR to these team members as Reviewer and for Approval (optional unless noted as required):

  • Product Marketing: @PMM
  • Product Designer(s): @ProductDesigners
  • Product Group Manager or Director: @g.hickman
  • Engineering Manager: @arturoherrero
  • Technical writer: @kpaizee

By 11:59 AM PDT 15th: EM/PM assigns this MR to the TW reviewer for final review and merge: @arturoherrero

By 11:59 PM PDT 17th: TW Reviewer updates Docs by merging this MR to master: @kpaizee


Please review the guidelines for deprecations, as well as the process for creating a deprecation entry. They are frequently updated, and everyone should make sure they are aware of the current standards (PM, PMM, EM, and TW).

EM/PM release post item checklist

  • Set yourself as the Assignee, meaning you are the DRI.
  • If the deprecation is a breaking change, add label breaking change.
  • Follow the process to create a deprecation YAML file.
  • Add reviewers by the 10th.
  • When ready to be merged and not later than the 15th, add the ~ready label and @ message the TW for final review and merge.

Reviewers

When the content is ready for review, it must be reviewed by a Technical Writer and Engineering Manager, but can also be reviewed by Product Marketing, Product Design, and the Product Leaders for this area. Please use the Reviewers for Merge Requests feature for all reviews. Reviewers will then approve the MR and remove themselves from Reviewers when their review is complete.

Tech writer review

After being added as a Reviewer to this merge request, the TW performs their review according to the criteria described below.

Review deprecation MRs with a similar process as regular docs MRs. Add suggestions as needed, @ message the PM to inform them the first review is complete, and remove yourself as a reviewer if it's not ready for merge yet.

Expand for Details
  • Title:
    • Length limit: 7 words (not including articles or prepositions).
    • Capitalization: ensure the title is sentence cased.
    • Rewrite to exclude the words deprecation, deprecate, removal, and remove if necessary.
  • Consistency:
    • Ensure that all resources (docs, deprecation, etc.) refer to the feature with the same term / feature name.
  • Content:
    • Make sure the deprecation is accurate based on your understanding. Look for typos or grammar mistakes. Work with PM and PMM to ensure a consistent GitLab style and tone for messaging, based on other features and deprecations.
    • Review use of whitespace and bullet lists. Will the deprecation item be easily scannable when published? Consider adding line breaks or breaking content into bullets if you have more than a few sentences.
    • Make sure there aren't acronyms readers may not understand per https://about.gitlab.com/handbook/communication/#writing-style-guidelines.
  • Links:
    • All links must be full URLs, as the deprecation YAML files are used in two different projects. Do not use relative links. The generated doc is an exception to the relative link rule and currently uses absolute links only.
    • Make sure all links and anchors are correct. Do not link to the H1 (top) anchor on a docs page.
  • Code. Make sure any included code is wrapped in code blocks.
  • Capitalization. Make sure to capitalize feature names. Stay consistent with the Documentation Style Guidance on Capitalization.
  • Blank spaces. Remove unnecessary spaces (end of line spaces, double spaces, extra blank lines, and lines with only spaces).

When the PM indicates it is ready for merge and all issues have been addressed, start the merge process.

Technical writer merge process

The deprecations doc's .md file must be updated before this MR is merged:

  1. Check out the MR's branch (in the gitlab-org/gitlab project).
  2. From the command line (in the branch), run bin/rake gitlab:docs:compile_deprecations. If you want to double check that it worked, you can run bin/rake gitlab:docs:check_deprecations to verify that the doc is up to date.
  3. Commit the updated file and push the changes.
  4. Set the MR to merge when the pipeline succeeds (or merge if the pipeline is already complete).

If you have trouble running the Rake task, check the troubleshooting steps.

Edited by Kati Paizee

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Arturo Herrero approved this merge request

    approved this merge request

  • requested review from @digitalmoksha

  • 👋 @arturoherrero, thanks for approving this merge request.

    This is the first time the merge request is approved. To ensure full test coverage, a new pipeline has been started.

    For more info, please refer to the following links:

  • Arturo Herrero removed review request for @arturoherrero

    removed review request for @arturoherrero

  • added 1 commit

    • a5fc99c3 - Add deprecation notice for GlobalID compatibility layer

    Compare with previous version

  • Here is the full list of affected fields, in case anyone thinks we need to put this information anywhere:

    Query.snippets(ids: [SnippetID!])
    Query.snippets(authorId: UserID)
    Query.snippets(projectId: ProjectID)
    Query.milestone(id: MilestoneID!)
    Query.containerRepository(id: ContainerRepositoryID!)
    Query.package(id: PackagesPackageID!)
    Query.user(id: UserID)
    Query.issue(id: IssueID!)
    Query.mergeRequest(id: MergeRequestID!)
    Query.runnerSetup(projectId: ProjectID)
    Query.runnerSetup(groupId: GroupID)
    Query.runner(id: CiRunnerID!)
    Query.timelogs(projectId: ProjectID)
    Query.timelogs(groupId: GroupID)
    Query.boardList(id: ListID!)
    Query.iteration(id: IterationID!)
    Query.vulnerabilities(scannerId: [VulnerabilitiesScannerID!])
    Query.vulnerabilities(clusterId: [ClustersClusterID!])
    Query.vulnerabilities(clusterAgentId: [ClustersAgentID!])
    Query.vulnerability(id: VulnerabilityID!)
    Query.devopsAdoptionEnabledNamespaces(displayNamespaceId: NamespaceID)
    Query.ciMinutesUsage(namespaceId: NamespaceID)
    Project.sentryDetailedError(id: GitlabErrorTrackingDetailedErrorID!)
    Project.snippets(ids: [SnippetID!])
    Project.boards(id: BoardID)
    Project.board(id: BoardID!)
    Project.alertManagementHttpIntegrations(id: AlertManagementHttpIntegrationID)
    Project.timelogs(projectId: ProjectID)
    Project.timelogs(groupId: GroupID)
    Project.vulnerabilities(scannerId: [VulnerabilitiesScannerID!])
    Project.vulnerabilities(clusterId: [ClustersClusterID!])
    Project.vulnerabilities(clusterAgentId: [ClustersAgentID!])
    Project.vulnerabilitySeveritiesCount(scannerId: [VulnerabilitiesScannerID!])
    Project.iterations(iterationCadenceIds: [IterationsCadenceID!])
    Project.iterationCadences(id: IterationsCadenceID)
    Project.dastProfile(id: DastProfileID!)
    Project.dastSiteProfile(id: DastSiteProfileID!)
    Project.incidentManagementEscalationPolicy(id: IncidentManagementEscalationPolicyID!)
    Project.incidentManagementTimelineEvents(incidentId: IssueID!)
    Project.incidentManagementTimelineEvent(incidentId: IssueID!)
    Project.incidentManagementTimelineEvent(id: IncidentManagementTimelineEventID!)
    Project.networkPolicies(environmentId: EnvironmentID)
    Namespace.complianceFrameworks(id: ComplianceManagementFrameworkID)
    Namespace.complianceFrameworks(id: ComplianceManagementFrameworkID)
    Group.boards(id: BoardID)
    Group.board(id: BoardID!)
    Group.timelogs(projectId: ProjectID)
    Group.timelogs(groupId: GroupID)
    Group.epicBoard(id: BoardsEpicBoardID!)
    Group.iterations(iterationCadenceIds: [IterationsCadenceID!])
    Group.iterationCadences(id: IterationsCadenceID)
    Group.vulnerabilities(scannerId: [VulnerabilitiesScannerID!])
    Group.vulnerabilities(clusterId: [ClustersClusterID!])
    Group.vulnerabilities(clusterAgentId: [ClustersAgentID!])
    Group.vulnerabilitySeveritiesCount(scannerId: [VulnerabilitiesScannerID!])
    User.authoredMergeRequests(projectId: ProjectID)
    User.assignedMergeRequests(projectId: ProjectID)
    User.reviewRequestedMergeRequests(projectId: ProjectID)
    User.snippets(ids: [SnippetID!])
    User.timelogs(projectId: ProjectID)
    User.timelogs(groupId: GroupID)
    MemberInterface.mergeRequestInteraction(id: MergeRequestID!)
    MemberInterface.mergeRequestInteraction(id: MergeRequestID!)
    MemberInterface.mergeRequestInteraction(id: MergeRequestID!)
    Design.versions(earlierOrEqualToId: DesignManagementVersionID)
    DesignVersion.designsAtVersion(ids: [DesignManagementDesignID!])
    DesignVersion.designAtVersion(designId: DesignManagementDesignID)
    DesignVersion.designAtVersion(id: DesignManagementDesignAtVersionID)
    Pipeline.job(id: JobID)
    User.authoredMergeRequests(projectId: ProjectID)
    User.assignedMergeRequests(projectId: ProjectID)
    User.reviewRequestedMergeRequests(projectId: ProjectID)
    User.snippets(ids: [SnippetID!])
    User.timelogs(projectId: ProjectID)
    User.timelogs(groupId: GroupID)
    User.authoredMergeRequests(projectId: ProjectID)
    User.assignedMergeRequests(projectId: ProjectID)
    User.reviewRequestedMergeRequests(projectId: ProjectID)
    User.snippets(ids: [SnippetID!])
    User.timelogs(projectId: ProjectID)
    User.timelogs(groupId: GroupID)
    User.authoredMergeRequests(projectId: ProjectID)
    User.assignedMergeRequests(projectId: ProjectID)
    User.reviewRequestedMergeRequests(projectId: ProjectID)
    User.snippets(ids: [SnippetID!])
    User.timelogs(projectId: ProjectID)
    User.timelogs(groupId: GroupID)
    DesignCollection.designs(atVersion: DesignManagementVersionID)
    DesignCollection.designs(ids: [DesignManagementDesignID!])
    DesignCollection.versions(earlierOrEqualToId: DesignManagementVersionID)
    DesignCollection.version(id: DesignManagementVersionID)
    DesignCollection.designAtVersion(id: DesignManagementDesignAtVersionID!)
    DesignCollection.design(id: DesignManagementDesignID)
    IncidentManagementOncallSchedule.rotation(id: IncidentManagementOncallRotationID!)
    Board.lists(id: ListID)
    EpicBoard.lists(id: BoardsEpicListID)
    SentryErrorCollection.detailedError(id: GitlabErrorTrackingDetailedErrorID!)
    SentryErrorCollection.errorStackTrace(id: GitlabErrorTrackingDetailedErrorID!)
    DesignManagement.version(id: DesignManagementVersionID!)
    DesignManagement.designAtVersion(id: DesignManagementDesignAtVersionID!)
    InstanceSecurityDashboard.vulnerabilitySeveritiesCount(scannerId: [VulnerabilitiesScannerID!])
    Subscription.issuableAssigneesUpdated(issuableId: IssuableID!)
    Subscription.issueCrmContactsUpdated(issuableId: IssuableID!)
    Subscription.issuableTitleUpdated(issuableId: IssuableID!)

    this can be generated with the following script in the console:

    ::Types::GlobalIDType.define_singleton_method(:id_type_names) { @id_types.values.map(&:graphql_name) }
    gid_types = ::Types::GlobalIDType.id_type_names.to_set
    fs = GitlabSchema.types.values.flat_map { _1.try(:fields).try(:values) }.compact
    with_args = fs.select { _1.try(:arguments).present? }
    
    def as_str(field, arg_name, arg)
      "#{field.owner.graphql_name}.#{field.graphql_name}(#{arg_name}: #{arg.type.to_graphql})"
    end
    
    with_args.each do |f|
      f.arguments.each do |name, arg|
        puts as_str(f, name, arg) if gid_types.include?(arg.type.unwrap.graphql_name)
      end
    end
  • Brett Walker approved this merge request

    approved this merge request

  • Brett Walker removed review request for @digitalmoksha

    removed review request for @digitalmoksha

  • Alex Kalderimis changed the description

    changed the description

  • Alex Kalderimis marked the checklist item Set yourself as the Assignee, meaning you are the DRI. as completed

    marked the checklist item Set yourself as the Assignee, meaning you are the DRI. as completed

  • Alex Kalderimis marked the checklist item Set yourself as the Assignee, meaning you are the DRI. as incomplete

    marked the checklist item Set yourself as the Assignee, meaning you are the DRI. as incomplete

  • Alex Kalderimis changed the description

    changed the description

  • Alex Kalderimis requested review from @kpaizee

    requested review from @kpaizee

  • Arturo Herrero requested review from @g.hickman

    requested review from @g.hickman

  • Arturo Herrero marked the checklist item Set yourself as the Assignee, meaning you are the DRI. as completed

    marked the checklist item Set yourself as the Assignee, meaning you are the DRI. as completed

  • Arturo Herrero marked the checklist item Follow the process to create a deprecation YAML file. as completed

    marked the checklist item Follow the process to create a deprecation YAML file. as completed

  • Arturo Herrero marked the checklist item Add reviewers by the 10th. as completed

    marked the checklist item Add reviewers by the 10th. as completed

  • Arturo Herrero marked the checklist item (Recommended) PMM as completed

    marked the checklist item (Recommended) PMM as completed

  • Arturo Herrero marked the checklist item If the deprecation is a breaking change, add label breaking change. as completed

    marked the checklist item If the deprecation is a breaking change, add label breaking change. as completed

  • added 1 commit

    • 8e88762a - Add deprecation notice for GlobalID compatibility layer

    Compare with previous version

  • Alex Kalderimis changed the description

    changed the description

  • Kati Paizee
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading