I develop and publish VS Code extensions targeting users of the InterSystems platforms. Occasionally an extension needs some support classes installed on the servers it works with. I propose establishing a naming convention for these classes, as follows:

  1. First dot-piece of the package name should be vscode
  2. Second dot-piece should be derived from the "publisher" property in the extension's package.json manifest, as follows:
    • If publisher is "intersystems-community" then use dc
    • Otherwise use the publisher string, transformed if necessary to conform to package-naming constraints (e.g. remove punctuation). Uppercase characters in the publisher string may be retained or folded to lowercase at the choice of the publisher, but the transformation should be applied consistently for all classes published by that publisher. For example, if the extension uses publisher ID Acme-Nadir their class names might begin vscode.AcmeNadir. or vscode.acmeNadir. or vscode.acmenadir.
  3. Third dot-piece should be derived from the "name" property of the extension, using the same transform guidance as above.
  4. Additional dot-pieces of the package name can be added at the choice of the extension author.
  5. Classnames should follow the convention proposed by @Robert Barbiaux in this article, i.e. be upper camel case (aka Pascal case).

Excellent article @Timothy Leavitt 

I'd like to offer an example from the coalface today. An issue was affecting my improved Testing Manager extension for VS Code. Coverage information from the Test Coverage Tool package assumes that a method signature only occupies one line, but an option in the ObjectScript extension can instruct the server to generate the UDL representation with multi-argument signatures split across consecutive lines.

I was pretty sure the necessary information was available in SQL tables on the server. I just needed to come up with the right query. I consider myself novice grade on SQL, so was glad that Copilot could use the GPT-4.1 model to improve the initial query I'd drafted in the SQLTools extension.

I started with this:

SELECT Name as Method,
  $LENGTH(FormalSpec, ',') AS ArgumentCount,
  CASE
    WHEN $LENGTH(FormalSpec, ',') > 1 THEN $LENGTH(FormalSpec, ',')
    ELSE 0
  END AS AddsLines
FROM %Dictionary.MethodDefinition
WHERE parent = '%IPM.Repo.Definition'
ORDER BY SequenceNumber

Copilot got me very close, and a small tweak by me yielded this:

SELECT Name as Method,
  $LENGTH(FormalSpec, ',') AS ArgumentCount,
  CASE
    WHEN $LENGTH(FormalSpec, ',') > 1 THEN $LENGTH(FormalSpec, ',')
    ELSE 0
  END AS AddsLines,
  SUM(
    CASE
      WHEN $LENGTH(FormalSpec, ',') > 1 THEN $LENGTH(FormalSpec, ',')
      ELSE 0
    END
  ) OVER (
    ORDER BY SequenceNumber ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  ) AS Offset
FROM %Dictionary.MethodDefinition
WHERE parent = '%IPM.Repo.Definition'
ORDER BY SequenceNumber

I think the command to export from a project only exports the project's server-side classes / routines to individual client-side files.

Since your title mentions deployment I'm guessing you want all the project members exported into a single XML file.

An export of multiple server-side items to a single XML can already be done using the `ObjectScript: Export Documents to XML File...` command from Palette. But currently this can't auto-select only the members of a project.