Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discussion and Q&A of Outreachy + GSoC ideas 2021 #9257

Closed
jywarren opened this issue Mar 2, 2021 · 39 comments
Closed

Discussion and Q&A of Outreachy + GSoC ideas 2021 #9257

jywarren opened this issue Mar 2, 2021 · 39 comments
Labels
brainstorm Issues that need discussion and requirements need to be elucidated design issue requires more design work and discussion (i.e. mockups and sketches) discussion gsoc outreachy

Comments

@jywarren
Copy link
Member

jywarren commented Mar 2, 2021

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:

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:

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:

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

@jywarren jywarren added design issue requires more design work and discussion (i.e. mockups and sketches) outreachy brainstorm Issues that need discussion and requirements need to be elucidated discussion gsoc labels Mar 2, 2021
@YogeshSharma01
Copy link

YogeshSharma01 commented Mar 9, 2021

This is My Proposed Idea

User Interface Improvement

Part of: https://github.com/publiclab/community-toolbox

Description: This project is a platform dedicated to community growth and getting insights on organization-wide activities. So, we need to improve the User Interface for the whole project in order to make it more friendly for especially for
new comer as it contains code of content and the issues for first timers of different repositories.

  • Improvising the HTML code.

  • Improve CSS and JS for different sections and make them compact.

  • Build the grids to solve the scrolling issue in different sections of the page.

  • Organising the different sections of the page to make it more attractive.

  • improved workflows for first-timers as this page is to welcome new contributors.

  • Update and work on some frontend libraries to make the UI extremely good.

  • Improve the design of the webpage.

List: https://gitter.im/publiclab/publiclab

Prerequisites: HTML, CSS, Bootstrap ,and JavaScript

Difficulty Level: medium

Potential mentors: Jeffrey Yoo Warren, ADD YOUR NAME HERE
If you think it is good can we consider it for gsoc

@jywarren
Copy link
Member Author

Hi Yogesh, we will note this idea and discuss with our @publiclab/community-reps however as @cesswairimu noted in #9283 our default policy is to consider primarily ideas from our ideas list. But I appreciate your attention to the community toolbox project which is indeed very important to our community! 🎉

@vivek-30
Copy link

About me -

Name - Vivek Singh

Github Handle - vivek-30

Email - [email protected]

Education - B-Tech (Computer Engineering) [currently in 2nd Year]

Project Description -

As we all are aware of Image Sequencer, a very cool and efficient sequencer which works in a very constructive manner with support of many strong modules and well protected by robust tests.

It has everything in it as a complete package to fire-up.

Problem/issue -

But!!! As this sequencer is based on plain vanilla javascript, and raw HTML we have reached a kind of saturation point of it .we are compromising with the powerful features of great Technologies out there. which not only improve its current behaviour but also leaves many aspects to be covered for future reference and also give a great Compatibility with many such Technologies.

Solution/Idea -

I did some research for this and some experiment on this and thought that we should upgrade it to React.

Why React ?

You must be wondering that why to shift it to react if we have everything with us already.But Before Diving straight to conclusion i would like put some key points like -

  • SEO and Performance issues are associated with it.
    see this. -

Screenshot 2021-03-14 at 4 24 54 PM

once converted to react we can make use of some static site generators like Gatsby which not only solves above mentioned problem but also enhance users experience.

  • One of the cool thing we are going to enjoy after this upgrade is we can make use of powerful react testing library like cypress whose compatibility with react is very high.

  • let a user is working on a image, he did several adjustments by generating many sub-part of image. some might have the changes he wanted to work later and some to store just for reference purpose but there is no such provision for that if we have react with us we can use library like redux to save these modules for later use and it is a great feature to have.

  • whenever a component need to be changed we don't have to re-render whole page we can easily update that particular part of sequencer with it easily.

  • upgrading to newer version of current packages like bootstrap and adding some complex features like adding dark mode will became much more easy due to props and hooks of react.

  • last but not the least upgrading it to react will leave many future scope for integrating it with latest Technology with ease.

what more -

Few more Changes related to performance and for better user experience that i had in my mind.which can be done with or without react -

  • current behaviour of ImageSequencer is : we add a new step By clicking on Add Step button or click on one of the quick-add menu shortcut.
    what i thought is to attach a keyboard control on it using that we can navigate between different modules.
    just like the tab switching feature of MacOS and it will not be limited to that only.Rather we will have the ability to move in both the direction and after stopping our pointer on one of the module shortcut it will display a default change related to that particular module in our preview image so that the user can visually experience what a particular module do or how that module will going to affect its current change on a image. we can do this with help of doubly circular linked list and instead of a single click we can listen for dblclick event on those quick menu tab to select one of them when we are done inspecting them.
    (also feature of choosing a module with mouse will also be there as it is) .

