├── .github
├── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── FEATURE_REQUEST.yml
│ └── BUG_REPORT.yml
├── pull_request_template.md
└── workflows
│ └── deploy.yml
├── src
├── vite-env.d.ts
├── css
│ ├── App.css
│ ├── Section.css
│ ├── WorkflowAnalysis.css
│ ├── GuidePage.css
│ ├── Dashboard.css
│ ├── Guide.css
│ ├── Recommendation.css
│ ├── Sidebar.css
│ ├── Link.css
│ ├── fonts.css
│ ├── NotFound.css
│ ├── fade-in.css
│ ├── Guides.css
│ └── Header.css
├── main.tsx
├── components
│ ├── pages
│ │ ├── NotFound.tsx
│ │ ├── Guides
│ │ │ ├── GuidePage.tsx
│ │ │ ├── GuideMenuItem.tsx
│ │ │ ├── GuidePages.tsx
│ │ │ ├── GuideMenu.tsx
│ │ │ ├── TypesOfSustainabilityGuide.tsx
│ │ │ ├── EnergyConsumptionGuide.tsx
│ │ │ └── InclusiveLanguageGuide.tsx
│ │ ├── Dashboard
│ │ │ ├── DashboardInfo.tsx
│ │ │ ├── DashboardComponents.tsx
│ │ │ └── Dashboard.tsx
│ │ └── Home.tsx
│ ├── metrics
│ │ ├── Language
│ │ │ ├── LanguageScores.ts
│ │ │ ├── ProgrammingLanguage.tsx
│ │ │ ├── LanguageAdvise.tsx
│ │ │ ├── LanguageTooltips.ts
│ │ │ └── LanguagePiechart.tsx
│ │ ├── General
│ │ │ └── Info.tsx
│ │ ├── Sentiment
│ │ │ ├── Explanation.tsx
│ │ │ ├── analysis.ts
│ │ │ └── IssuesSentiment.tsx
│ │ ├── Inclusivity
│ │ │ ├── Recommendation.tsx
│ │ │ ├── Inclusive.tsx
│ │ │ └── checkLanguage.ts
│ │ ├── Contributors
│ │ │ ├── ContributorLogic.ts
│ │ │ ├── Contributors.tsx
│ │ │ └── ContributorPiechart.tsx
│ │ ├── Workflows
│ │ │ └── WorkflowAnalysis.tsx
│ │ └── Governance
│ │ │ └── Governance.tsx
│ └── structure
│ │ ├── DropDown.tsx
│ │ ├── Section.tsx
│ │ ├── Header.tsx
│ │ ├── Sidebar.tsx
│ │ └── SearchBar.tsx
├── App.tsx
├── assets
│ └── react.svg
└── logic
│ └── fetcher.ts
├── public
├── fonts
│ ├── Lora-Regular.ttf
│ ├── PlayfairDisplay-Bold.ttf
│ ├── PlayfairDisplay-Black.ttf
│ └── PlayfairDisplay-Regular.ttf
├── vite.svg
└── susie.svg
├── vite.config.ts
├── tsconfig.node.json
├── .gitignore
├── index.html
├── tsconfig.json
├── susie-changelog-template.hbs
├── package.json
├── CONTRIBUTING.md
├── README.md
├── CODE_OF_CONDUCT.md
└── CHANGELOG.md
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
11 | Sorry, we could not find the {props.item} you were looking for... 💚 12 |
13 |
2 |
6 |
33 | Did you know that your choice of programming language can have an
34 | enviromental impact? 🌱
35 |
Read more about the topic in{" "}
36 |
42 | this guide
43 | {" "}
44 | or look at what Susie has found:
45 |
| Word | 35 |Score | 36 |
|---|---|
| {Object.keys(calculation)[0]} | 42 |{Object.values(calculation)[0]} | 43 |
2 |
6 |
31 | {props.replacements.length > 0 32 | ? 'The term "' + 33 | props.title + 34 | '" was located in the following places:' 35 | : "Located in the following places:"} 36 |
37 |Let's see how often builds are failing.. 🔭
76 | {props.statusses.length > 0 ? progressBar : unknownProgressBar} 77 |78 | Why? Running workflows locally before executing them remotely is 79 | beneficial for saving on energy usage: executing workflows remotely 80 | involves utilizing resources such as servers and data centers that 81 | require a significant amount of energy compared to running them locally. 82 |
83 | {props.statusses.length > 0 && workflowSuggestion} 84 | > 85 | ); 86 | } 87 | 88 | export default WorkflowAnalysis; 89 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |
6 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
3 |
7 |
68 | The pony factor is the number of top contributors covering 50% or more 69 | of all time contributions ( 70 | 76 | source 77 | 78 | ). 79 |
80 |Number of contributors as the factor of the biggest contributor.
86 |89 | Detect file ownership, for example, by looking at developer aliases 90 | and trace change history ( 91 | 97 | source 98 | 99 | ). Help us implement this by contributing to our{" "} 100 | 106 | open-source repository 107 | 108 | ! 109 |
110 |19 | {" "} 20 | Inclusive language is language that is free from words, phrases or tones 21 | that reflect prejudiced, stereotyped or discriminatory views of 22 | particular people or groups. It is also language that does not 23 | deliberately or inadvertently exclude people from being seen as part of 24 | a group. 25 |
26 |27 | Susie checks your repository for common terms that may be considered as 28 | not inclusive, though it is not an exhaustive list. To learn more about 29 | inclusive language and this metric, please visit{" "} 30 | 36 | our guide 37 | 38 | . 39 |
40 | {children} 41 |88 | We found the following terms that may be considered as not 89 | inclusive and have provided some suggestions for replacements. 90 | Click on a term to see where it was found. 91 |
92 | {Object.entries(recommendations.terms).map( 93 | ([title, { replacements, locations }]) => ( 94 |97 | {isMobile 98 | ? "How sustainable is your repository?" 99 | : "How sustainable is your GitHub repository?"} 100 |
101 |134 | {isMobile 135 | ? "Learn more about sustainability!" 136 | : "Perhaps you want to learn more about sustainability? Look no further!"} 137 |
138 | 145 |14 | When we talk about sustainability, we usually think about 15 | environmental sustainability - and for good reason! But did you know 16 | there are actually four more forms of sustainability that are just 17 | as important? Let's dive into the five different types of 18 | sustainability: 19 |
20 |22 | In software development, environmental sustainability is all about 23 | reducing the carbon footprint of our digital systems. This can 24 | include optimizing code to reduce energy consumption, using 25 | renewable energy to power data centers, and designing systems that 26 | can scale sustainably. By practicing environmental sustainability 27 | in software development, we can help ensure a healthy planet for 28 | generations to come. 29 |
30 |33 | Social sustainability in software development focuses on creating 34 | systems that are accessible and inclusive for all users. This 35 | includes promoting diversity and inclusion in the tech industry, 36 | designing user interfaces that are easy to use for people with 37 | different abilities, and ensuring that digital services are 38 | available to people regardless of their socio-economic status. 39 | Social sustainability also involves creating safe and healthy 40 | online communities where people can thrive. 41 |
42 |45 | Individual sustainability in software development is all about 46 | taking care of the people who create and maintain our digital 47 | systems. It's about promoting work-life balance, managing stress, 48 | and prioritizing mental and physical health. This can involve 49 | practices like mindfulness, meditation, and exercise. By focusing 50 | on individual sustainability, we can create a more resilient and 51 | productive workforce that is better equipped to tackle the 52 | challenges of sustainable software development. 53 |
54 |57 | Economic sustainability in software development is about creating 58 | business models that are financially viable in the long term, 59 | while also considering the impact on society and the environment. 60 | This can involve implementing sustainable procurement practices, 61 | promoting fair labor standards in the tech industry, and ensuring 62 | that digital systems are designed to support local economies. By 63 | practicing economic sustainability, we can create a more equitable 64 | and sustainable tech industry that benefits everyone. 65 |
66 |69 | Technical sustainability in software development is all about 70 | maintaining the digital infrastructure and systems that support 71 | our daily lives. This can include everything from optimizing code 72 | for performance and reliability to designing systems that can 73 | adapt to changing needs over time. By practicing technical 74 | sustainability, we can ensure that our digital systems are 75 | reliable, efficient, and resilient, while also reducing the 76 | environmental impact of our digital footprint. 77 |
78 |81 | By understanding and practicing all five types of sustainability in 82 | the context of software development, we can create a more resilient, 83 | equitable, and sustainable tech industry for everyone. 84 |
85 | 86 |
12 | Programming languages can vary significantly in terms of their
13 | energy consumption. As such, understanding the energy consumption of
14 | programming languages is crucial to reduce the carbon footprint and
15 | promote sustainable practices in software development. In this
16 | table, an overview of the energy consumption scores for different
17 | programming languages is provided.
18 |
19 | Susie uses these scores to give advice on the programming language
20 | usage in a repository. Hopefully, you can also learn something from
21 | it and create energy efficient projects in the future! 🔮
22 |
23 |
| Programming Language | 28 |Energy Consumption Score | 29 |
|---|---|
| C | 34 |1.00 | 35 |
| Rust | 38 |1.03 | 39 |
| C++ | 42 |1.34 | 43 |
| Ada | 46 |1.70 | 47 |
| Java | 50 |1.98 | 51 |
| Pascal | 54 |2.14 | 55 |
| Chapel | 58 |2.18 | 59 |
| Lisp | 62 |2.27 | 63 |
| Ocaml | 66 |2.40 | 67 |
| Fortran | 70 |2.52 | 71 |
| Swift | 74 |2.79 | 75 |
| Haskell | 78 |3.10 | 79 |
| C# | 82 |3.14 | 83 |
| Go | 86 |3.23 | 87 |
| Dart | 90 |3.83 | 91 |
| F# | 94 |4.13 | 95 |
| JavaScript | 98 |4.45 | 99 |
| Racket | 102 |7.91 | 103 |
| TypeScript | 106 |21.50 | 107 |
| Hack | 110 |24.02 | 111 |
| PHP | 114 |29.30 | 115 |
| Erlang | 118 |42.23 | 119 |
| Lua | 122 |45.98 | 123 |
| Jruby | 126 |46.54 | 127 |
| Ruby | 130 |69.91 | 131 |
| Python | 134 |75.88 | 135 |
| Perl | 138 |79.58 | 139 |
143 | Source: 144 | 150 | {" "} 151 | https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf.{" "} 152 | 153 |
154 | 155 |64 | ⚠️ Experimental: This metric is not accurate due to software 65 | developer jargon being substantially different than the context most 66 | sentiment analysis packages consider. Therefore, this metric might 67 | only be relevant for few repositories. Please consider contributing 68 | to our{" "} 69 | 75 | open-source repository 76 | {" "} 77 | to improve it. 78 |
79 |81 | We have analyzed the sentiment in your issues and have found the 82 | following issues that may be considered as positive or negative. 83 | Click on an issue to see the sentiment analysis. ( 84 | 90 | Source 91 | 92 | ) 93 |
94 | {/* Create a Badge with the amount of positive sentiments */} 95 |108 | {Object.keys(positiveSentiments.sentiments).length > 0 109 | ? "The list below shows the issues that have the highest positive sentiment." 110 | : ""} 111 |
112 | {Object.entries(positiveSentiments.sentiments).map( 113 | ([title, { score, calculation }]) => ( 114 |136 | {Object.keys(negativeSentiments.sentiments).length > 0 137 | ? "The list below shows the issues that have the lowest negative sentiment." 138 | : ""} 139 |
140 | {/* Here is the list of all negative sentiments */} 141 | {Object.entries(negativeSentiments.sentiments).map( 142 | ([title, { score, calculation }]) => ( 143 |13 | Inclusive language is crucial in GitHub repositories because it 14 | helps to create a welcoming and respectful environment for all 15 | contributors, regardless of their background or identity. Using 16 | inclusive language means choosing words and phrases that do not 17 | exclude or marginalize certain groups of people. This includes 18 | avoiding the use of gendered pronouns or terms that may be offensive 19 | or insensitive to particular cultures or identities. By using 20 | inclusive language in GitHub repositories, developers can foster a 21 | more diverse and inclusive community that encourages participation 22 | from individuals of all backgrounds, ultimately leading to better 23 | collaboration, innovation, and success of the project. Additionally, 24 | using inclusive language can also help to mitigate the risk of 25 | misunderstandings or conflicts that may arise from insensitive 26 | language use. 27 |
28 |29 | The table below can be used as a reference for conducting inclusive 30 | language checks in GitHub repositories. It provides examples of 31 | common terms and phrases that may be considered insensitive or 32 | exclusionary to certain groups of people. By using this table as a 33 | guide, individuals can be more mindful of their language choices and 34 | make conscious efforts to use language that is inclusive and 35 | respectful to all. Be aware, this table is not exhaustive (e.g. 36 | cursewords are missing) and there may be other terms and phrases 37 | that are considered insensitive or exclusionary. If you are unsure 38 | about the appropriateness of a particular term or phrase, it is 39 | recommended to consult with individuals who are part of the group 40 | that may be affected by the language. 41 |
42 || Common Terms/Phrases | 46 |Inclusive Suggestions | 47 |
|---|---|
| master/slave | 52 |main/replica, leader/follower, primary/secondary | 53 |
| whitelist | 56 |allow list, inclusion list, safe list | 57 |
| blacklist | 60 |deny list, exclusion list, block list, banned list | 61 |
| man hours | 64 |labor hours, work hours, person hours, engineer hours | 65 |
| manpower | 68 |labor, workforce | 69 |
| guys | 72 |folks, people, you all | 73 |
| girl/girls | 76 |woman/women | 77 |
| middleman | 80 |middle person, mediator, liaison | 81 |
| he/she, him/her, his/hers | 84 |they, them, theirs | 85 |
| crazy/insane | 88 |unpredictable, unexpected | 89 |
| normal/abnormal | 92 |typical/atypical | 93 |
| grandfather | 96 |flagship, established, rollover, carryover | 97 |
| grandfathering/legacy | 100 |flagship, established, rollover, carryover | 101 |
| crushing it/killing it | 104 |elevating, exceeding expectations, excelling | 105 |
| owner | 108 |lead, manager, expert | 109 |
| sanity check | 112 |quick check, confidence check, coherence check | 113 |
| dummy value | 116 |placeholder value, sample value | 117 |
| native feature | 120 |core feature, built-in feature | 121 |
| culture fit | 124 |values fit | 125 |
| housekeeping | 128 |cleanup, maintenance | 129 |
133 | Source: 134 | 140 | {" "} 141 | https://www.aswf.io/blog/inclusive-language/{" "} 142 | 143 |
144 | 145 || Name | 185 |Percentage | 186 |Commits | 187 | {!isMobile &&Color | } 188 |
|---|
70 | Some of the ongoing developments for Susie's dashboard have
71 | suboptimal accuracy or a non-evident purpose. Therefore, to keep
72 | Susie credible, these are omitted by default.
73 |
74 | However, who are we to stop you from exploring them? 🤷♂️ If you are
75 | cautious yet curious, you can enable them by clicking the button
76 | below. Just know, there is no way back.. until the next analysis.{" "}
77 |
78 | Please consider contributing to our{" "}
79 |
85 | GitHub repository
86 | {" "}
87 | to help us improve and expand Susie. Together, we can make a
88 | difference! 🤝
89 |
271 | Make more informed decisions about which projects to contribute to or 272 | use in your own work by looking at the commitment of a repository to 273 | sustainability. 274 |
275 | 276 | {scoreGovernance} 277 | {somethingIsIncluded && includedGovernance} 278 | {somethingIsExcluded && excludedGovernance} 279 | {hasEnergyStatement ? ( 280 |290 | Based on the components present in a GitHub's community profile, the 291 | GitHub API can return this health percentage for any repository. The 292 | score is between 0 and 100. Above, you can find more details on which 293 | components are present or absent in the repository. 294 |
295 |301 | Currently, Susie checks the README.md for certain phrases. The 302 | data is based on the most popular search terms and glossaries of 303 | sustainability terms and definitions. Note, this is not an exhaustive 304 | list: 305 |
306 |340 | If you want to help improving Susie by implementing NLP to detect 341 | sustainability statements, please contribute to our{" "} 342 | 348 | open-source repository 349 | 350 | ! 351 |
352 |
2 |
6 |