import gradio as gr import os hf_writer = gr.HuggingFaceDatasetSaver( os.getenv('HUGGING_FACE_HUB_TOKEN'), organization="society-ethics", dataset_name="featured-spaces-submissions", private=True ) principles = [ { "title": "🀝 Consentful", "content": """ [What is consentful tech?](https://www.consentfultech.io) Consentful technology supports the self-determination of people who use and are affected by these technologies. For Spaces, some examples of this can include: - Demonstrating a commitment to acquiring data from willing, informed, and appropriately compensated sources. - Designing systems that respect end-user autonomy, e.g. with privacy-preserving techniques. - Avoiding extractive, chauvinist, ["dark"](https://www.deceptive.design), and otherwise "unethical" patterns of engagement. """ }, { "title": "🌎 Sustainable", "content": """ These are Spaces that highlight and explore techniques for making machine learning ecologically sustainable. Examples could include: - Tracking emissions from training and running inferences on large language models. - Quantization and distillation methods to reduce carbon footprints without sacrificing model quality. """ }, { "title": "πŸ‘οΈβ€πŸ—¨οΈ Socially Conscious", "content": """ "Socially Conscious" Spaces show us how machine learning can be applied as a force for *good*! This is quite broad, but some examples could be: - Using machine learning as part of an effort to tackle climate change. - Building tools to assist with medical research and practice. - Developing models for text-to-speech, image captioning, and other tasks aimed at increasing accessibility. - Creating systems for the digital humanities, such as for Indigenous language revitalization. """ }, { "title": "πŸ§‘β€πŸ€β€πŸ§‘ Inclusive", "content": """ These are projects which broaden the scope of who *builds* and *benefits* in the machine learning world. This could mean things like: - Curating diverse datasets that increase the representation of underserved groups. - Training language models on languages that aren't yet available on the Hugging Face Hub. - Creating no-code frameworks that allow non-technical folk to engage with AI. """ }, { "title": "✍️ Rigorous", "content": """ Among the many concerns that go into creating new models is a seemingly simple question: "Does it work?" Rigorous projects pay special attention to examining failure cases, protecting privacy through security measures, and ensuring that potential users (technical and non-technical) are informed of the project's limitations. For example: - Projects built with models that are well-documented with [Model Cards](https://huggingface.co/docs/hub/model-cards). - Models that are evaluated against cutting-edge benchmarks, with results reported against disaggregated sets. - Demonstrations of models failing across ["gender, skin type, ethnicity, age or other attributes"](http://gendershades.org/overview.html). - Techniques for mitigating issues like over-fitting and training data memorization. """ }, { "title": "πŸ€” Inquisitive", "content": """ Some projects take a radical new approach to concepts which may have become commonplace. These projects, often rooted in critical theory, shine a light on inequities and power structures which challenge the community to rethink its relationship to technology. For example: - [Reframing AI and machine learning from Indigenous perspectives](https://jods.mitpress.mit.edu/pub/lewis-arista-pechawis-kite/release/1). - [Highlighting LGBTQIA2S+ marginalization in AI](https://edri.org/our-work/computers-are-binary-people-are-not-how-ai-systems-undermine-lgbtq-identity/). - [Critiquing the harms perpetuated by AI systems](https://www.ajl.org). """ }, ] def toggle_description(title, content): with gr.Accordion(label=title, open=False): gr.Markdown(content, elem_id="margin-top") def submit_entry(URL, tags, suggestions, comments): hf_writer.flag( flag_data=[URL, tags, suggestions, comments] ) return [ gr.Markdown.update( visible=True, value="Thank you for your submission! πŸ€—" ), gr.Button.update( visible=False ) ] with gr.Blocks(css="#margin-top {margin-top: 15px}") as demo: gr.Markdown("## Call for submissions! πŸ“’") gr.Markdown(""" Hugging Face is collecting examples of [Spaces](https://huggingface.co/spaces) that are ethically mindful, in order to highlight and encourage these kinds of projects – and we would love your input! If you have built a Space that you think should be featured, or if you would like to nominate someone else's, paste the URL in the form below πŸ€— The current set of tags reflect our initial categorization from going through Hugging Face Spaces: 🀝 consentful, 🌎 sustainable, πŸ‘οΈβ€πŸ—¨οΈ socially conscious, πŸ§‘β€πŸ€β€πŸ§‘ inclusive, ✍️ rigorous, and πŸ€” inquisitive. Let us know other relevant categories and examples that you find! """) with gr.Accordion(label="Want to learn more? Visit us over on the Hugging Face Discord!", open=False): gr.Markdown(""" Follow these steps to join the discussion: 1. Go to [hf.co/join/discord](https://hf.co/join/discord) to join the Discord server. 2. Once you've registered, go to the `#role-assignment` channel. 3. Select the "Open Science" role. 4. Head over to `#ethics-and-society` to join the conversation πŸ₯³ """, elem_id="margin-top") with gr.Row(): with gr.Column(): gr.Markdown("πŸ’‘ Click on the terms below to view their description and some examples.") with gr.Column(): [toggle_description(x["title"], x["content"]) for x in principles] with gr.Column(): URL = gr.Text(label="URL") tags = gr.Checkboxgroup( label="Tags - Pick as many as you like!", choices=[ "Consentful", "Sustainable", "Socially Conscious", "Inclusive", "Rigorous", "Inquisitive", ] ) suggestions = gr.Text(label="[Optional] Do you have suggestions for other tags?") comments = gr.TextArea(label="[Optional] Any extra comments?") submit = gr.Button(value="Submit") thank_you = gr.Markdown(visible=False) submit.click( fn=submit_entry, inputs=[URL, tags, suggestions, comments], outputs=[thank_you, submit] ) hf_writer.setup( components=[URL, tags, suggestions, comments], flagging_dir="flagged" ) demo.launch()