From fa3d66f4832da997454ed76b39766047769f37f8 Mon Sep 17 00:00:00 2001 From: mcgarj <117986969+mcgarj@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:52:03 +0100 Subject: [PATCH 1/9] docs: adds initial section for kotlin/swift --- .../programming-languages.html.md.erb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index 7e4e3c34..2fefdb6e 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -101,6 +101,26 @@ We used Scala in the early days of GDS. GOV.UK Licensing is the only remaining application written in Scala but we've found it hard to support because of a lack of skills in GDS. Do not use Scala for new projects. +## Mobile Development + +For developing mobile apps, we use: +- [Swift](https://www.swift.org/) for [iOS](https://developer.apple.com/) +- [Kotlin](https://developer.android.com/kotlin) for [Android](https://developer.android.com/). + +To give users the expected experience on their respective platform, we prefer to use the native languages over frameworks such as Flutter or .NET MAUI. + +### Swift + +The default Swift version is generally tied to the version of Xcode you're using, i.e Xcode 16 defaults to Swift 6. +The version of Swift used will generally be the most recent one when work on the project begins. + +The iOS target should also be considered - for government apps, a range of n - 5 or n - 3 is generally a good starting point (n being the latest major release of iOS) +This should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. + +### Kotlin + +// TODO: Fill in specific Kotlin/Android Studio versions/ OS targets? + ## Using other languages There will be sensible reasons to not follow the above guidance on languages. From 7f8aed55026a40d3d3348599c38c882aa2d25fac Mon Sep 17 00:00:00 2001 From: mcgarj Date: Thu, 24 Oct 2024 16:03:50 +0100 Subject: [PATCH 2/9] docs: adds info to Kotlin --- source/standards/programming-languages.html.md.erb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index 2fefdb6e..895d05e3 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -107,19 +107,23 @@ For developing mobile apps, we use: - [Swift](https://www.swift.org/) for [iOS](https://developer.apple.com/) - [Kotlin](https://developer.android.com/kotlin) for [Android](https://developer.android.com/). -To give users the expected experience on their respective platform, we prefer to use the native languages over frameworks such as Flutter or .NET MAUI. +To give users the expected experience on their respective platform, we prefer to use the native languages over cross-platform solutions. ### Swift -The default Swift version is generally tied to the version of Xcode you're using, i.e Xcode 16 defaults to Swift 6. -The version of Swift used will generally be the most recent one when work on the project begins. +When starting a new app project, you'll likely want to use the most recent version of Swift which will be installed with Xcode. + +Deciding on which iOS version you want to support is a more important version and is a tradeoff between making the app accessible to as many devices as possible without compromising security. The iOS target should also be considered - for government apps, a range of n - 5 or n - 3 is generally a good starting point (n being the latest major release of iOS) This should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. ### Kotlin -// TODO: Fill in specific Kotlin/Android Studio versions/ OS targets? +When satrting a new app, you'll likely want to use the latest version of Kotlin, which is installed along with Android Studio. + +It will be more important to decide on which versions of Android you want to support - as with iOS above, it is a tradeoff between trying to support as many devices as possible and keeping the app accessible without compromising security. +This is also made more difficult on Android due to the range of devices available. ## Using other languages From 07bda726d8b0258a0cdeafaa383c778e6131b3fb Mon Sep 17 00:00:00 2001 From: mcgarj Date: Mon, 18 Nov 2024 08:19:14 +0000 Subject: [PATCH 3/9] chore: fixing typo Co-authored-by: William Palmer --- source/standards/programming-languages.html.md.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index 895d05e3..c6a3ce19 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -120,7 +120,7 @@ This should be discussed during planning and investigation as certain iOS featur ### Kotlin -When satrting a new app, you'll likely want to use the latest version of Kotlin, which is installed along with Android Studio. +When starting a new app, you'll likely want to use the latest version of Kotlin, which is installed along with Android Studio. It will be more important to decide on which versions of Android you want to support - as with iOS above, it is a tradeoff between trying to support as many devices as possible and keeping the app accessible without compromising security. This is also made more difficult on Android due to the range of devices available. From 78a2ae22de964f6aaeef85b567c0146679a01c29 Mon Sep 17 00:00:00 2001 From: mcgarj Date: Mon, 18 Nov 2024 08:48:27 +0000 Subject: [PATCH 4/9] docs: updating targeting OS based on comments --- source/standards/programming-languages.html.md.erb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index c6a3ce19..da4bee3e 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -113,17 +113,16 @@ To give users the expected experience on their respective platform, we prefer to When starting a new app project, you'll likely want to use the most recent version of Swift which will be installed with Xcode. -Deciding on which iOS version you want to support is a more important version and is a tradeoff between making the app accessible to as many devices as possible without compromising security. - -The iOS target should also be considered - for government apps, a range of n - 5 or n - 3 is generally a good starting point (n being the latest major release of iOS) -This should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. +The targetted version of iOS should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. +It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot afford the latest devices with the most recent OS, without compromising security. ### Kotlin When starting a new app, you'll likely want to use the latest version of Kotlin, which is installed along with Android Studio. -It will be more important to decide on which versions of Android you want to support - as with iOS above, it is a tradeoff between trying to support as many devices as possible and keeping the app accessible without compromising security. -This is also made more difficult on Android due to the range of devices available. +The targetted version of Android should be discussed during planning and investigation as certain OS features may not be available in earlier versions which could be crucial to your app's behaviour. +It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot afford the latest devices with the most recent OS, without compromising security. +This is particularly important on Android with the range of devices available ## Using other languages From 4642fbeff5fb65d30a22e0cd83795fc3621b4896 Mon Sep 17 00:00:00 2001 From: mcgarj Date: Wed, 20 Nov 2024 08:51:42 +0000 Subject: [PATCH 5/9] docs: tweaking text based on feedback --- source/standards/programming-languages.html.md.erb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index da4bee3e..a64449ce 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -113,16 +113,20 @@ To give users the expected experience on their respective platform, we prefer to When starting a new app project, you'll likely want to use the most recent version of Swift which will be installed with Xcode. -The targetted version of iOS should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. -It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot afford the latest devices with the most recent OS, without compromising security. +The targetted version of iOS should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. +For example, a good starting point for government apps would be a range of n - 5 or n - 3 (n being the latest major release of iOS). + +It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot access the latest devices with the most recent OS, without compromising security. ### Kotlin When starting a new app, you'll likely want to use the latest version of Kotlin, which is installed along with Android Studio. The targetted version of Android should be discussed during planning and investigation as certain OS features may not be available in earlier versions which could be crucial to your app's behaviour. -It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot afford the latest devices with the most recent OS, without compromising security. -This is particularly important on Android with the range of devices available +It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot access the latest devices with the most recent OS, without compromising security. +This is particularly important on Android with the range of devices available. + +Android specify a [minimum version](https://developer.android.com/google/play/requirements/target-sdk) which must be supported in order for the app to be published to the Google Play Store. ## Using other languages From 63e602b828bfc7501e235d1c16ee47a3f1d90914 Mon Sep 17 00:00:00 2001 From: mcgarj Date: Thu, 21 Nov 2024 14:41:07 +0000 Subject: [PATCH 6/9] docs: updates Android Studio/Kotlin info per comment Co-authored-by: jonnyandrew <4940864+jonnyandrew@users.noreply.github.com> --- source/standards/programming-languages.html.md.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index a64449ce..69bf1e9d 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -120,7 +120,7 @@ It is important that your app remains as accessible to as many devices and users ### Kotlin -When starting a new app, you'll likely want to use the latest version of Kotlin, which is installed along with Android Studio. +Prefer to develop Android apps using the latest stable version of Kotlin. The targetted version of Android should be discussed during planning and investigation as certain OS features may not be available in earlier versions which could be crucial to your app's behaviour. It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot access the latest devices with the most recent OS, without compromising security. From 7b21e3399421cdff0eebdcb8841096b4f0086ca0 Mon Sep 17 00:00:00 2001 From: mcgarj Date: Thu, 21 Nov 2024 14:43:22 +0000 Subject: [PATCH 7/9] chore: updates link to Kotlin language --- source/standards/programming-languages.html.md.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index 69bf1e9d..a89b9d3d 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -105,7 +105,7 @@ of skills in GDS. Do not use Scala for new projects. For developing mobile apps, we use: - [Swift](https://www.swift.org/) for [iOS](https://developer.apple.com/) -- [Kotlin](https://developer.android.com/kotlin) for [Android](https://developer.android.com/). +- [Kotlin](https://kotlinlang.org/) for [Android](https://developer.android.com/). To give users the expected experience on their respective platform, we prefer to use the native languages over cross-platform solutions. From ab3e169e285de3d630d1524532d715f53f9a833f Mon Sep 17 00:00:00 2001 From: mcgarj Date: Thu, 28 Nov 2024 10:15:10 +0000 Subject: [PATCH 8/9] chore: removes lines about iOS/Android versions --- source/standards/programming-languages.html.md.erb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index a89b9d3d..b2736ddd 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -113,21 +113,10 @@ To give users the expected experience on their respective platform, we prefer to When starting a new app project, you'll likely want to use the most recent version of Swift which will be installed with Xcode. -The targetted version of iOS should be discussed during planning and investigation as certain iOS features may not be available in earlier versions which could be crucial to your app's behaviour. -For example, a good starting point for government apps would be a range of n - 5 or n - 3 (n being the latest major release of iOS). - -It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot access the latest devices with the most recent OS, without compromising security. - ### Kotlin Prefer to develop Android apps using the latest stable version of Kotlin. -The targetted version of Android should be discussed during planning and investigation as certain OS features may not be available in earlier versions which could be crucial to your app's behaviour. -It is important that your app remains as accessible to as many devices and users as possible, especially those who cannot access the latest devices with the most recent OS, without compromising security. -This is particularly important on Android with the range of devices available. - -Android specify a [minimum version](https://developer.android.com/google/play/requirements/target-sdk) which must be supported in order for the app to be published to the Google Play Store. - ## Using other languages There will be sensible reasons to not follow the above guidance on languages. From 96df31ffd9cbda72f5ff63cb262a97bb4f2f793c Mon Sep 17 00:00:00 2001 From: mcgarj Date: Thu, 28 Nov 2024 10:19:00 +0000 Subject: [PATCH 9/9] chore: fixed Android/Kotlin phrasing --- source/standards/programming-languages.html.md.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/standards/programming-languages.html.md.erb b/source/standards/programming-languages.html.md.erb index b2736ddd..2432afc3 100644 --- a/source/standards/programming-languages.html.md.erb +++ b/source/standards/programming-languages.html.md.erb @@ -115,7 +115,7 @@ When starting a new app project, you'll likely want to use the most recent versi ### Kotlin -Prefer to develop Android apps using the latest stable version of Kotlin. +We prefer to develop Android apps using the latest stable version of Kotlin. ## Using other languages