SlideShare a Scribd company logo
1 of 24
Download to read offline
Characterizing the transition to Kotlin
of Android Apps: A Study on F-Droid,
Play Store, and GitHub
Luca Ardito, Riccardo Coppola, Marco Torchiano
Politecnico di Torino, Dipartimento di Automatica e Informatica
3rd International Workshop on App Market Analytics
A brief history of Kotlin
2011: Kotlin appears as a new programming language;
February 2016: first stable release of Kotlin language;
May 2017: Kotlin becomes a first-class language on Android;
October 2017: release 3.0 of Android Studio IDE provides
native support to Kotlin.
May 2019: Kotlin becomes default language for Android programming.
Why migrate to Kotlin?
Kotlin is described as safer and more concise alternative to Java;
Kotlin helps avoid several common Java programming pitfalls;
Kotlin can seamlessly coexist with Java.
Investigate the diffusion and evolution of Kotlin code on open-
source projects hosted on popular app repositories.
Study Goal
RQ1 – Diffusion: What is the adoption of Kotlin on Android
apps available on F-Droid?
RQ2 – Evolution: How have projects on F-Droid evolved from
Java to Kotlin?
RQ3 – Popularity: Does the development with Kotlin have an
influence on the success of released apps?
Study Design – Research Questions
KRL (Kotlin Relative LOCs): number of Kotlin LOCs over the total amount of
production LOCs of the project;
KRF (Kotlin Relative Files): number of Kotlin .kt files over the total amount
of production code files (.kt + .java files);
KFPR (Kotlin-Featuring Projects Ratio): ratio of projects of a set featuring at
least a Kotlin .kt file;
KMPR (Kotlin-Majority Projects Ratio): ratio of projects of a set featuring a
majority of Kotlin LOCs in production code.
Study Design – Diffusion Metrics
KNR (No-Kotlin Relative Releases): ratio of tagged releases without Kotlin
code;
KAR (Kotlin-Adoption Relative Releases): ratio of tagged releases that
featured less than 50% kotlin code;
KMR (Kotlin-Majority Relative Releases): ratio of tagged releases that
featured a majority of Kotlin LOCs;
KOR (Kotlin-Only Relative Releases): ratio of tagged releases that featured
only Kotlin code.
Study Design – Evolution Metrics
Study Design – Selected Popularity Metrics
Average rating
Number of downloads
Number of stars
1. Mining of packages from F-Droid
All F-Droid projects downloaded by Using Selenium with Chromedriver.
All available information (e.g., last version, last update) collected.
Study Design – Research Method
2. Static analysis of F-Droid packages
Analysis with bash scripts to find Kotlin files in source code folders, and
compute the Diffusion metrics.
Study Design – Research Method
3. Mining of app info from the Google Play Store
Search on the PlayStore for packages corresponding to those hosted on
F-Droid.
Extraction of relevant information for each package, e.g. number of
downloads, average rating, date of last update.
Check for correlations between popularity metrics and quantity of Kotlin
code.
Study Design – Research Method
4. GitHub analysis and mining
Search for associations between the projects hosted on F-Droid and
repositories hosted on GitHub;
Manual check in case of multiple repositories with same name,
Scraping of popularity metrics and check of correlations with the amount of
Kotlin code in the repositories.
Study Design – Research Method
5. Static analysis of GitHub Repositories
All repositories are cloned after the filtering phase;
Evolution of the repositories is studied, at release granularity.
Study Design – Research Method
Results - Diffusion
Repository restricted to projects updated on F-Droid or GitHub after
October 2017;
Computation of Diffusion metrics on the most recently updated app
package (RQ1);
Analysis of «abandoned» projects (45-days threshold);
Analysis of projects not abandoned on GitHub to compute Evolution
metrics (RQ2);
Analysis of not abandoned projects to search correlation between Kotlin
adoption and popularity metrics (RQ3).
Study Design – Analysis Method
Results - Diffusion
Number of projects on the considered platforms, with last update after 2017
Results - Diffusion
Diffusion metrics for projects on the considered platforms, with last update
after 2017
Results - Evolution
Average evolution metrics for apps released on GitHub (set of 145 projects;
Avg. lifespan = 862 days, 34.3 releases)
Results - Evolution
Evolution of the KRL metric on the lifespan of GitHub projects featuring Kotlin in the
latest update (set of 145 projects)
Results - Popularity
(a) Average rating on the Play Store
Results - Popularity
(b) Number of downloads from the Play Store
Results - Popularity
(c) Number of Stars of the GitHub project (statistically significant correlation w.
presence of Kotlin code)
Conclusions
Many open-source apps are nowadays written with Kotlin;
Leaders of open source projects interested in migrating their applications to
Kotlin, should know that – when adopted – the language appears to be
preferred to Java;
When considering the alternatives among staying with Java, using Kotlin only
in part, or using mostly Kotlin, no significant impact was observed on user’s
appreciation of the app.
Next Steps
Analysis of all Android repositories on GitHub;
Analysis of programming patterns adopted by developers using Kotlin;
Inspection of Kotlin apps regarding vulnerabilities, defects and testing
procedures;
Sentiment analysis of textual reviews of apps as additional popularity index;
Actionable guidelines to developers for better development with the Kotlin
language.