demo for above idea -

Screen.Recording.2021-03-14.at.4.20.28.PM.mov
  • Add a draw (pen/pencil) kind of a tool which will be global in its scope means can be used with any module.This tool will help us draw anything on the image or help us write something on it.
    This will be interactive feature to have.

  • change the design for upper part of image sequencer which we are discussing about in (#1808)

  • use async await instead of Promises as they just leads to callback hell and that makes code look ugly, difficult to read and understand but async and await are more cleaner way to acheive the same thing we do with promises ( they are just syntactical sugar for the same)

Contributions In PublicLab/ImageSequencer -

  • Fixed Registration Problem of Service Worker (#1807) [ merged ]

  • Text Alignment Made Easy And Convenient (#1804) [ merged ]

  • Close Webcam Automatically after clicking a picture (#1816) [ merged ]

  • Try To Fetch Latest Data First Then Switch To Cached One (#1819) [ merged ]

  • notify users for selecting empty step (#1818) [ merged ]

  • fixed unable to load version problem (#1789) [ merged ]

  • made update Prompt responsive (#1831) [ merged ]

  • improved way of displaying docs-link (#1799) [ merged ]

  • stopped redundant processing and fixed the working of close button (#1797) [ merged ]

  • notify users for failure in loading image via external URL (#1813) [ merged ]

  • Added Dark Mode for ImageSequencer (#1824) [ open ]

  • clear input field after selecting a module/step (#1825) [ issue ]

Why Me -

Before suggesting any change mentioned in this proposal i have worked on exactly similar to them (almost all) so that i have a clear understanding of how i will be going to accomplish such task.

Examples -

  1. In React upgrade solution i have turned my own chat application based on Web sockets and nodeJs into react version and successfully upgraded it.
    Now it is much more cleaner and it became easy for me to maintain and add more features to it.

  2. In draw tool solution (pencil/pen) i have added backend for gradient brush in gpujs-real-renderer.

  3. Added a rainbow brush (the tool i am talking about) in rainbow board

  4. In Tab-Switching approach i have did something similar here
    Also i have very clear understanding of many advance data structures like graphs , fenwick trees, Segment trees and many more so this solution isn't a big problem for me.

5 like wise i have searched and worked for other solution as well.

finally -

Thank you sir and everyone who have extracted their time in reading this .I know it is bit lengthy to read but i tried my best to reduce my wording and only mention those details that needs to be discussed.Thanks you so much again. ☺️ @jywarren @cesswairimu could you please have a look on this.

@vivek-30
Copy link

@jywarren sir could you please provide a feedback for this proposal.

@YogeshSharma01
Copy link

YogeshSharma01 commented Mar 20, 2021

Hi, @jywarren and @cesswairimu here Translation system refinements I guess the only users who have an account on Transifex those users can only translating the website into different languages using Transifex, and also only in production mode, we can see the footer? Actually, what are the parameters we need to refine here?
Thanks

@YogeshSharma01
Copy link

Hi, @jywarren and @cesswairimu as only in production mode we can select any language but at localhost, it shows me Spanish to follow on the Twitter button how can I change it to English now?
Sample

@gaurav2699
Copy link
Contributor

Since it's mentioned that the first two projects are for Outreachy applicants, so its better that a GSoC candidate doesn't choose the first two projects. Am I right?

@jywarren
Copy link
Member Author

Hi all, i'll copy in some answers I gave in our chatroom so all can see!

Hi @gaurav2699 not necessarily as we ​may not get 2 Outreachy slots, so it's OK to post proposals for those. At this point it's not clear which of the two may receive Outreachy support, and we're sorry for the uncertainty that brings, but there's not a lot we can do about it at this point.

Also responded to @Manasa2850 in the chatroom: if for GSoC it might be good to pick one, as the hours are halved per project this year. For Outreachy, combining two is OK but we don't expect you to. Whether the ideas seem feasible within the given time and proposed schedule is one thing we consider on reviewing applications. Thank you!

Then after a clarification, I said to @Manasa2850 that it's OK to submit 2 separate proposals for 2 separate ideas if one wishes.

Also, i just updated the Education project with:

@jywarren
Copy link
Member Author

Hi, @jywarren and @cesswairimu as only in production mode we can select any language but at localhost, it shows me Spanish to follow on the Twitter button how can I change it to English now?

Hi @YogeshSharma01 -- you can use this URL to switch: https://publiclab.org/change_locale/es

where es can be replaced with the correct language code. See the available ones at the footer of PublicLab.org and you can see the available links there too!

image

@jywarren
Copy link
Member Author

Hi all, just noting that @cesswairimu has posted our official GSoC call for proposals here! https://publiclab.org/notes/cess/03-24-2021/call-for-2021-gsoc-proposals

@daemon1024
Copy link
Member

Hey @jywarren, @cesswairimu and mentors. Dropped in my draft proposal at https://publiclab.org/notes/barun1024/03-24-2021/gsoc-2021-proposal-geographic-features-refinement. Would be glad to get feedback on it :)

@YogeshSharma01
Copy link

Hi, @jywarren here Translation system refinements I guess the only users who have an account on Transifex those users can only translating the website into different languages using Transifex. what are the parameters we need to refine here?
Thanks

@jywarren
Copy link
Member Author

Hi @YogeshSharma01 -- my understanding is that when you follow the prompts (also see https://publiclab.org/translation) -- you are guided to set up an account. Do you think there is more we can do to smooth this workflow? To make it easier and lower barrier? Or are you asking something more specific about parameters for Transifex API integration? Thank you!

@govindgoel
Copy link
Member

govindgoel commented Mar 30, 2021

@jywarren I have the same query regarding the parameters we need to consider for refining the custom translation helper you mentioned above but can you also mention parameters regarding the Transifex API integration that we need to consider, and anything else I should look into regarding the translation refinements project. Also, I have posted the draft proposal here: https://publiclab.org/notes/govindgoel/03-25-2021/gsoc-proposal
I am working on improving it.
Thanks

@YogeshSharma01
Copy link

Hi, @jywarren exactly more specific about parameters for Transifex API integration?

@waridrox
Copy link
Member

waridrox commented Mar 30, 2021

Hi @jywarren and @cesswairimu, I had a few questions regarding the spectral workbench integration project idea under GSoC. Pls have a look. Thanks :)

  1. Does this require the live capture interface code to be re-written in order to integrate with ruby on rails ?
  2. And if so, where do we want to integrate it to, is it supposed to be integrated at https://github.com/publiclab/spectral-workbench or some new domain altogether since the project inline-markdown editor is integrated into the plots2 project I believe…
  3. But then how is the current spectral workbench working then, since there is already a RoR integration - https://github.com/publiclab/spectral-workbench .
  4. And do we need a db to store the values for the login users assuming option 1 is correct ?
  5. Are there any enhancements that can be considered if option 1 is correct and the code is to be rewritten altogether ?

@jywarren
Copy link
Member Author

Hi @YogeshSharma01 @govindgoel I've added to the Translation idea:

additional projects/issues/tasks/documentation/discussion at Translation System issues which involve adding new translations, improving the translation system and especially #3262

And also adding that 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.

@jywarren
Copy link
Member Author

Also adding more fully, i hope this helps!:

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

@YogeshSharma01
Copy link

Hi, @jywarren when I try to translate the text by clicking on the 'Get Started' in the globe icon, I'm directed to the 404 page on transfix website.
Here is the ScreenShot
Screenshot 2021-03-30 at 11 50 10 PM
also, I'm not able to find the Publiclab plots in the transfix search bar.
Screenshot 2021-03-31 at 12 56 56 AM

@jywarren
Copy link
Member Author

Hi @jywarren and @cesswairimu, I had a few questions regarding the spectral workbench integration project idea under GSoC. Pls have a look. Thanks :)

  1. Does this require the live capture interface code to be re-written in order to integrate with ruby on rails ?
  1. And if so, where do we want to integrate it to, is it supposed to be integrated at https://github.com/publiclab/spectral-workbench or some new domain altogether since the project inline-markdown editor is integrated into the plots2 project I believe…
  2. But then how is the current spectral workbench working then, since there is already a RoR integration - https://github.com/publiclab/spectral-workbench .
  1. And do we need a db to store the values for the login users assuming option 1 is correct ?

The Rails app should manage all user data! We should be able to "build in" the JS functionality for the capture interface similarly for how we did for the spectrum display interface, with the Rails app managing all the stateful back-end and database and even data management, and a pretty minimal "handoff" of new data from the capture interface to the "host" Rails app. See how the original JS code from long ago managed both saving new spectra (using an HTML form on the page to submit) and fetching calibration data: https://github.com/publiclab/spectral-workbench/blob/main/app/assets/javascripts/capture.js#L356-L385 You can see where the server responds to these requests on the server side in this controller: https://github.com/publiclab/spectral-workbench/blob/main/app/controllers/capture_controller.rb

  1. Are there any enhancements that can be considered if option 1 is correct and the code is to be rewritten altogether ?

Much of the new capture interface at https://publiclab.github.io/spectral-workbench.js/examples/new-capture/ is already written, but there may need to be some new code adapted from the previous version for:

  1. fetching recent calibrations
  2. displaying them in a list to choose from
  3. using a chosen calibration to display a scaled x-axis on the new capture interface's live graph
  4. saving data to the host Rails app as was done in previous versions of the capture code
  5. submitting the chosen calibration reference to the Rails app along with the newly captured data

This is still a pretty substantial project but it's nowhere near a rewrite of the capture interface itself! I hope this is helpful!

@govindgoel
Copy link
Member

@jywarren one more thing regarding the project as it is mentioned [This project may be combined with another small project]. So do I need to do any specific changes or mention in the proposal, for example, project timeline.

@jywarren
Copy link
Member Author

Hi, @jywarren when I try to translate the text by clicking on the 'Get Started' in the globe icon, I'm directed to the 404 page on transfix website.

Oh no! I wonder if either our account expired or if they substantially changed the API and our link no longer works? Would you be able to open this in an issue? Thank you @YogeshSharma01 for finding that. ☹️

@jywarren
Copy link
Member Author

@jywarren one more thing regarding the project as it is mentioned [This project may be combined with another small project]. So do I need to do any specific changes or mention in the proposal, for example, project timeline.

I think we would want to hear the order you propose and how you'd organize your time, and also why you think these two projects could be completed within the allotted time, so we know you have a full understanding of the work to be done. Thank you!!!

@YogeshSharma01
Copy link

Hi, @jywarren I open an issue for the transfix link no longer working #9394

@17sushmita
Copy link
Member

Hi @jywarren and @cesswairimu
I had a question regarding project ideas in GSoC. Are the first 2 projects in Project ideas strictly reserved for outreachy or GSoC applicants can also make a proposal for it? I had applied for Outreachy but my initial application could not get approved due to not meeting minimum time commitment criteria which is not the case in reality. I'm very eager to work on these projects and would like to participate in GSoC for the same idea. Is it possible to do so?

@jywarren
Copy link
Member Author

Hi @17sushmita -- no, we accept applications for these from both programs. Yes, we would love to have your application through the GSoC program! Thank you!

@gaurav2699
Copy link
Contributor

Hi @jywarren, I have a query regarding the Legacy Code deprecation project. It has been mentioned to produce archival export of the data. So I want to know which format will be desirable: .sql, csv, json, or anything else. Thank you!

@gaurav2699
Copy link
Contributor

Also, another query I posted here #4072

Hey @jywarren. I have a doubt, I believe we are deprecating the drupal_content_type_map model, and as mentioned in this issue #956, we are merging the drupal_content_type_map model to the map node body field. Since the body of a node is a text field, how can we merge the content_type_map table in that as it contains several columns? Thank you!

@jywarren
Copy link
Member Author

jywarren commented Apr 2, 2021 via email

@jywarren
Copy link
Member Author

jywarren commented Apr 9, 2021

Hi all, i wanted to drop in some notes i left on @govindgoel's proposal that really applies to all proposals for the translation system!

On 1. Refine the custom translation helper a few thoughts I had were:

  1. we do this in both JS and Ruby, i believe - that is, the i18n gem has a translation helper in each, and i believe we've overridden the Ruby one (using translate() now instead of t()), but we should think on how to do this in JavaScript as well! If it's simple and well written enough, we can just port over the code so both work normally.
  2. we might want to run similar tests on both the JS and Ruby versions
  3. for the display issues where the globe is showing up oddly, i wonder if we might want to consider a different display. What if we instead added a ....... dotted underline to words that needed translation, and when you hover over with the mouse, a globe icon appears? This might be easier to format. However, if there is already a hover-over popover or tooltip, we'd have to ensure that the new one doesn't interrupt it or overlap it.

Thanks! I hope this is helpful!

@jywarren
Copy link
Member Author

jywarren commented Apr 9, 2021

Also, with regard to the idea of an additional guide for how to import translation files, I've added to the above description:

we've started documenting and testing this process in this issue: #9481

@jywarren
Copy link
Member Author

jywarren commented Apr 9, 2021

also thanks to @YogeshSharma01 for investigating the Transifex link 404 issue. Thinking about the recruitment process, i changed the title of that issue to think about how to smooth the process for first-time translators. Maybe this could be part of the plan too! #9394

@YogeshSharma01
Copy link

Hi all, i wanted to drop in some notes i left on @govindgoel's proposal that really applies to all proposals for the translation system!

On 1. Refine the custom translation helper a few thoughts I had were:

  1. we do this in both JS and Ruby, i believe - that is, the i18n gem has a translation helper in each, and i believe we've overridden the Ruby one (using translate() now instead of t()), but we should think on how to do this in JavaScript as well! If it's simple and well written enough, we can just port over the code so both work normally.
  2. we might want to run similar tests on both the JS and Ruby versions
  3. for the display issues where the globe is showing up oddly, i wonder if we might want to consider a different display. What if we instead added a ....... dotted underline to words that needed translation, and when you hover over with the mouse, a globe icon appears? This might be easier to format. However, if there is already a hover-over popover or tooltip, we'd have to ensure that the new one doesn't interrupt it or overlap it.

Thanks! I hope this is helpful!

Hi, @jywarren Just want to confirm that we want to implement i18n in js because we don't want to reload the page whenever the user selects or changes his language so that our user experience is improved and gets the page in a real-time environment.
Please confirm so that I can think more about this and let me know if mean something else.

@jywarren
Copy link
Member Author

Hi @YogeshSharma01 actually the i18n implementation is not for preventing a page refresh, but in order to extend the ability to translate to elements which are created/generated only using JS. These include:

  • popovers and tooltips (in the Bootstrap UI library, https://getbootstrap.com)
  • AJAX-loaded elements like just-submitted comments
  • anything within interactive maps

It also allows us to consider how to extend translations into database-backed features such as the footer.

By contrast, when changing a language we probably /do/ want to refresh the page, as there will be many elements which will make use of the ruby, server-side helpers, and converting them to use JS in that one scenario probably introduces unnecessary complexity and maintenance burden. I hope this makes sense! Thanks for the excellent question!

@jywarren
Copy link
Member Author

I wanted also to respond to @daemon1024's question about geographic scraping/caching/microservices:

I am not exactly sure what do we want to scrape, since we already have an api for people and posts, hence I used the term cache to as to reduce the load on the api. Do we plan to use some external website which we would need to scrape for data?

I think there are a few options on this. But the main thing is that we are making arbitrary bbox (bounding box) queries to an API using 2 latitudes and 2 longitudes, so a URL-based caching system probably won't work well, since people will zoom and drag the map in unpredictable ways.

However, the results are JSON, so we might think about how to store JSON objects in a geographic index for fast retrieval. Our database is actually not set up for that, as we use the more general purpose tags "lat:" and "lon:" and so we can't do as efficient database indexing on those.

https://publiclab.org/api/srch/taglocations?nwlat=47.15984001304432&selat=34.19817309627726&nwlng=-80.79345703125001&selng=-61.19384765625001

this is the query we get when we go to https://publiclab.org/map#6/41/-71, for example. Learn about this kind of API query here: https://publiclab.org/wiki/api

So I think we can think about 2 components - the "storage/retrieval" using a query /like/ the one above, and the mechanism to "scrape and store" from the PL API into that storage system.

For storage/retrieval, there seem to be many good options, i'm thinking node.js for lightweight and fast, but we can be flexible: https://duckduckgo.com/?q=efficient+nodejs+geojson+database&atb=v121-6&ia=web

For the scraping, I'm not sure. Maybe we could think about whether we are constantly scanning by region, or if accessing the microservice triggers a deferred re-fetch from the original API? These are really good design/architecture questions to weigh pros/cons on.

Thanks @daemon1024 !!!

@daemon1024
Copy link
Member

Thanks a lot @jywarren for the detailed response 😬. That does clarify a lot of things for me and given me some context for what to look into. Will get back to you in the proposal comments after some investigation ✌️

@daemon1024
Copy link
Member

daemon1024 commented Apr 13, 2021

Also a reminder for everyone, The deadline for submitting the proposal on official GSoC website is in 2 hours. Not really sure if it's region specific but I would suggest everyone to submit the PDF immediately to be safe, you can keep modifying it till the deadline.

All the Best everyone 🚀🎉

@jywarren
Copy link
Member Author

Hi all, i've crossed off a couple items from the first idea on Education related refinements, as @TildaDares correctly pointed out that some work has now been completed on it. Don't worry too much if this is already in your proposals, it's OK. But I did add a couple new items to try to round out the idea to compensate:

It is possible more will get completed before the session begins, and that's pretty natural for a constantly evolving project like the Public Lab website -- but we can just keep track and adjust the idea outline accordingly!

Thanks, all!

@TildaDares
Copy link
Member

The discussion issue for GSOC/Outreachy 2022 is open in #10754. Thanks everyone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
brainstorm Issues that need discussion and requirements need to be elucidated design issue requires more design work and discussion (i.e. mockups and sketches) discussion gsoc outreachy
Projects
None yet
Development

No branches or pull requests

9 participants