-
Download raw data: https://www.jetbrains.com/lp/devecosystem-2024/
-
Install DuckDB: https://duckdb.org/
-
Launch DuckDB in the command line:
duckdb
-
Run this query for the 2024 report:
WITH data AS ( SELECT weight, "platform::Mobile" IS NOT NULL AS platform_mobile, "mobile_target_os::Android" IS NOT NULL AS mobile_target_os_Android, "mobile_target_os::Other" IS NOT NULL AS mobile_target_os_Other, "mobile_target_os::iOS" IS NOT NULL AS mobile_target_os_iOS, "mobile_os_how::I use cross-platform technologies and frameworks (Xamarin, Apache Cordova, Ionic, etc.)" IS NOT NULL AS mobile_os_how_I_use_crossplatform_frmwrk, "mobile_os_how::I use native tools (Swift for iOS, Kotlin for Android, etc.)" IS NOT NULL AS mobile_os_how_I_use_native_tools, "mobile_crossplatform_frmwrk::Apache Flex" IS NOT NULL AS mobile_crossplatform_frmwrk_Apache_Flex, "mobile_crossplatform_frmwrk::Cordova (formerly PhoneGap)" IS NOT NULL AS mobile_crossplatform_frmwrk_Cordova, "mobile_crossplatform_frmwrk::Other" IS NOT NULL AS mobile_crossplatform_frmwrk_Other, "mobile_crossplatform_frmwrk::Flutter" IS NOT NULL AS mobile_crossplatform_frmwrk_Flutter, "mobile_crossplatform_frmwrk::Ionic" IS NOT NULL AS mobile_crossplatform_frmwrk_Ionic, "mobile_crossplatform_frmwrk::Kivy" IS NOT NULL AS mobile_crossplatform_frmwrk_Kivy, "mobile_crossplatform_frmwrk::Kotlin Multiplatform" IS NOT NULL AS mobile_crossplatform_frmwrk_Kotlin_Multiplatform, "mobile_crossplatform_frmwrk::NativeScript" IS NOT NULL AS mobile_crossplatform_frmwrk_NativeScript, "mobile_crossplatform_frmwrk::PhoneGap" IS NOT NULL AS mobile_crossplatform_frmwrk_PhoneGap, "mobile_crossplatform_frmwrk::React Native" IS NOT NULL AS mobile_crossplatform_frmwrk_React_Native, "mobile_crossplatform_frmwrk::Unity" IS NOT NULL AS mobile_crossplatform_frmwrk_Unity, "mobile_crossplatform_frmwrk::Xamarin" IS NOT NULL AS mobile_crossplatform_frmwrk_Xamarin, -- TODO: Update this path! FROM '/path/to/Developer Ecosystem Survey 2024_ Raw data sharing/2024_sharing_data_outside.csv' ), summed_crossplatform_data AS ( SELECT COUNT(*) respondents, SUM(weight) AS total_weight, SUM(IF(mobile_crossplatform_frmwrk_Apache_Flex, weight, 0)) AS total_mobile_crossplatform_frmwrk_Apache_Flex_weight, SUM(IF(mobile_crossplatform_frmwrk_Cordova, weight, 0)) AS total_mobile_crossplatform_frmwrk_Cordova_weight, SUM(IF(mobile_crossplatform_frmwrk_Other, weight, 0)) AS total_mobile_crossplatform_frmwrk_Other_weight, SUM(IF(mobile_crossplatform_frmwrk_Flutter, weight, 0)) AS total_mobile_crossplatform_frmwrk_Flutter_weight, SUM(IF(mobile_crossplatform_frmwrk_Ionic, weight, 0)) AS total_mobile_crossplatform_frmwrk_Ionic_weight, SUM(IF(mobile_crossplatform_frmwrk_Kivy, weight, 0)) AS total_mobile_crossplatform_frmwrk_Kivy_weight, SUM(IF(mobile_crossplatform_frmwrk_Kotlin_Multiplatform, weight, 0)) AS total_mobile_crossplatform_frmwrk_Kotlin_Multiplatform_weight, SUM(IF(mobile_crossplatform_frmwrk_NativeScript, weight, 0)) AS total_mobile_crossplatform_frmwrk_NativeScript_weight, SUM(IF(mobile_crossplatform_frmwrk_PhoneGap, weight, 0)) AS total_mobile_crossplatform_frmwrk_PhoneGap_weight, SUM(IF(mobile_crossplatform_frmwrk_React_Native, weight, 0)) AS total_mobile_crossplatform_frmwrk_React_Native_weight, SUM(IF(mobile_crossplatform_frmwrk_Unity, weight, 0)) AS total_mobile_crossplatform_frmwrk_Unity_weight, SUM(IF(mobile_crossplatform_frmwrk_Xamarin, weight, 0)) AS total_mobile_crossplatform_frmwrk_Xamarin_weight, FROM data WHERE mobile_os_how_I_use_crossplatform_frmwrk = true ) SELECT total_mobile_crossplatform_frmwrk_Apache_Flex_weight / total_weight * 100 AS Apache_Flex_pct, total_mobile_crossplatform_frmwrk_Cordova_weight / total_weight * 100 AS Cordova_pct, total_mobile_crossplatform_frmwrk_Other_weight / total_weight * 100 AS Other_pct, total_mobile_crossplatform_frmwrk_Flutter_weight / total_weight * 100 AS Flutter_pct, total_mobile_crossplatform_frmwrk_Ionic_weight / total_weight * 100 AS Ionic_pct, total_mobile_crossplatform_frmwrk_Kivy_weight / total_weight * 100 AS Kivy_pct, total_mobile_crossplatform_frmwrk_Kotlin_Multiplatform_weight / total_weight * 100 AS Kotlin_Multiplatform_pct, total_mobile_crossplatform_frmwrk_NativeScript_weight / total_weight * 100 AS NativeScript_pct, total_mobile_crossplatform_frmwrk_PhoneGap_weight / total_weight * 100 AS PhoneGap_pct, total_mobile_crossplatform_frmwrk_React_Native_weight / total_weight * 100 AS React_Native_pct, total_mobile_crossplatform_frmwrk_Unity_weight / total_weight * 100 AS Unity_pct, total_mobile_crossplatform_frmwrk_Xamarin_weight / total_weight * 100 AS Xamarin_pct, FROM summed_crossplatform_data ;
-
Run this query for the 2023 report:
WITH data AS ( SELECT weight, "target_platforms::Mobile" IS NOT NULL AS target_platforms_Mobile, "mobile_target_os::Android" IS NOT NULL AS mobile_target_os_Android, "mobile_target_os::Other" IS NOT NULL AS mobile_target_os_Other, "mobile_target_os::iOS" IS NOT NULL AS mobile_target_os_iOS, "mobile_os_how::I use cross-platform technologies and frameworks (Xamarin, Apache Cordova, Ionic, etc.)" IS NOT NULL AS mobile_os_how_I_use_crossplatform_frmwrk, "mobile_os_how::I use native tools (Swift / Objective-C for iOS, Kotlin for Android, etc.)" IS NOT NULL AS mobile_os_how_I_use_native_tools, "mobile_crossplatform_frmwrk::Apache Flex" IS NOT NULL AS mobile_crossplatform_frmwrk_Apache_Flex, "mobile_crossplatform_frmwrk::Cordova" IS NOT NULL AS mobile_crossplatform_frmwrk_Cordova, "mobile_crossplatform_frmwrk::Other" IS NOT NULL AS mobile_crossplatform_frmwrk_Other, "mobile_crossplatform_frmwrk::Flutter" IS NOT NULL AS mobile_crossplatform_frmwrk_Flutter, "mobile_crossplatform_frmwrk::Ionic" IS NOT NULL AS mobile_crossplatform_frmwrk_Ionic, "mobile_crossplatform_frmwrk::Kivy" IS NOT NULL AS mobile_crossplatform_frmwrk_Kivy, "mobile_crossplatform_frmwrk::Kotlin Multiplatform" IS NOT NULL AS mobile_crossplatform_frmwrk_Kotlin_Multiplatform, "mobile_crossplatform_frmwrk::NativeScript" IS NOT NULL AS mobile_crossplatform_frmwrk_NativeScript, "mobile_crossplatform_frmwrk::PhoneGap" IS NOT NULL AS mobile_crossplatform_frmwrk_PhoneGap, "mobile_crossplatform_frmwrk::React Native" IS NOT NULL AS mobile_crossplatform_frmwrk_React_Native, "mobile_crossplatform_frmwrk::Unity" IS NOT NULL AS mobile_crossplatform_frmwrk_Unity, "mobile_crossplatform_frmwrk::Xamarin" IS NOT NULL AS mobile_crossplatform_frmwrk_Xamarin, FROM '/Users/loicsharma/Downloads/2023_sharing_data_outside.csv' ), summed_crossplatform_data AS ( SELECT COUNT(*) respondents, SUM(weight) AS total_weight, SUM(IF(mobile_crossplatform_frmwrk_Apache_Flex, weight, 0)) AS total_mobile_crossplatform_frmwrk_Apache_Flex_weight, SUM(IF(mobile_crossplatform_frmwrk_Cordova, weight, 0)) AS total_mobile_crossplatform_frmwrk_Cordova_weight, SUM(IF(mobile_crossplatform_frmwrk_Other, weight, 0)) AS total_mobile_crossplatform_frmwrk_Other_weight, SUM(IF(mobile_crossplatform_frmwrk_Flutter, weight, 0)) AS total_mobile_crossplatform_frmwrk_Flutter_weight, SUM(IF(mobile_crossplatform_frmwrk_Ionic, weight, 0)) AS total_mobile_crossplatform_frmwrk_Ionic_weight, SUM(IF(mobile_crossplatform_frmwrk_Kivy, weight, 0)) AS total_mobile_crossplatform_frmwrk_Kivy_weight, SUM(IF(mobile_crossplatform_frmwrk_Kotlin_Multiplatform, weight, 0)) AS total_mobile_crossplatform_frmwrk_Kotlin_Multiplatform_weight, SUM(IF(mobile_crossplatform_frmwrk_NativeScript, weight, 0)) AS total_mobile_crossplatform_frmwrk_NativeScript_weight, SUM(IF(mobile_crossplatform_frmwrk_PhoneGap, weight, 0)) AS total_mobile_crossplatform_frmwrk_PhoneGap_weight, SUM(IF(mobile_crossplatform_frmwrk_React_Native, weight, 0)) AS total_mobile_crossplatform_frmwrk_React_Native_weight, SUM(IF(mobile_crossplatform_frmwrk_Unity, weight, 0)) AS total_mobile_crossplatform_frmwrk_Unity_weight, SUM(IF(mobile_crossplatform_frmwrk_Xamarin, weight, 0)) AS total_mobile_crossplatform_frmwrk_Xamarin_weight, FROM data WHERE mobile_os_how_I_use_crossplatform_frmwrk = true ) SELECT total_mobile_crossplatform_frmwrk_Apache_Flex_weight / total_weight * 100 AS Apache_Flex_pct, total_mobile_crossplatform_frmwrk_Cordova_weight / total_weight * 100 AS Cordova_pct, total_mobile_crossplatform_frmwrk_Other_weight / total_weight * 100 AS Other_pct, total_mobile_crossplatform_frmwrk_Flutter_weight / total_weight * 100 AS Flutter_pct, total_mobile_crossplatform_frmwrk_Ionic_weight / total_weight * 100 AS Ionic_pct, total_mobile_crossplatform_frmwrk_Kivy_weight / total_weight * 100 AS Kivy_pct, total_mobile_crossplatform_frmwrk_Kotlin_Multiplatform_weight / total_weight * 100 AS Kotlin_Multiplatform_pct, total_mobile_crossplatform_frmwrk_NativeScript_weight / total_weight * 100 AS NativeScript_pct, total_mobile_crossplatform_frmwrk_PhoneGap_weight / total_weight * 100 AS PhoneGap_pct, total_mobile_crossplatform_frmwrk_React_Native_weight / total_weight * 100 AS React_Native_pct, total_mobile_crossplatform_frmwrk_Unity_weight / total_weight * 100 AS Unity_pct, total_mobile_crossplatform_frmwrk_Xamarin_weight / total_weight * 100 AS Xamarin_pct, FROM summed_crossplatform_data ;
Last active
April 30, 2025 18:56
-
-
Save loic-sharma/1b9388fb4a7abc3b2a8c14976a727059 to your computer and use it in GitHub Desktop.
JetBrains Survey: Crossplatform Framework Usage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Year | Apache_Flex_pct | Cordova_pct | Other_pct | Flutter_pct | Ionic_pct | Kivy_pct | Kotlin_Multiplatform_pct | NativeScript_pct | PhoneGap_pct | React_Native_pct | Unity_pct | Xamarin_pct | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2024 | 1.7808749291874746 | 6.806587279285443 | 13.161921971895588 | 42.282098970998746 | 11.336908183261873 | 1.242729680189626 | 6.514545200068758 | 3.278793140131249 | 1.5769608647336693 | 38.51763672891841 | 9.308370582464713 | 8.457156306501053 | |
2023 | 1.8174896270281298 | 9.799609159390876 | 11.937024445597567 | 46.211868761516534 | 9.178085800980103 | 0.6994524129448879 | 3.7922743242327077 | 1.9083325316909279 | 2.0067525526876886 | 34.87420656634701 | 10.330980594867476 | 8.21496263752461 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment