{"id":5920,"date":"2019-09-05T23:20:16","date_gmt":"2019-09-05T21:20:16","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=5920"},"modified":"2019-09-05T23:20:16","modified_gmt":"2019-09-05T21:20:16","slug":"apple-to-deprecate-scripting-languages-in-future-versions-of-macos-tidbits","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2019\/09\/05\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos-tidbits\/","title":{"rendered":"Apple to Deprecate Scripting Languages in Future Versions of macOS &#8211; TidBITS"},"content":{"rendered":"<blockquote><p><a href=\"https:\/\/tidbits.com\/2019\/06\/25\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos\/\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2019\/09\/Code.jpg?w=910&#038;ssl=1\" alt=\"\" \/><\/a>Apple says future versions of macOS won\u2019t include a number of open-source scripting languages. The impact of this change will vary depending on the audience, but it will affect more people than you might think.<\/p><\/blockquote>\n<h1>Source: <em><a href=\"https:\/\/tidbits.com\/2019\/06\/25\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos\/\">Apple to Deprecate Scripting Languages in Future Versions of macOS &#8211; TidBITS<\/a><\/em><\/h1>\n<p>This is a clear &#8220;Embrace, extend, extinguish&#8221; tactic.<\/p>\n<p>Why should we support a compaty that want to extinguish us?<\/p>\n<p><!--more--><!--nextpage--><\/p>\n<blockquote>\n<div class=\"c-post__thumb-wrapper\">\n<header class=\"c-post__header has-thumbnail\">\n<h1 class=\"c-post__title\">Apple to Deprecate Scripting Languages in Future Versions of macOS<\/h1>\n<\/header>\n<\/div>\n<div class=\"c-post__content\">\n<div class=\"c-post__sharing js-sticky\">\n<div class=\"sharedaddy sd-sharing-enabled\">\n<div class=\"robots-nocontent sd-block sd-social sd-social-text sd-sharing\">\n<h3 class=\"sd-title\">Share<\/h3>\n<div class=\"sd-content\">\n<ul>\n<li class=\"share-facebook\"><a class=\"share-facebook sd-button no-icon\" title=\"Click to share on Facebook\" href=\"https:\/\/tidbits.com\/2019\/06\/25\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos\/?share=facebook&amp;nb=1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-39906\">Facebook<\/a><\/li>\n<li class=\"share-twitter\"><a class=\"share-twitter sd-button no-icon\" title=\"Click to share on Twitter\" href=\"https:\/\/tidbits.com\/2019\/06\/25\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos\/?share=twitter&amp;nb=1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-39906\">Twitter<\/a><\/li>\n<li class=\"share-reddit\"><a class=\"share-reddit sd-button no-icon\" title=\"Click to share on Reddit\" href=\"https:\/\/tidbits.com\/2019\/06\/25\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos\/?share=reddit&amp;nb=1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" data-shared=\"\">Reddit<\/a><\/li>\n<li class=\"share-end\"><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>When Apple announces major new versions of macOS, the company often includes details not just about the next release but also about what will come further in the future. The first macOS 10.15 Beta Release Notes has a <a href=\"https:\/\/developer.apple.com\/documentation\/macos_release_notes\/macos_10_15_beta_release_notes#3318257\" target=\"_blank\" rel=\"null noopener noreferrer\">Deprecations<\/a> section that says:<\/p>\n<blockquote><p>Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won\u2019t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it\u2019s recommended that you bundle the runtime within the app.<\/p><\/blockquote>\n<h2>What does this note mean?<\/h2>\n<p>The most absolute interpretation is to assume that Apple means \u201c[all] future versions\u201d after Catalina won\u2019t include the runtimes necessary to execute scripts written in these scripting languages.<\/p>\n<p>However, Apple has at times deprecated longstanding components without removing them entirely. For instance, when Apple introduced <code class=\"\" data-line=\"\">launchd<\/code> in Mac OS X 10.4 Tiger, it deprecated the venerable <code class=\"\" data-line=\"\">cron<\/code> scheduling system; ten macOS versions later and <code class=\"\" data-line=\"\">cron<\/code> is still humming along, available for users.<\/p>\n<p>So this may all be a tempest in a teapot if Apple doesn\u2019t end up following through on this threat. But that won\u2019t become clear for at least a year, and in the meantime, we\u2019ll all have to ponder the implications if Apple does kick these languages to the curb.<\/p>\n<h2>Why remove these scripting languages at all?<\/h2>\n<p>Three reasons: security, efficiency, and focus.<\/p>\n<p>These languages are common in Unix-based systems and have been in Mac OS X since 2001, so why remove them now? Apple has progressively changed macOS to make it more secure, and that is likely the company\u2019s primary motivation for this change. Gatekeeper prevents the automatic running of applications from unknown developers, but scripts are just text files that can do a great deal when executed by the scripting language runtime.<\/p>\n<p>Removing scripting languages will also make macOS use less disk space. The runtime programs for each are small, but like all programming languages, they have many code libraries, common tasks script writers can call upon so they don\u2019t have to reinvent a particular wheel. macOS comes with thousands of these library files that total over 150 MB. That\u2019s not a lot in the scheme of things, but it\u2019s also not trivial with an operating system that has to be downloaded millions of times.<\/p>\n<p>Finally, there\u2019s a principle that in business, you should focus on your strengths. Maintaining these languages has not been one of Apple\u2019s; the company has not kept current with updates to the languages, and users can\u2019t easily use standard tools to find and install additional libraries from the vast repositories available.<\/p>\n<h2>Who is affected, and what are their options?<\/h2>\n<p>How troubling the loss of these scripting languages will be depends on who you are.<\/p>\n<h3>Script Writers<\/h3>\n<p>The people who know these scripting languages the best will be the least affected. Those who write scripts for Web development, scientific analysis, or to get other work done in their preferred language already know that maintaining the default installations is not one of Apple\u2019s strengths.<\/p>\n<p>For a long time now, serious users of these languages have been installing separate copies in other folders so they can keep them up to date and easily install libraries from the repositories. That will almost certainly remain possible even after Apple removes the default installations.<\/p>\n<h3>App Developers<\/h3>\n<p>Mac apps are written in compiled languages but sometimes contain scripts within their app bundles to perform specific tasks. Apple\u2019s deprecation notice recommends that developers include the script\u2019s runtime executable within the application; this shifts responsibility to the developers.<\/p>\n<p>Although multiple apps needing their own copies of Perl, for instance, might seem inefficient, developers need to include only the runtime and exact libraries they use, not a full scripting language installation. Some apps have already taken this route to keep using Java, and many modern apps rely on the Electron framework, which includes Node to run JavaScript.<\/p>\n<p>Alternatively, developers can switch to using compiled code, either rewriting scripts from scratch in a different language or using a tool designed to convert a script into a binary executable format.<\/p>\n<h3>Mac Administrators<\/h3>\n<p>People who manage many computers for a school or business rely on automation, and automation, in turn, makes heavy use of scripting. While most app developers are already accustomed to dealing with Apple\u2019s security measures for compiled code, Mac administrators are not, so it will be much harder for them to kick the scripting habit.<\/p>\n<p>While some admins are fluent in one or more of these scripting languages, many more are like me, knowing just enough to get by and use scripts shared by the community. For instance, Greg Neagle\u2019s <a href=\"https:\/\/github.com\/munki\/munki\" target=\"_blank\" rel=\"null noopener noreferrer\">Munki<\/a> is a popular open-source tool for managing Mac software installs written in Python, but you don\u2019t have to be fluent in Python to use it. Admins currently tend to accumulate useful scripts written in a variety of languages, but installing and maintaining multiple languages on every Mac is too much work, so in the future, admins are likely to choose just one, limiting the number of usable tools. For simpler tasks, admins can also switch to using shell scripts, which will be around at least as long as macOS includes the Terminal app.<\/p>\n<h3>Apple<\/h3>\n<p>Before removing these scripting languages from macOS, Apple will need to address its own reliance on them. Xcode includes many libraries in all three of the mentioned languages, but it should be trivial for Apple to add the runtimes to Xcode\u2019s already enormous install. iMovie includes a lone Perl script, and it wouldn\u2019t surprise me if Apple\u2019s pro apps like Final Cut Pro X and Logic Pro X also contain some.<\/p>\n<p>In addition to Apple\u2019s apps, macOS 10.14 Mojave contains over 175 scripts outside the folders devoted to Perl, Python, and Ruby. Some are a part of the language, just in a different place, but the rest serve varied purposes. Once I realized how many there were, it seemed much less likely that all three languages would be removed in the macOS version after Catalina.<\/p>\n<h3>Everyone Else<\/h3>\n<p>It\u2019s hard to say how many everyday users rely on at least one app that contains at least one script. For actively maintained apps, the developer will solve this for the end user. For some open-source projects, particularly cross-platform ones for which macOS is not the primary platform, project contributors may not get around to incorporating a solution.<\/p>\n<p>For those cases and for apps that are no longer maintained, there is a solution: install the scripting language yourself. Each scripting language has its own method of Mac installation, but the simplest and most common method is a general package management system like <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"null noopener noreferrer\">Homebrew<\/a>. Homebrew itself is made up of Ruby scripts; I expect its developers will heed Apple\u2019s warning and include that runtime before Ruby disappears in a future version of macOS.<\/p>\n<p>If you\u2019re curious how many of your applications contain scripts in these languages, try copying this command and pasting it into Terminal:<\/p>\n<p><code class=\"\" data-line=\"\">find \/Applications -type f | while read in ; do if file -b<br \/>\n&quot;${in}&quot; | grep -q &#039;Perl\\|Python\\|Ruby&#039; ; then echo &quot;${in}&quot; ; fi ; done<\/code><\/p>\n<p>The first parameter after <code class=\"\" data-line=\"\">find<\/code> is the folder to be checked. On my Mac, Plex Media Server contains many Python scripts and BBEdit includes a couple, as do a handful of other applications, generally from smaller companies or open-source projects.<\/p>\n<h2>Start Planning<\/h2>\n<p>The point of deprecation notices is to give people time to make changes, but typically these notices don\u2019t operate on a fixed schedule. If Apple itself can\u2019t prioritize ending its reliance on scripts or if the company hears from significant constituencies that they\u2019re not ready, one or more of the languages may stick around.<\/p>\n<p>Even if Apple removes all the scripting languages from the macOS 10.16 release in 2020, it won\u2019t be as significant a change as other deprecations, such as the <a href=\"https:\/\/tidbits.com\/tag\/32-bit\/\">end of 32-bit app support<\/a> coming to fruition in macOS Catalina. Unlike that change, if Apple removes a scripting language, you can always put it back.<\/p>\n<p>One final note. Swift can be used as a scripting language, and although its runtime isn\u2019t currently included with macOS, it\u2019s possible that Apple will anoint it as the Mac\u2019s scripting language of choice at some point in the future.<\/p>\n<hr \/>\n<\/div>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">Apple says future versions of macOS won\u2019t include a number of open-source scripting languages. The impact of this change will vary depending on the audience, but it will affect more people than you might think. Source: Apple to Deprecate Scripting Languages in Future Versions of macOS &#8211; TidBITS This is a clear &#8220;Embrace, extend, extinguish&#8221;&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2019\/09\/05\/apple-to-deprecate-scripting-languages-in-future-versions-of-macos-tidbits\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[171],"tags":[],"class_list":["post-5920","post","type-post","status-publish","format-standard","hentry","category-ethics"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-1xu","jetpack-related-posts":[{"id":9083,"url":"https:\/\/monodes.com\/predaelli\/2022\/01\/28\/macos-is-hot-garbage-its-2022-apple-has-been-releasing-by-sergio-jan-2022-medium\/","url_meta":{"origin":5920,"position":0},"title":"macOS is Hot Garbage. It\u2019s 2022. Apple has been releasing\u2026 | by Sergio | Jan, 2022 | Medium","author":"Paolo Redaelli","date":"2022-01-28","format":false,"excerpt":"It\u2019s 2022. Apple has been releasing graphical operating systems since 1984 and in 38 years they haven\u2019t learned enough to make a great OS\u2026 Source: macOS is Hot Garbage. It\u2019s 2022. Apple has been releasing\u2026 | by Sergio | Jan, 2022 | Medium Other reasons to avoid this proprietary OS.","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6518,"url":"https:\/\/monodes.com\/predaelli\/2020\/01\/25\/classic-improved-gnome-look-org\/","url_meta":{"origin":5920,"position":1},"title":"classic improved &#8211; Gnome-look.org","author":"Paolo Redaelli","date":"2020-01-25","format":false,"excerpt":"A MacOs 9 or \"classic\" theme for Metacity. I may borrow some ideas for a WordPress theme.... This is an improved version of the Metacity theme classic by servo.It has now a more authentic resemblance of the original MacOS 8\/9 Platinum Theme, including a 1px black shadow and working pressed\u2026","rel":"","context":"In &quot;Themes&quot;","block_context":{"text":"Themes","link":"https:\/\/monodes.com\/predaelli\/category\/themes\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/01\/code-new-roman-font-2-big.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/01\/code-new-roman-font-2-big.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/01\/code-new-roman-font-2-big.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/01\/code-new-roman-font-2-big.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":8046,"url":"https:\/\/monodes.com\/predaelli\/2021\/01\/12\/guida-sosumi-virtualizzare-macos-su-gnu-linux\/","url_meta":{"origin":5920,"position":2},"title":"[Guida] Sosumi: virtualizzare MacOS su GNU\/Linux","author":"Paolo Redaelli","date":"2021-01-12","format":false,"excerpt":"Scopriamo Sosumi, tool per virtualizzare macOS su GNU\/Linux, contenete gi\u00e0 tutto ci\u00f2 che serve per avviarne l'installazione in pochissimi step. Source: [Guida] Sosumi: virtualizzare MacOS su GNU\/Linux Update: sosumi seems to have been abandoned or discuntinued. See https:\/\/www.linuxuprising.com\/2021\/03\/install-macos-big-sur-or-catalina-in.html and https:\/\/github.com\/sickcodes\/Docker-OSX","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7740,"url":"https:\/\/monodes.com\/predaelli\/2020\/11\/14\/il-tuo-computer-non-e-tuo\/","url_meta":{"origin":5920,"position":3},"title":"Il tuo computer non \u00e8 tuo","author":"Paolo Redaelli","date":"2020-11-14","format":false,"excerpt":"Jeffrey\u00a0Paul ha scritto \u00abYour Computer Isn't Yours\u00bb esordendo con It\u2019s here. It happened. Did you notice? I\u2019m speaking, of course, of the world that Richard Stallman predicted in 1997. Si riferiva a \u00abIl diritto a leggere\u00bb. Che era un racconto di fantascienza, ma si sta concretizzando molto molto velocemente. Evitate\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8426,"url":"https:\/\/monodes.com\/predaelli\/2021\/05\/20\/il-tuo-computer-non-e-tuo-aggiornamento\/","url_meta":{"origin":5920,"position":4},"title":"Il tuo computer non \u00e8 tuo (aggiornamento)","author":"Paolo Redaelli","date":"2021-05-20","format":false,"excerpt":"Jeffrey\u00a0Paul ha aggiornato l'articolo che avevo citato a novembre ne \u00abIl tuo computer non \u00e8 tuo\u00bb. Mi piacerebbe tradurlo, ma non sono un bravo traduttore e tempo ne ho pochissimo. Quasi quasi provo ad usare DeepL. Your Computer Isn't Yours 12 November 2020 ( 3897 words, approximately 21 minutes reading\u2026","rel":"","context":"In &quot;Apple&quot;","block_context":{"text":"Apple","link":"https:\/\/monodes.com\/predaelli\/category\/apple\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8848,"url":"https:\/\/monodes.com\/predaelli\/2021\/10\/18\/not-deprecated\/","url_meta":{"origin":5920,"position":5},"title":"Not deprecated","author":"Paolo Redaelli","date":"2021-10-18","format":false,"excerpt":"\u00abIn Kotlin, loops are deprecated.\u00bb\u00a0 That's the title picked by Luc-Antoine Girardin. Of course they are not, in fact he starts the article with Well\u2026 That\u2019s not entirely true. It would not make sense to actually deprecate them as loops have been a part of programming for decades\u2026 They reality\u2026","rel":"","context":"In &quot;Tricks&quot;","block_context":{"text":"Tricks","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/tricks\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/5920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=5920"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/5920\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=5920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=5920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=5920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}