speced / respec

A tool for creating technical documents and web standards
https://respec.org/
Other
715 stars 386 forks source link

META: Google Summer of Code 2018 #1502

Closed marcoscaceres closed 6 years ago

marcoscaceres commented 6 years ago

🎉 ReSpec has been selected to be part of Google Summer of Code 2018 as a Mozilla project 🎉

This means that there is a really good chance of getting funding for one of you - but it's not yet guaranteed!

Your proposals

Applicants, please read Google's student guidelines for project proposals carefully:

Important to note from above:

This is a competitive program, each year Google turns down many more students than it funds. While pre-proposal activities are key to improving your chances of success, a poorly-written proposal is an easy way to fail.

If the proposals are not strong, all of us risk not getting to work together - so it's on me to make sure our project proposals are highly competitive: we are competing for funds with other projects at Mozilla, so make sure that you choose wisely.

Students interested in working on this (there is about 10 of you!), please:

Proposal due date

I expect the first round of proposals by the 26th of February for me to review.

You have two options:

  1. Marcos gives you a list of tasks to work on. I'll label the issues on github as "GSoC".
  2. You propose a list of things that are of interest to you.

In either case, I expect applicants to do some degree of deep diving into the project and understand what it's being used for, by who, and why. Consider this part of the application process, as it's demonstrating your ability to be self directed.

Please also subscribe to this issue for updates.

If you want to contact me privately with questions, please use "mcaceres@mozilla.com".

I'll update this with more details and large things that need fixing.

Tasks (big ticket items)

More stars, the more important.

WebIDL module rewrite ⭐️⭐️⭐️ ⭐️⭐️

WebIDL is absolutely critical to web specifications - it's how we define APIs for the web.

Unfortunately, the current code base for WebIDL has maintainability problems, bugs, and needs a rewrite.

This task would involve picking up an ongoing attempt to rewrite the IDL module and get it to work with ReSpec's linker. It would also require coming up with clever ways of intelligently linking to web IDL definitions. All while maintaining backwards compatibility with existing specifications.

This would also involve fixing all outstanding WebIDL bugs (e.g., adding support for constructors).

WebIDL validator ⭐️⭐️⭐️

Writing a generalized WebIDL validator would be super useful - one doesn't exist yet. It would emit warnings if it encountered invalid things and display them to spec editors in ReSpec.

Refactor the ReSpec pill ⭐️⭐️

This task would involve rewriting the ReSpec pill from scratch. In the w3c, we have a lot of users who rely on assistive technology. The ReSpec pill is currently only partially accessible, so we want to fix that.

The UI of the pill is also a bit clumsy (e.g., be nice to export a HTML document with a single click). It might be nice to rethink how it works.

Ideally, this task would include removing all use of jQuery, using HTML's dialog element as needed, and decorating the HTML with the appropriate Aria roles. In addition, the pill would need to be made fully keyboard accessible.

The task would require consultation with W3C members that visual impairments that rely on the pill to work properly for them.

Validator and link checking ⭐️⭐️

W3C specifications need to be valid HTML to be published. It would be useful to do validation of the specifications in the background and report issues back to the editor.

Integration with following validators would also be useful:

Cross references ⭐️⭐️⭐️ ⭐️⭐️

This would involve creating a web service that uses the CSS working group's Shepherd bibliographical database to validate cross references. The goal here is to validate references across specifications, so, for example:

A PaymentRequest's onshippingaddresschange attribute is an EventHandler ...

An "EventHandler" is defined in HTML at, so ReSpec should automatically link to the HTML spec (by using this service). The links/references would be cached locally, so to reduce the number of lookups... but would periodically update.

Performance audit ⭐️⭐️

ReSpec documents take on average ~3 seconds to render. Why is it slow? What could we do to make things faster (e.g., documents should render in under 1 second!). Are there things we can push off main thread? What could we do in parallel? What can we defer outright to "idle" time?

Once identified, a plan would be needed for implementing whatever changes are needed, as well as a way of measuring success.

Secure ReSpec ⭐️⭐️

It would be nice to do an audit of ReSpec and lock down places where ReSpec is susceptible to XSS attacks.

Eradicate jQuery and Handlebars ⭐️⭐️

Removing jQuery from the project would make the ReSpec bundle much smaller and make the project easier to maintain. This would involve refactoring many old modules that still rely on it. Same with Handlebars.

General improvements ⭐️⭐️⭐️

The ReSpec issues list contains a number of small feature requests or enhancement request that would make the project much more useful (e.g., automatic linking of pluralized words).

It would be useful to triage the list of proposed enhancements into a nice set of things that could be worked on over the summer.

marcoscaceres commented 6 years ago

Added some tasks above. I would not expect anyone to be able to do more than 3 over the summer.

saschanaz commented 6 years ago

WebIDL module rewrite

