-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Hi all! We've completed our ideas list for Outreachy and Google Summer of Code 2021, and we are sharing it here for discussion. We often find that key info needs to be added or expanded upon to help people understand the projects, and are going to try discussing them all here (or in "breakout issues" if this gets too long) this year.
Remember that we have not yet been approved/confirmed for either program (as of March 2 2021) but in the interest of discussion and collaboration, we're posting this now. Thanks! 🤞
The official listing is at https://publiclab.org/wiki/gsoc-ideas#2021+Ideas and we'll leave that one as it is (as it's nice and short too, easy to browse).
By contrast, here, i'll post the full text, but we'll keep editing it and refining it as we go, based on your input.
Outreachy folks -- two of these projects -- the first two -- are posted for Outreachy. That means that if we get one or two Outreachy fellows, they will have priority to take those projects. However, it does happen that we have been able to accept more than one person per project. We hope this page will be helpful for ANYONE who wishes to build a project or proposal around these ideas. Thanks for being friendly, cooperative, and supportive to one another!
Also watch out for Welcome issues to go up in the coming days to ask folks to introduce themselves, and to otherwise offer support and info on the application and selection process.
Lastly, THANK YOU SO MUCH for your interest! We are so excited to have the chance to work with you! 🎉 🎉 🎉 🎉 🎉 🎉 🎉
Posting here so we can host a Q&A about our Summer of Code programs (Google Summer of Code and Outreachy), the project ideas for this upcoming season, and begin to refine the descriptions in more detail than we do on the formal listing at https://publiclab.org/gsoc-ideas
2021 Ideas
Education-related usability upgrades
Part of: https://github.com/publiclab/plots2
Description: Due to the growing community of educators using our PublicLab.org content management system, we are hoping to tackle a collection of systems, features, and fixes focused on educational users, and incorporating feedback from our community of educators. This project will include changes and fixes to our draft saving system, our coauthorship model, explanatory displays for complex systems like our geodata storage, modifications to our content moderation and spam filtering systems, and even changes to our username autocompletion scripts, all culminating in a smoother and more coherent system for educators across the US gulf coast who are working with students on environmental and environmental justice topics.
Tasks include:
- Separate author names with commas instead of “with”, on pages like https://publiclab.org/notes/otimmerman077_stu/02-18-2020/bioluminicence-detector
- Add a listing of draft posts to user profile pages (at https://publiclab.org/profile/) (and designing a minimal way to display these in keeping with our style guide: https://publiclab.org/notes/warren/05-07-2019/introducing-a-draft-style-guide-for-public-lab) (to see a draft post, save a draft at https://publiclab.org/post)
- add Bootstrap tooltips explaining latitude/longitude tags (“This is a geographic tag for placing this content on a map.”) on pages such as https://publiclab.org/wiki/puerto-rico, linking to https://publiclab.org/location-privacy as well
- X
Filter out known spam from replies to comments, as described in: Hide replies to comments that have been spammed or aren't yet moderated #8854(completed) - X
Complete email notification opt-outs for moderators, to improve this system for educators, as described in Filter out moderators who've checked "Do you want to be notified by a email for moderation emails?" in /settings #9114(completed) - Refine the display of co-authored posts on profile pages (see https://publiclab.org/wiki/power-tags#General+power+tags and examples at https://publiclab.org/notes/otimmerman077_stu/02-18-2020/bioluminicence-detector https://publiclab.org/profile/amallozzi) (first seeking community reps input to refine design choices)
- Include high-relevance usernames you’ve used recently, or who are recently active on the site, in autocompletion results while typing into, for example, comment boxes
- observe how GitHub UI for @mentioning people, as a reference
- first, pre-fetch a collection of usernames
- consider caching the prefetched usernames daily or weekly: https://guides.rubyonrails.org/caching_with_rails.html
- learn how At.js autocompletion works in https://github.com/ichord/At.js/wiki & https://github.com/ichord/At.js/wiki/Callbacks and how our codebase integrates with it at https://github.com/publiclab/plots2/blob/main/app/assets/javascripts/atWhoAutoComplete.js
- figure out how to intermix prefetched usernames and API responses, de-duplicating and client-side filtering for alphanumeric match - mentors will support on this
- this may require some SQL and API work, which mentors will support on
- Refine design and details of newly relaunched dashboard with community input (building on last term’s project at [Planning] New Dashboard Implementation Project (Outreachy) #8513
- ensure comment /replies/ appear on the new spam2 dashboard! Hide replies to comments that have been spammed or aren't yet moderated #8854 (comment)
- moving the new v2 Dashboard redesign to be the default Dashboard, and moving the legacy dashboard to
/v2/dashboard- Replace/Rename Dashboard V2 References #9278 (if not complete by start of session) - continued CSS/style refinements to the new beta print templates in Refinements to CSS/styling of Beta print templates #8380
- Add table of contents under an icon for wiki/Markdown pages, like GitHub does now! Add table of contents under an icon for wiki/Markdown pages, like GitHub does now! #9512
List: https://gitter.im/publiclab/publiclab
Prerequisites: HTML/CSS, some JavaScript, some Ruby on Rails
Difficulty Level: easy
Potential mentors: Jeffrey Yoo Warren, Cess Wairimu, Sudipto Ghosh,ADD YOUR NAME HERE
Tag/topic system refinements
Part of: https://github.com/publiclab/plots2
Description: Our growing community has seen a major reorganization of content and activity around topic areas in the past year or two, and as this featureset has matured, we are looking to refine and improve it based on community input. This project would include the following:
- Fixes to MYSQL queries driving https://publiclab.org/stats/subscriptions , which has known bugs at Tag subscription counts wrong on stats page #7908
- Tag locking: ensure that if content is tagged
lockedby a mod/administrator, only mods/administrators can add/delete tags on that page (building on existing system at https://publiclab.org/wiki/locked) (To prevent banned users from adding tags as a form of spam.) - Retroactively delete tags added by users who have been banned
- Prevent first-time-posters from tagging work except their own, add appropriate warnings/alerts and/or hide tag form from first-time-posters
- Develop a category tree interactive feature at /topic-tree with nested topics in a tree view like: https://www.appropedia.org/Appropedia:Fundamental_category_tree
- Refine display of interrelationship of topics, potentially using
parent:____tags (as described in https://publiclab.org/wiki/power-tags#General+power+tags) - Tweak co-authorship author link display on note pages by separating author names with commas, not “with” - for example on https://publiclab.org/notes/otimmerman077_stu/02-18-2020/bioluminicence-detector
- Finalize display of tags/topics in sidebar using small "cards" styles - modify power tag display to use mini cards #8684
- Continued refinements to the Cytoscape visualization at https://publiclab.org/tags based on community input
List: https://gitter.im/publiclab/publiclab, https://gitter.im/publiclab/publiclab
Prerequisites: JavaScript, Ruby on Rails
Difficulty Level: medium
Potential mentors: Jeffrey Yoo Warren, Cess Wairimu, ADD YOUR NAME HERE
Geographic features refinements
Part of: https://github.com/publiclab/plots2
Description: Public Lab community members are increasingly sharing geographic context while sharing on the PL website. We have a robust geographic metadata system and site-wide prompts to add geotags. This project will focus on key optimizations and additions which will smooth and expand geographic features, including:
- A “Spreadsheet to Layer” workflow using a GitHub issue template and/or bot to walk people through formatting a spreadsheet, inserting it into a JavaScript file, and opening a pull request to add the data to the Leaflet Environmental Layers library, which drives geo layers on the Public Lab site: https://github.com/publiclab/leaflet-environmental-layers
- This may include: developing a static microsite on GitHub Pages where you can enter a Spreadsheet URL and it generates a code file for a Leaflet layer
- It might also auto-generate tests for the new layer
- Increase amount of content shown per page-view at /map - currently we show few users/pages per refresh; increase while monitoring server load
- Possible solution: Develop a prototype micro-service to scrape the Public Lab API for geographic content and generate a bbox-queryable GeoJSON service, to display both people and pages, to replace direct API access at https://github.com/publiclab/leaflet-environmental-layers/blob/main/src/PLpeopleLayer.js
- Ensure empty people grid squares don’t generate popups - following https://publiclab.org/location-privacy and https://github.com/publiclab/leaflet-blurred-location
- Ensure grid squares with blurred locations are tinted
- Develop ideas and prototypes for how to ensure “important” or expected content is surfaced
- Ranking by recency, views - brainstorm with community reps
- Add and refine environmental layers as part of the Leaflet Environmental Layers library
- Improve load times by ensuring bbox and tbox optimization
List: https://gitter.im/publiclab/publiclab, https://gitter.im/publiclab/publiclab
Prerequisites: JavaScript, Node, Ruby on Rails
Difficulty Level: hard
Potential mentors: Jeffrey Yoo Warren, ADD YOUR NAME HERE
Translation system refinements
Part of: https://github.com/publiclab/plots2
Description: (This project may be combined with another small project) Our internationalization (i18n) system exists but lacks a consistent workflow for importing new translations, as well as suffering from some HTML parsing and UI shortcomings. This project will:
- inline Transifex links not working for un-approved/un-invited translators: Transifex link not working for un-approved/un-invited translators #9394
- refine the custom translation helper which handles missing languages and prompts users to contribute to translation
- resolving HTML parsing issues causing it to fail on complex nested HTML: Translation string replacement errors #7798
- Improving CSS display of missing translation prompt
- develop a page to recruit translators and document and provide workflow guidance for code tasks related to translation import
- develop improved workflows for first-timers-only issues based on translation coding tasks; for example, ways to easily self-test translations or to prepare pull requests for review
- read more at: https://github.com/publiclab/plots2/#internationalization
- additional projects/issues/tasks/documentation/discussion at
Translation System
issues which involve adding new translations, improving the translation system and especially Planning issue for translation/internationalization/localization systems #3262 - I believe we need an additional "guide" on the process of importing translations from Transifex, perhaps at https://publiclab.org/wiki/translation or https://github.com/publiclab/plots2#internationalization. My understanding is that it's simply copying the Transifex file in from Transifex, but there may need to be a merge so as not to lose translations from outside Transifex? More on ways to automate this here: https://community.transifex.com/t/transifex-should-be-able-to-push-translations-more-often-transifex-github-integration/261/3 -- and we've started documenting and testing this process in this issue: Import French translations from Transifex (template issue for copying) #9481
List: https://gitter.im/publiclab/publiclab, https://gitter.im/publiclab/publiclab
Prerequisites: JavaScript, Ruby on Rails
Difficulty Level: medium
Potential mentors: Jeffrey Yoo Warren, Cess, ADD YOUR NAME HERE
Legacy code deprecation
Part of: https://github.com/publiclab/plots2
Description: (This project may be combined with another small project) Our codebase retains a variety of old database models, code segments, and removing them is a delicate task involving correcting tests, restructuring the database, and more. This project will:
- build on completed projects to continue the work of removing older legacy models and tables from our system
- adjust or remove tests along with code removal
- use Rails database migrations to remove unused tables
- produce archival exports of data which we are deleting if necessary
- merge and combine deprecated content types into standard ones; for example, Maps become Wiki pages
- test out migrations in development environments and on our cloned copy of the production server, to ensure smooth deployment
- increase code coverage as a result of reducing unused and untested code
- deprecation projects listing is available at https://github.com/publiclab/plots2/milestone/24
- read more at: Deprecate Drupal legacy database structures/naming #956
List: https://gitter.im/publiclab/publiclab, https://gitter.im/publiclab/publiclab
Prerequisites: JavaScript, Ruby on Rails
Difficulty Level: medium
Potential mentors: Jeffrey Yoo Warren, Cess, ADD YOUR NAME HERE
spectral-workbench.js JS/Rails integration
Part of: https://github.com/publiclab/spectral-workbench, https://github.com/publiclab/spectral-workbench.js
Description:
Our newly revamped and tested library at spectral-workbench.js was designed to work both on its own (https://github.com/publiclab/spectral-workbench.js/) or as a JavaScript component in a larger system, the spectralworkbench.org Rails application. Work on the standalone library is nearly complete and this project will take on the integration of the newly revamped and re-organized code into the parent Rails application, following a pattern shown at https://github.com/publiclab/inline-markdown-editor for housing a JS project within a Rails project. Parts of this project are already included for displaying saved and graphed data at pages like https://spectralworkbench.org/spectrums/205427 (see integration at https://github.com/publiclab/spectral-workbench/blob/98dbde7a881788f7bd48db59eee616d6de70054b/app/views/spectrums/show2.html.erb#L22-L29), but the new code will replace the live capture interface at https://spectralworkbench.org/capture/, and will need to be able to access the following server-side resources and routes:
- fetching recent calibrations by the logged-in user
- prompting people to log in to save data
- detecting the need to calibrate and directing people to the appropriate page and/or docs
- fetching the most recent calibration and using it to display calibrated data
The current JavaScript code at https://spectralworkbench.org/capture performs all of this, and should be saved at https://spectralworkbench.org/capture/legacy, while the new code should be launched first at https://spectralworkbench.org/capture/new and compared for feature parity with the legacy version before any legacy systems are move or modified. The project will also require some Rails full-stack system tests to confirm functionality in the new UI.
A LOT more information on this was just posted in a comment, click here to read it in full: #9257 (comment) and copied into a new issue at publiclab/spectral-workbench.js#219
List: https://gitter.im/publiclab/publiclab
Prerequisites: JavaScript, Ruby on Rails
Difficulty Level: medium
Potential mentors: Jeffrey Yoo Warren, Cess, ADD YOUR NAME HERE