====== Week 2023-W26 in reading ====== ===== Longitudinal Evaluation of Open-Source Software Maintainability ===== Source: [[https://arxiv.org/abs/2003.00447|arXiv:2003.00447]]. ==== Definitions ==== > **Maintainability** is the "degree of effectiveness and efficiency with which a product or system can be modified to improve it, correct it or adapt it to changes in environment, and in requirements". > **Maintenance hotspots**, (...) parts of the source code that are most difficult to maintain. ==== Quotes ==== > You cannot control what you cannot measure. > --- DeMarco, T. (1982). [[https://isbnsearch.org/isbn/9780131717114|Controlling Software Projects; Management, Measurement and Estimation]]. ==== Models ==== - **Maintainability Index** --- a value calculated based on Halstead volume, cyclomatic complexity, and number of source code statements (or lines of code). - **Technical Debt Ratio** --- amount of time required to fix all issues divided by the estimated time to create the software system. Calculated by SonarQube. - **ARiSA Model for Maintainability** --- developed according to [[wp>ISO/IEC 9126|ISO 9126]] standard. It takes into account complexity, structure and design metrics to calculate a value assessing maintainability. The study compared models mentioned above by applying them to 3 FOSS applications (FreeMind, jEdit and TuxGuitar). Further reading about the Maintainability Index: * According to [[https://sourcery.ai/blog/maintainability-index/|Maintainability Index - What is it and where does it fall short?]], MI relies too much on LOC (among other things). * [[https://avandeursen.com/2014/08/29/think-twice-before-using-the-maintainability-index/|Think Twice Before Using the "Maintainability Index"]] mentions research done by "SIG" (Software Improvement Group?) and links to further articles on the topic. My take-away is that while these methods can be useful, they probably won't be for Scala code-bases since branching is often hidden behind higher-order functions. Also, Scala is such an advanced language, that sometimes its own rich feature set adds to the complexity and decreases maintainability. ===== Pluralistic: Tiktok's enshittification (21 Jan 2023) ===== Source: [[https://pluralistic.net/2023/01/21/potemkin-ai/#hey-guys|Pluralistic: Tiktok's enshittification (21 Jan 2023)]] (a //long// read). In this essay, Cory Doctorow describes a life-cycle of an internet platform (not necessarily social media). A platform: - provides value to its users; - abuses users to benefit business customers; - abuses business customers to benefit itself. But along the way, people start depending on the platform so much that they can't leave it even when it becomes barely usable, like when users don't see what they'd subscribed for on Twitter or Facebook, but they see a lot of rubbish they didn't ask for. Right now we see some platforms trying out the last step: * Reddit [[https://arstechnica.com/gadgets/2023/06/reddit-api-changes-are-imminent-heres-whats-happening-to-your-favorite-apps/|changes API pricing]], leading to some applications shutting down. * Twitter [[https://www.nytimes.com/2023/07/01/business/twitter-rate-limit-elon-musk.html|limits numbers of tweets]] users can read daily, supposedly to make [[wp>Web scraping|web scraping]] harder. Decentralised alternative to corporate social-media called [[wp>Fediverse]] has already noticed a huge influx of new users over the recent months and I suspect it will continue.