More Related Content

Similar to Characterizing the transition to Kotlin of Android Apps: A Study on F-Droid, Play Store, and GitHub

Similar to Characterizing the transition to Kotlin of Android Apps: A Study on F-Droid, Play Store, and GitHub (20)

GDSC Info session and Compose Camp.pptx
GDSC Info session and Compose Camp.pptxGDSC Info session and Compose Camp.pptx
GDSC Info session and Compose Camp.pptx
 
Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Droidcon thessaloniki 2015
Droidcon thessaloniki 2015
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for Android
 
The (r)evolution of CI/CD on GitHub
 The (r)evolution of CI/CD on GitHub The (r)evolution of CI/CD on GitHub
The (r)evolution of CI/CD on GitHub
 
Flutter Vs Kotlin: Which One is Best for Developing Cross-platform Applicatio...
Flutter Vs Kotlin: Which One is Best for Developing Cross-platform Applicatio...Flutter Vs Kotlin: Which One is Best for Developing Cross-platform Applicatio...
Flutter Vs Kotlin: Which One is Best for Developing Cross-platform Applicatio...
 
The Rise of Kotlin Ecosystem in the Android App Development Industry.pdf
The Rise of Kotlin Ecosystem in the Android App Development Industry.pdfThe Rise of Kotlin Ecosystem in the Android App Development Industry.pdf
The Rise of Kotlin Ecosystem in the Android App Development Industry.pdf
 
How to Find the Best Kotlin Development Company.pdf
How to Find the Best Kotlin Development Company.pdfHow to Find the Best Kotlin Development Company.pdf
How to Find the Best Kotlin Development Company.pdf
 
Get started with GitHub Copilot.pptx
Get started with GitHub Copilot.pptxGet started with GitHub Copilot.pptx
Get started with GitHub Copilot.pptx
 
Reasons for outsourcing the Kotlin app development company.pdf
Reasons for outsourcing the Kotlin app development company.pdfReasons for outsourcing the Kotlin app development company.pdf
Reasons for outsourcing the Kotlin app development company.pdf
 
Introductory session flutter festival
Introductory session   flutter festivalIntroductory session   flutter festival
Introductory session flutter festival
 
Kotlin tech talk
Kotlin tech talkKotlin tech talk
Kotlin tech talk
 
How does Kotlin app development company simplify android app development.pdf
How does Kotlin app development company simplify android app development.pdfHow does Kotlin app development company simplify android app development.pdf
How does Kotlin app development company simplify android app development.pdf
 
What is Kotlin.pdf
What is Kotlin.pdfWhat is Kotlin.pdf
What is Kotlin.pdf
 
Flutter vs React native vs Native performance.pdf
Flutter vs React native vs Native performance.pdfFlutter vs React native vs Native performance.pdf
Flutter vs React native vs Native performance.pdf
 
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
 
Flutter festival ppt
Flutter festival ppt Flutter festival ppt
Flutter festival ppt
 
pluginandplay-UtrechtJUG.pptx
pluginandplay-UtrechtJUG.pptxpluginandplay-UtrechtJUG.pptx
pluginandplay-UtrechtJUG.pptx
 
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptxKOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
 
Is it better to use Kotlin or Java for mobile app development.pdf
Is it better to use Kotlin or Java for mobile app development.pdfIs it better to use Kotlin or Java for mobile app development.pdf
Is it better to use Kotlin or Java for mobile app development.pdf
 
Kotlin - A Beginner’s Guide__________________
Kotlin - A Beginner’s Guide__________________Kotlin - A Beginner’s Guide__________________
Kotlin - A Beginner’s Guide__________________
 

Recently uploaded

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Recently uploaded (20)

WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
 
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million PeopleWSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in Uganda
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid Environments
 

Characterizing the transition to Kotlin of Android Apps: A Study on F-Droid, Play Store, and GitHub

  • 1. Characterizing the transition to Kotlin of Android Apps: A Study on F-Droid, Play Store, and GitHub Luca Ardito, Riccardo Coppola, Marco Torchiano Politecnico di Torino, Dipartimento di Automatica e Informatica 3rd International Workshop on App Market Analytics
  • 2. A brief history of Kotlin 2011: Kotlin appears as a new programming language; February 2016: first stable release of Kotlin language; May 2017: Kotlin becomes a first-class language on Android; October 2017: release 3.0 of Android Studio IDE provides native support to Kotlin. May 2019: Kotlin becomes default language for Android programming.
  • 3. Why migrate to Kotlin? Kotlin is described as safer and more concise alternative to Java; Kotlin helps avoid several common Java programming pitfalls; Kotlin can seamlessly coexist with Java.
  • 4. Investigate the diffusion and evolution of Kotlin code on open- source projects hosted on popular app repositories. Study Goal
  • 5. RQ1 – Diffusion: What is the adoption of Kotlin on Android apps available on F-Droid? RQ2 – Evolution: How have projects on F-Droid evolved from Java to Kotlin? RQ3 – Popularity: Does the development with Kotlin have an influence on the success of released apps? Study Design – Research Questions
  • 6. KRL (Kotlin Relative LOCs): number of Kotlin LOCs over the total amount of production LOCs of the project; KRF (Kotlin Relative Files): number of Kotlin .kt files over the total amount of production code files (.kt + .java files); KFPR (Kotlin-Featuring Projects Ratio): ratio of projects of a set featuring at least a Kotlin .kt file; KMPR (Kotlin-Majority Projects Ratio): ratio of projects of a set featuring a majority of Kotlin LOCs in production code. Study Design – Diffusion Metrics
  • 7. KNR (No-Kotlin Relative Releases): ratio of tagged releases without Kotlin code; KAR (Kotlin-Adoption Relative Releases): ratio of tagged releases that featured less than 50% kotlin code; KMR (Kotlin-Majority Relative Releases): ratio of tagged releases that featured a majority of Kotlin LOCs; KOR (Kotlin-Only Relative Releases): ratio of tagged releases that featured only Kotlin code. Study Design – Evolution Metrics
  • 8. Study Design – Selected Popularity Metrics Average rating Number of downloads Number of stars
  • 9. 1. Mining of packages from F-Droid All F-Droid projects downloaded by Using Selenium with Chromedriver. All available information (e.g., last version, last update) collected. Study Design – Research Method
  • 10. 2. Static analysis of F-Droid packages Analysis with bash scripts to find Kotlin files in source code folders, and compute the Diffusion metrics. Study Design – Research Method
  • 11. 3. Mining of app info from the Google Play Store Search on the PlayStore for packages corresponding to those hosted on F-Droid. Extraction of relevant information for each package, e.g. number of downloads, average rating, date of last update. Check for correlations between popularity metrics and quantity of Kotlin code. Study Design – Research Method
  • 12. 4. GitHub analysis and mining Search for associations between the projects hosted on F-Droid and repositories hosted on GitHub; Manual check in case of multiple repositories with same name, Scraping of popularity metrics and check of correlations with the amount of Kotlin code in the repositories. Study Design – Research Method
  • 13. 5. Static analysis of GitHub Repositories All repositories are cloned after the filtering phase; Evolution of the repositories is studied, at release granularity. Study Design – Research Method
  • 15. Repository restricted to projects updated on F-Droid or GitHub after October 2017; Computation of Diffusion metrics on the most recently updated app package (RQ1); Analysis of «abandoned» projects (45-days threshold); Analysis of projects not abandoned on GitHub to compute Evolution metrics (RQ2); Analysis of not abandoned projects to search correlation between Kotlin adoption and popularity metrics (RQ3). Study Design – Analysis Method
  • 16. Results - Diffusion Number of projects on the considered platforms, with last update after 2017
  • 17. Results - Diffusion Diffusion metrics for projects on the considered platforms, with last update after 2017
  • 18. Results - Evolution Average evolution metrics for apps released on GitHub (set of 145 projects; Avg. lifespan = 862 days, 34.3 releases)
  • 19. Results - Evolution Evolution of the KRL metric on the lifespan of GitHub projects featuring Kotlin in the latest update (set of 145 projects)
  • 20. Results - Popularity (a) Average rating on the Play Store
  • 21. Results - Popularity (b) Number of downloads from the Play Store
  • 22. Results - Popularity (c) Number of Stars of the GitHub project (statistically significant correlation w. presence of Kotlin code)
  • 23. Conclusions Many open-source apps are nowadays written with Kotlin; Leaders of open source projects interested in migrating their applications to Kotlin, should know that – when adopted – the language appears to be preferred to Java; When considering the alternatives among staying with Java, using Kotlin only in part, or using mostly Kotlin, no significant impact was observed on user’s appreciation of the app.
  • 24. Next Steps Analysis of all Android repositories on GitHub; Analysis of programming patterns adopted by developers using Kotlin; Inspection of Kotlin apps regarding vulnerabilities, defects and testing procedures; Sentiment analysis of textual reviews of apps as additional popularity index; Actionable guidelines to developers for better development with the Kotlin language.