Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable limited features of BcContainerHelper on macOS #3439

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

ashirokikh
Copy link

@ashirokikh ashirokikh commented Mar 23, 2024

With AL Language support on macOS, some of the BcConatinerHelper features can be handy.

This is to enable the module import for macOS and an AL app compilation without a container. The following commands have been confirmed working:

  • Get-BCArtifactUrl - returns the URL as expected
  • Download-Artifacts - saves the artifacts into the bcartifacts.cache folder (at /Users/$myUsername/.bcartifacts.cache)
  • New-BcCompilerFolder - creates a compiler folder (no issues with latest vsix file with altool)
  • Compile-AppWithBcCompilerFolder - compiles an AL app using the created compiler folder

Tested on OS versions:
Windows 10, PowerShell 5.1
macOS 14.4, pwsh 7.4
Ubuntu 20.04 (WSL2), pwsh 7.4

image

@ashirokikh ashirokikh requested a review from a team as a code owner March 23, 2024 04:34
@ashirokikh
Copy link
Author

@microsoft-github-policy-service agree

@freddydk
Copy link
Contributor

Before looking at this, I have to ask why?

Why would you want to run DevOps on MacOS, which is 10 times the price of Linux runners and less performant?
image

What is the purpose of running Get-BcArtifactUrl on MacOS when you really cannot use the URL for much?

Remember that enabling stuff like this comes with a support cost, which in the end lands with me/Microsoft - so there need to be a good reason.

The reason for Linux is that it is ½ the price of windows for DevOps and faster.

@ashirokikh
Copy link
Author

ashirokikh commented Mar 26, 2024

Thank you for looking into this, those are very good points.

The main goal for this is to further enable macOS as an AL development environment, not as a pipeline agent host OS. I know BcContainerHelper is supposed to help with Docker but it's still a very powerful tool besides that. For instance, getting the BC artifacts function is especially helpful to navigate and get familiar with the base app source code and compare several versions to make a solution compatible with them. The Auth scripts can be used to refresh tokens without using any http client.

Personally, as part of a web/mobile development team working on macOS, I still work on BC backend developing in AL, and getting artifacts is the first thing that I wanted to do to carry on after switching the platform. I saw some questions from other macOS users about BcContainerHelper here and there are already some BC developers working on macs, hence I thought this change could be helpful. Although many functions may not be working, the ones that are can still be useful. For instance, with this change, an AL app can be compiled against several BC versions using several compiler folders without a container.

Looking broader, according to the Stack Overflow Developer Survey, macOS market share across professionals is 33%. Enabling this power tool for the platform would improve the toolset available and would let more developers to better perform or even take up a BC developer role without having to switch the preferred and familiar work environment.

There may be not much else we can do with the downloaded artifacts and platform today on macOS. Yet with the trend of going cross-platform with .NET and the lower price of running Linux compute resources in the cloud, the chances are high that in future we may see running BC in a Linux container, and macOS is capable of that. Until then, enabling the tool for macOS can interfere with the current priorities, I understand.

If this is currently not going bring enough value, please close this pull request. Thank you again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants