Public Lab Research note

GSOC 2021 Proposal: Education-related usability upgrades

by SahilS | March 28, 2021 14:50 28 Mar 14:50 | #26047 | #26047

About Me:

Name: Sahil Saha



Affiliation: Jalpaiguri Government Engineering College (1st year)

Field of Study: Computer Science and Engineering (B.Tech.)

Location: India

Project Description:

Bug fixes, feature additions, and improvements focused on educational users while incorporating feedback from the public lab's educational community.


This project aims to fix bugs, add new features, and refine the UI, focused on the public lab's educational users. The new features to be added include improvement of autocompletion results, a listing of drafts on profile pages, detailed tooltips on maps, a system for pre-approved posting for students that can bypass the moderation system, and refined display of coauthored posts on profile pages. The above-mentioned features will make it easier for educators to use the platform more effectively.

Project Goals and their implementation:

Drafts listing on profile/tag pages

Add a listing of drafts on profile and tag pages to make it easier for users to find saved drafts, the UI should follow the public lab style guidelines.

Profile page sample preview:

Tag page sample preview:

This can be done by creating a separate method in the Tag model class named find_draft_notes which gives all the nodes of type: 'note' and status: 3 created by the current_user arranged in descending order according to the timestamp that is the recent one shown first:

And another method to find_draft_notes_by_tag which takes two parameters tagnames and current_user, and returns nodes with type: 'note', status: 3, created by current_user and having tags consisting of tagnames:

Then display them on the profile page if the current_user is the same as the profile_user, and on the tag page in a separate tab named "Drafts" keeping with the public lab style guide.


A system for pre-approved invites that can bypass the moderation queue while posting. An invite link should look like this, These links can be created by educators to invite a specific user. The invite link will open up an option to create a post and publish it directly bypassing the moderation queue.

The posts created with an invite link will have a special status that can bypass the moderation queue, the users invited will receive a notification consisting of the invite link.

An invite link will have 1 week expiry time from the time of creation.

Display of coauthored posts

Add refined display of coauthored posts on the profile page, first seeking community reps input to refine design choices and decide whether to show coauthored posts mixed in with authored posts or in a separate section.

Sample preview of coauthored posts as a separate section (this is not the final design):

Improvements in autocompletion

Autocompletion results will Include usernames used recently, or who are recently active on the site with full wildcard matching similar to GitHub @ mentioning system. A collection of usernames will be prefetched and cached daily or weekly which will be added to the API responses.

Documentation improvements

The steps given to "subscribe to all tags" at is out-dated and needs to be updated with the latest steps.

Other improvements/fixes

  • Add Bootstrap tooltips explaining latitude longitude tags on pages linked with a place or a map.
  • Refine the design and details of the newly relaunched dashboard with community input.



I have recently been an active member of the public lab community, I have contributed to Public Lab's plots2 repository, by opening and reviewing PRs and issues.


I understand that this is a serious commitment and I am ready to commit 40+ hours weekly to complete my project within the given time.


Guidance from my mentors and suggestions from the members of the public lab community.


Thank you for sharing your proposal idea @SahilS, I have some feedback/suggestions:

  1. Expounding points from the Education-related usability upgrades ideas that you have not addressed in your proposal for example Filter out known spam from replies to comments

  2. What tests do you anticipate writing? Unit, system, functional.

  3. Are there any accessibility features you expect to add?

  4. Will you create first-timer issues from this project that will invite other new users?

  5. In the _Other improvements _ section, expound on the points shared since those improvements are important as well.

Thank you so much for the proposal. I would suggest having a look at past proposals, to see how you can further improve yours

All the best!

Is this a question? Click here to post it to the Questions page.

Thanks a lot for your feedback, I am working on the points mentioned by you, and will update my proposal soon. 😃

Reply to this comment...

Hi @SahilS - thank you for your proposal! I appreciate how deeply you've gone into Rails code to see how your work will be implemented, but have also produced mockups of how it will look -- a great balance of visual and code planning.

Display of coauthored posts

For this, I wonder if it might be better to think about how we could include coauthored posts /mixed in/ with authored posts? This is a substantial database design problem, since the way we collect coauthored posts is very different, and i find it hard to see how we can order by date for both authored and coauthored posts. That's why i see why you took a simpler and more robust approach. But when i think of the utility of coauthored posts, I wonder if it would be better to consider them "just like regular posts" conceptually. I think the next step here would be to

  1. consider the technical challenges of displaying them together
  2. consult with community reps to see if a separate section is a reasonable solution, given the technical complexity

Then to come to a decision. Does that make sense? This could conceivably happen during the work period, but what do you think in particular about the first question?

Thank you for your time!!!! 🎉

Is this a question? Click here to post it to the Questions page.

Hi @warren! Thanks a lot for your review! I think It's a great idea to show coauthored posts mixed in with authored posts, maybe we can also add a filter button to show them separately too. Talking about the technical possibilities, maybe we can try something like: .where(' = ? OR term_data.parent = ? OR node.uid = ?', coauthored_tag.to_s, coauthored_tag.to_s, uid).order('created DESC') to get both the authored and coauthored posts together?

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Also one more thing - are you @sahilchalia on GitHub? Thank you, just trying to be sure I keep things synced!

Is this a question? Click here to post it to the Questions page.

Hello! No, this is my GitHub profile: Sorry for not including it earlier.

Reply to this comment...

Login to comment.