Hi Thembelani!

For the new development with containers, the choice number one is InterSystems IRIS. You can try and build your solution with community edtion on AWS, Google or Azure.

If it is a solution in Healthcare I suggest starting even with InterSystems IRIS for Health.

As a development IDE with IRIS you have options of Atelier and now community driven VSCode for ObjectScript. 

My personal preference is VSCode.

New cool update came up with VSCode!

What's new in this version

  • IMPORTANT: Connection disabled by default, now. Set "objectscript.conn.active": true to enable it
  • Automatically Preview XML files as UDL, (disabled by default, setting objectscript.autoPreviewXML)
  • Preview XML As UDL by command from Command Palette and from Context Menu
  • Fixed highlighting for XData with css in style tag
  • Show percent-member in outline
  • Multi-root workspace supported now, for different connections
  • Multi-root workspace also for server explorer
  • Go to definition now goes to real file if such presented, or opens from the server
  • Basic syntax highlighting for CSP files, only as HTML
  • Added some snippets for class
  • Go to Subclass for the current class, available in command palette
  • Go to Super class for the current class, available in command palette
  • Go To any class/method in the workspace including server (by Cmd+T/Ctrl+T)
  • some small fixes in the highlighting, and selecting words/variables
  • Intellisense. Show list of methods for ##class(SomeClass)
  • Go to macros definition
  • Go to definition for methods and properties for self object like ..Name..SomeMethod()
  • Added completion for class parameters
  • Export without storage

Well done, Dmitry!

Yes, you are right.

I guess it is fair for the cases when the tool spawns jobs and does some work as daemons - like services, monitoring, alerting, etc. In this case data stays with XYZ database.

But I agree that we need a public registry of "safe" Class/Global prefixes and names.

We can take some easy and obvious approaches: Github or DNS.

E.g. with the Gihub approach the package name can start with a company.reponame.

Thoughts?

If tool XYZ is installed in namespace+database XYZ and consists of classes in the XYZ package that's %ALL-mapped from XYZ, default storage for persistent classes in that package will use globals ^XYZ.* which will get stored in the default data database of whichever namespace the tool is used in (e.g. USER). These globals mustn't clash with globals created in the same place by a tool from a different supplier, or by the end-user's own apps.

Right. And this is the reason why the tool with XYZ.Classes should be installed in XYZ namespace - in this way even if I map XYZ to %All all the data persistent data for XYZ.Classes will be stored in XYZ namespace, even if I use it from USER namespace, right?

Hi John! Thanks for the input. Why do you think we need a prefix for globals? The matter to have a dedicated namespace/database for the tool frees us from this requirement, right?

-  There should be a central name registry, to avoid clashing on namespace/database names, package names etc between different package providers.

Agree, this is valuable. If we'll see thousands of modules. If we have a public package manager this will solve it I guess. But maybe "package name=repo name" rule could be a solver.

- What's the upper limit on namespaces? Databases?

I guess we have it in docs, but this number is large. Thousands I hope.

- Adding a namespace for each tool package will lengthen namespace lists in Studio, Portal etc. Maybe tools don't always need a namespace in front of their database. Ones that present a web app / REST interface probably do (at the moment) because of how the app config has to point to a namespace.

One of the options when tools could safely share one namespace when it has the same publisher. We often can imagine one company/developer who produces several tools which probably can be installed into one namespace/database.