@Colin Brough - all great questions!  I'll provide some thoughts and I am sure others will chime in as well.  One question that I have which may impact the answers is what your current source control approach is?  Are you using serverside source control hooks with Studio or some other approach?

  • Take Atelier off the list and drop it from consideration... it is deprecated new work shouldn't be started with it
  • VSCode is the path forward for InterSystems technologies; it used the Atelier REST APIs and therefore you can use it on Caché 2018.x (originally added in 2016.2 IIRC)
  • You can typically use VSCode alongside Studio, depending on your answer to the above question about your source control approach.  If you are using no source control, or if you are using serverside source control, then Studio and VSCode can both be used against the instance in mixed mode (my team has been doing this for years)
  • I can't speak to what you lose with VSCode but I believe that at this point the answer is either 'very little' or 'nothing' for all intents and purposes
  • I can't speak to Studio Templates (hopefully someone else can weigh in)

This video may also be helpful to you: https://community.intersystems.com/post/video-visual-studio-code-objects... 

Hope this is a good starting point.

@Dmitry Maslennikov  - I agree with all of your points above except for one:

"CreateNamespace on existing namespace should fail, and so on."  

Per Luca's original statement - "The utility was created to be idempotent" ... this is very important to us - we need to make sure that the same command can be run multiple times and if it is creating new changes to the config that it does so, but if it being asked to create what is already there it will ensure that it is already there and will return success (https://www.infoworld.com/article/3263724/idempotence-and-the-discipline...).  With this design philosophy in mind, CreateNamespace on existing namespace should succeed and not fail (but of course, verbose output should make it clear that CreateNamespace was a no-op due to the previously existing namespace).