I was thinking about porting IDL and other templates into hyperHTML (#1136), should I skip IDL part?

Eradicate jQuery and Handlebars

Hmm, probably I can just keep going? Those two may cause some merge conflicts, whoever faster will be happier 😁

saschanaz commented 6 years ago

For those who wants to replace jQuery:

You may choose to use Sizzle.js to do progressive migration. Sizzle.js is a CSS selector library internally used by jQuery, and you may find it useful when dealing with jQuery-specific selectors:

$("a:contains('text')") // returns jQuery object
Sizzle("a:contains('text')") // returns an array containing a standard HTMLAnchorElement
marcoscaceres commented 6 years ago

I was thinking about porting IDL and other templates into hyperHTML (#1136), should I skip IDL part?

I'd like to share what I have locally with you and have a chat about it. Would be great to plan this out a bit, as it's basically the most important part or ReSpec.

haeungun commented 6 years ago

@marcoscaceres @saschanaz I am very interested in Eradicate jQuery and Handlebars Can I take look? I will send my proposal ASAP.

saschanaz commented 6 years ago

The Handlebars part are being done in #1510 (WIP) and #1514. AFAIK the jQuery part is not, it will be great if you take a look 👍

haeungun commented 6 years ago

@saschanaz @marcoscaceres

I am writing the first draft of my proposal for GSoC 2018. I am considering my tasks at least 2 things. First one is Eradicate jQuery. And the second one is might be ..

I was thinking about porting IDL and other templates into hyperHTML (#1136),

This task is very interesting. Can this task be valid for GSoC 2018? If so, I want to add this task to my proposal.

If you can talk about this task more concretely. It will be great for me. Thanks!

p.s Is there any recommended ticket counts for GSoC 2018?

saschanaz commented 6 years ago

This task is very interesting. Can this task be valid for GSoC 2018?

The other templates part are done with #1514. For IDL part, @marcoscaceres has a work-in-progress branch (#1510) so you may want to take a look at it.

marcoscaceres commented 6 years ago

Potential candidate students: If you are wondering if you have the JS skills to participate in this project, try converting this code to async/await: https://github.com/w3c/respec/blob/develop/src/core/issues-notes.js#L144

shubhshrma commented 6 years ago

@marcoscaceres We can submit a PR or it's for practice? :smile:

marcoscaceres commented 6 years ago

Submitting a PR would be great.

marcoscaceres commented 6 years ago

Great solutions coming in for https://github.com/w3c/respec/issues/1502#issuecomment-368250097 already! I’ll wait until the 1st of March for more solutions. These will help me evaluate your programming skills.

Lot’s of ways to solve that!

marcoscaceres commented 6 years ago

I've attempted to expand on the "Refactor the ReSpec pill" task above, as I'd received feedback that it was not entire clear what needed to be done.

marcoscaceres commented 6 years ago

Just a reminder that your FIRST DRAFT proposals are due this week (actually, today!... but will extend it until Friday as I'll read them over the weekend).

Reminder, please email me a link to a Google Doc privately (marcos@marcosc.com) - and make sure I have the ability to edit the document!

marcoscaceres commented 6 years ago

I'm marked some issues as "good first issue" to help folks who still want to get started.

marcoscaceres commented 6 years ago

Thanks everyone who has sent in proposals. I've started to review them - please wait for my feedback.

Please note: Mozilla has put up a template for us to use for the proposals: https://wiki.mozilla.org/SummerOfCode/ApplicationTemplate

After you receive my initial feedback, please move your content into those headings. Don't add additional headings or things.

Some of the proposals I've received are overly lengthy. Please try to limit your proposal to 3 pages max - if you think you need more space, discuss with me. However, there should be no reason why your application is longer than 3 pages.

marcoscaceres commented 6 years ago

All, I made it through most, but not all proposals. If you've not received feedback yet, I'll try to get to you tomorrow (Monday).

General feedback for everyone: your proposals need to be concise and straight to the point. Don't include things that are not relevant to the template headings. Please also don't expect the reviewer to click on many links - they should have all the info they need from what you've written.

For "Open Source Development Experience", concisely list the projects you've worked on, and pick 2 of your best code examples to link to. I've already asked all of you to solve a simple programming challenge above, so can vouch for your technical skills. However, if a reviewer wants to see more, make sure they see your best collaboration and work.

When talking about "why Mozilla", please make sure you've read the Mozilla Manifesto. Please also read the W3C's mission. That should help you hopefully understand where ReSpec sits in helping the mission of both.

Stay tuned for more feedback.

sidvishnoi commented 6 years ago

CSS working group's Shepherd bibliographical database

I am interested in doing the cross-reference task. How can i get some details on the database?

saschanaz commented 6 years ago

1424 is related with the Shepherd task.

goelrohan6 commented 6 years ago

@marcoscaceres can you please review #1560

marcoscaceres commented 6 years ago

All, I think I've now reviewed all your proposals (if I missed yours by accident, then please email me!!!).

Looking at the timeline, you can start submitting your proposals from this week, until March 27 16:00 UTC. Please follow Google's instructions for how to submit.

Remember, these are your proposals, and the suggestion I've left for you are, well, just suggestions. So make sure you have them proof-read by your colleagues, friends, family, lecturers, etc. and are of the highest quality. Make sure you feel it is the best it can be - take your time, work to improve your proposals over the next week on your own.

Again, this process is extremely competitive - and only 1 of you (of 10+ people who have sent me proposals) will be accepted. To quote a student from the Student Guide:

“It took me 3 years and 12 proposals to finally get into the program. If none of your proposals gets accepted, sit back and relax. You have a whole year ahead to improve your role with the open-source community by writing more code.”

So, don't feel bad if you are not selected! And you can apply for multiple projects if you want to increase your chances (I think up to five, but I understand it's very time consuming).

Lastly, thank you everyone who has participated so far. I've been humbled by the interest in the project, and it's been super inspiring to see you all working so well together. I hope you will continue to contribute to ReSpec after you submit your proposal, and while we wait for the GSoC results. This is a safe space to learn about and contribute to open source, so take advantage of it!

Good luck! 🤞Unfortunately, I won't be able to review any more proposals - as I've got to get back to my paid work. However, I'll of course continue to review and help with any pull requests.

marcoscaceres commented 6 years ago

I think everyone's proposals are in, so closing this. Thanks again everyone!

marcoscaceres commented 6 years ago

Good luck everyone tomorrow (or day after, depending on your timezone!) on the GSoC announcement. If you are not selected and want to know why, I'm happy to provide you with some feedback and where/how to improve for next year.

Thanks again to all of you for participating. It's been a privilege collaborating with you all for the last few months.