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

NuttX GSoC 2024: Getting Started #11957

Closed
lupyuen opened this issue Mar 21, 2024 · 0 comments
Closed

NuttX GSoC 2024: Getting Started #11957

lupyuen opened this issue Mar 21, 2024 · 0 comments

Comments

@lupyuen
Copy link
Member

lupyuen commented Mar 21, 2024

Welcome to Google Summer of Code 2024! We're submitting NuttX Project Proposals under the ASF Umbrella (Apache Software Foundation).

We expect over 100 ASF Proposals, it will be mighty competitive. (Roughly 19% will be accepted)

Here are the steps for GSoC Mentees and Mentors...

For GSoC Mentees

Hello GSoC Mentees (Students / Contributors): Please do the following...

  1. Register ASAP as a GSoC Contributor at Google GSoC Portal

  2. Please register early because there will be Tax Forms to settle. Stipends will be paid to Mentees directly.

  3. Prepare a Google Doc for the GSoC Proposal. Share the partial, incomplete draft proposal with the Mentor (with Editing Access). So that the Mentor can watch for any issues and highlight earlier.

  4. Use the Apache Template for GSoC

  5. Consider adding items from the Google Template for GSoC

  6. Join the NuttX Mailing List. Email "subscribe" to [email protected]. Reply to the "confirm subscribe" email. Wait for the response: "WELCOME to dev @ nuttx.apache.org"

  7. Get Feedback from the NuttX Community. Post to the NuttX Mailing List and create a NuttX GitHub Issue

    Please link to the posts and issues in the proposal.

  8. Submit a NuttX Pull Request (PR), guided by the Mentor, so that we understand the NuttX Dev Process. Refer to the NuttX PR Guide. See a Sample NuttX PR.

    Please link to the PR in the proposal.

  9. In our Proposal: "Deliverables" and "Scheduling" should be structured as a Sequence of NuttX PRs. Allow sufficient time for PR Review and Approval. Think about the Dependencies between the PRs. (Will an earlier PR block a later PR?)

  10. Consider presenting the project at NuttX Online Workshop, including a Video Demo (if possible), to get more feedback. Submission of Synopsis is due 1 April 2024.

  11. Before 1 April 2024: Submit the Proposal (after Mentor Review) to Google GSoC Portal. If you would like me to review, please send to [email protected]

  12. After Submission: The Mentors will go to GSoC Portal to assign themselves to your project. There will likely be 2 Mentors: Primary Mentor + Backup Mentor.

    In case anything happens to Primary Mentor: The Backup Mentor will fill in your Project Evaluation and make sure that you're paid.

    (GSoC Portal won't indicate which Mentor is Primary or Backup. Please check with your Mentors to verify who's Primary and Backup)

  13. Please don't include any Phone Numbers in the proposal. The proposal may be evaluated by many ASF Mentors across all the ASF Teams. (Name of your Educational Institution is optional)

  14. Can we blog or tweet about the GSoC Submission? Erm probably not a good idea, because many folks will be disappointed if our proposal doesn't get accepted. We can do it later after acceptance.

    Upon Acceptance: Good to do a Weekly Blog Update and post to the NuttX Mailing List.

  15. Should we use AI Tools (ChatGPT) to write the proposal? Personally I prefer proposals that are Authentic, Concise and in Point Form, which really helps the GSoC Reviewers. Use Diagrams where appropriate. Proposals don't need to be too long. (See below)

  16. TODO: Should we add a section on "Project Report"? It will reflect on the Limitations we experienced, the Workarounds we implemented, Potential Solutions, and how it's done in other Operating Systems (Zephyr, Linux, etc)

Project Planning

This is how we might plan for a Large Project (350 hours). We could assume:

  • 12 Weeks of Coding (typical GSoC Length)
  • 8 hours per day, 5 days per week
  • Total Working Hours: 12 weeks * 40 hours per week = 480 hours
  • But Target Hours for Large Project is 350 hours
  • So let's cater 130 hours for other commitments and resting
  • Average Working Hours: 29 hours per week, 5.8 hours per day

Schedule is split into 2 Phases:

  • Phase 1: 6 weeks (e.g. May 27 - July 7)
  • Phase 2: 6 weeks (e.g. July 8 - August 1)

Why 2 Phases? That's because GSoC has Two Evaluations

By splitting into 2 Phases, we can better manage any Task Overruns in Each Phase. (Instead of One Single Monolithic Deliverable)

Also the Tasks in Phase 2 will build upon Phase 1, like an Iterative Development (which might be less risky):

Phase 1:

  • May 27 - June 02: Implement Embedded Rust, C Interoperability with Rust
  • June 03 - June 09: Port the LED Blinky App from C to Rust (Embedded Rust and C Interoperability)
  • June 10 - June 16: Add and test the LED Driver for NuttX on QEMU (RISC-V 32-bit, RISC-V 64-bit, Arm32 and Arm64), Submit the Pull Request
  • [More Tasks]

Phase 2:

  • July 8 - July 14: Implement String Formatting, Heap Allocation in Rust
  • July 15 - July 21: Port the LED Blinky App from C to Rust (Strings and Heap)
  • July 22 - July 28: Add and test the GPIO Driver for NuttX on Ox64 RISC-V Single-Board Computer, Submit the Pull Request
  • [More Tasks]

We may use this GSoC Project Template to plan the GSoC Tasks.

When GSoC begins:

  • We'll use the above spreadsheet to track the progress of each GSoC Task ("% complete")
  • There's a chance that some of these tasks will be blocked due to reasons beyond our control. We will substitute with a similar task and record it here.

Evaluation of GSoC Proposal

ASF Mentors from All ASF Teams (Data Analytics, Java Frameworks, etc) will use this Scoring System to rank >100 GSoC Proposals across all ASF Teams (including Data Analytics, Java Frameworks, etc)

  1. "The ranking process makes sure the most promising applicants get a mentor with an ASF project. The goal is not to identify the “best” projects for the ASF, but the best mentees who have applied to the ASF."

    "Remember, mentoring is all about the mentee and open source as a whole. It is not about the mentors or their projects."

    Which means: The ASF Mentor (from Data Analytics, Java Frameworks, etc) who's evaluating our proposal, might not be totally familiar with NuttX! (And the tech that we propose might not really matter)

    What really matters: It's the Student's willingness to Learn, Experiment and Collaborate with the NuttX Community!

    TODO: Do we tone down the Technical Terms in the proposal? Make it easier to understand?

  2. "Did the student demonstrate that they have the required skills to start the project and learn what’s needed along the way? And how happy are we with the results? (0-4 points)"

    Submitting a NuttX PR will demonstrate this. (See above) Please link to the NuttX PR in the proposal. Draft PRs should be OK too.

  3. "How do we rate the quality of the student’s proposal, in terms of technical relevance, completeness, awareness of issues, and realistic planning (less copy and paste)? (0-4 points)"

    Think Big Picture: How does this project benefit NuttX, ASF and Humankind? Write about it in the proposal. (But not too much)

  4. "How does the mentor rate the student’s chances of success, based on an in-person (face-to-face, video, audio, IRC, email) interview? (0-3 points, or 0-1 if email interview only)"

    Please schedule a Video Call. Make sure Mentee and Mentor are totally comfortable working together for the next 12 weeks.

    (Google says we should ensure our Mentee is not a Deep Fake :-)

    TODO: Should we include "About My Mentor" as a section in the proposal? So the Mentee can state whether they are confident that the Mentor can help them succeed? (Plus any special skills about the Mentor, like Teaching Experience)

  5. "How do we rate the originality of the student’s contributions to the proposal? (0-2 points: 0 if mentor provides proposal, 1 if student builds proposal from suggested ideas, 2 if proposal is original idea from student)"

    Doesn't sound fair to Students who have zero Professional Experience. So we probably won't get full marks for this.

  6. "Did the student work with the project community, on our public mailing lists, to create the proposal? (0-2 points)"

    Get feedback from the NuttX Mailing List and NuttX GitHub Issue. (See above) Please link to them in the proposal.

  7. "Did the student explicitly indicate how much time they are going to dedicate to GSoC for the project’s duration, and mention any other commitments that could conflict with the project (holidays, course work, etc.)? Are we happy with this commitment (it should be their major occupation during the summer)? (0-2 points)"

    Please plan for commitments and contingencies.

  8. "Did the student respond quickly to mentor inquiries? (0-2 points)"

    Please be responsive. But we're also mindful of time zones, health conditions, family commitments, ...

  9. "Are you or your student affiliated in any way (e.g. share(d) the same employer or will do so in the foreseeable future, are you their adviser at university, personal relationships, etc.)? (yes/no)"

    Please declare. Also declare any Sponsored Hardware / Software / Services that will be used in the project. (GSoC Agreement doesn't mention sponsorship)

    TODO: If a Company is keen to Sponsor Hardware / Software / Services to demonstrate their support for our proposal, does it make our proposal stronger?

  10. "Has the mentor fully engaged with the student during the writing of the proposal? (0-4 points)"

    "Does the mentor show an understanding of how to mentor a student? (0-4 points)"

    "Discretionary score: admins may use their experience and the comments of community members to mark a proposal up or down (-4 to +4)."

    "Admin discretionary points (-10 to +10 points, only used to break “deadlocks” across the cut-off point, see below)."

    Extra Points if the Mentor has Teaching Experience, I guess?

    "Admin Discretion" is beyond our control. Just make sure our proposal sounds Authentic and sends Good Vibes :-)

  11. ASF ranks the GSoC Proposals with Cut-Off Points. (Similar to University Admission)

  12. In Summary:

    What's a Good Proposal

    What's a Bad Proposal

gsoc

Accepted Proposals for 2023

In 2023: Out of 138 ASF Submissions, only 25 were accepted. That's 19% acceptance.

There were total 111 ASF Submissions in 2022. So we should expect Over 100 ASF Submissions this year.

  1. How many ASF Submissions had No Mentors?

    In 2023: 57 ASF Submissions (41%) had No Mentors. So they were Automatically Rejected.

    (Maybe some students submitted these original projects without consulting the ASF Ideas List?)

  2. How many ASF Submissions had One Or More Mentors?

    81 ASF Submissions (59%) had One or More Mentors. (Some had 3 Mentors)

    Out of which: 55 ASF Submissions (68%) were Rejected.

    (Even though they had One Or More Mentors)

  3. What about these 55 ASF Submissions with One Or More Mentors? Why were they rejected?

    Reading through the Rejected Proposals: It's not clear why they were Rejected. Some Rejected Proposals were 2 pages only, other Rejected Proposals were 15 - 17 pages long. So Proposal Length doesn't seem to matter.

    (Short Proposals can get accepted, see below)

  4. How are our chances for getting Accepted for GSoC?

    Assuming our ASF Submission has a Mentor: We have a 32% chance of getting accepted.

    Which means that 1 out of 3 ASF Submissions will probably be accepted for GSoC!

    (Google says they might possibly fund more proposals this year)

  5. Are GSoC Proposals rejected because they are too short?

    Not true! We see Accepted Proposals that are 3 pages long. Average is probably 4 to 6 pages. There's an Accepted Proposal with 9 pages, but it includes Code Samples.

    The "Description" section tends to be about 1 page or less. The "Implementation" and "Schedule" sections can be longer.

    If the "Description" exceeds 2 pages, it's probably too long! It might be good to keep our proposal short. Link to External Sites for the long details.

    Making our proposal shorter and easier to review: Might be really helpful!

    (If we spend too much time describing the Problem that we're Solving: Maybe it's a sign that the Problem isn't well understood and recognised?)

105 GSoC Proposals for ASF in 2024

Accepted Proposals for 2024

According to Google GSoC Portal...

  • 105 GSoC Proposals submitted for ASF (pic above)

  • 46 Proposals with One Or More Mentors

  • 28 Proposals were selected for GSoC Ranking

    (After filtering through the quality and mentoring requirements)

  • 22 Proposals were accepted

    (ASF requested Google for 28 slots, but was allocated 22)

For Mentors Only

For New Mentors: We will use Google GSoC Portal to select our Mentored Project. (And to fill in the Midterm and Final Evaluations later)

Don't register as a GSoC Contributor! Use this special (undocumented) way to register as GSoC Mentor...

  1. Please send a "subscribe" email to [email protected]

  2. Reply to the "confirm subscribe" email

  3. Wait for them to approve the request (they will verify you're an ASF Committer): "WELCOME to mentors"

  4. Send an email...

    To: [email protected]
    CC: [email protected]
    Subject: GSoC 2024 mentor request for YOUR_NAME
    Dear NuttX PMC,
    
    Please acknowledge my request to become a mentor for Google Summer of Code 2024 projects for Apache NuttX.
    
    I would like to receive the mentor invite to YOUR_EMAIL
    
  5. Wait for NuttX PMC to +1. Check that they CC'ed to [email protected]!!!

  6. You will receive a Mentor Invite to Google GSoC Portal (pic below)

    Check your Spam Inbox! Sometimes Google GSoC Emails will go to Gmail Spam. (Sigh Google)

  7. Before 2 April 2024: Find our Mentee's Project in GSoC Portal (when it's uploaded) and click "Want To Mentor"...

    Log on to https://summerofcode.withgoogle.com/

    At top right click "ASF (Mentor)". Then click "2024" > "Manage Proposals"

    Screenshot 2024-03-28 at 9 49 27 PM

    A list of proposals will appear. Select the proposal and click "Want To Mentor"

    Want To Mentor

  8. GSoC recommends at least 2 Mentors per Project: Primary Mentor + Backup Mentor. (In case something happens to Primary Mentor, the Backup Mentor will fill in the Project Evaluation and ensure that the Mentee gets paid)

    Please only offer to be Primary Mentor for a Single Project unless you have discussed why you should mentor more than one.

  9. We will NOT use GSoC Portal to rank the ASF Proposals!

    Instead, ASF will send a Google Spreadsheet for us to fill in the points for each ASF Proposal, including the justification for the points. ASF will compile the scores and submit to GSoC Portal.

  10. Subsequent Years: No need to redo the above, just go to GSoC Portal and Accept the GSoC Agreements for the new year

    GSoC Portal will say: "Once an Org Admin has added you to the GSoC Program, you will be able to see the GSoC details here" (pic below)

    Send an email to ASF Mentors Mailing List and wait to be re-added as Mentor...

    To: [email protected]
    Subject: Add to Mentors List
    Hi Org Admin: I have accepted this year's Program Rules and Org Member Agreement. Could you please add me to this year's Mentor List? Thanks.
    

    (BTW: Org Admin for ASF refers to [email protected]. Let's not bug Google for our Org Admin Requests)

    Waiting for Org Admin to add to Mentor List

  11. GSoC Coding officially starts End May, but some students might be busy with exams! Please find out from our Mentee when their exams will end.

  12. Any ASF Committer is allowed to vote for ASF Proposals. (Without Mentoring any Project)

    Just follow the steps above to register for a GSoC Mentor Account, and wait for the instructions from ASF Mentors Mailing List.

  13. Mentors might wanna write up and express the problem clearly. Here's what I wrote: "Why Rust for NuttX Apps" / "Rust Apps for QEMU RISC-V" / "Rust Apps for Ox64 SBC"

  14. NuttX Discord Channel is good for weekly group chats. And for our Students to help each other for GSoC and NuttX matters: https://discord.gg/eAz5QudKSQ

  15. Please read the Email Archive for GSoC Mentors

Screenshot 2024-03-21 at 9 11 41 AM

GSoC Mentors: Primary vs Backup

Google recommends (at least) 2 Mentors per project: Primary Mentor + Backup Mentor. If something happens to the Primary Mentor, the Backup Mentor will do the GSoC Evaluation. (Though the GSoC Portal won't indicate who's Primary and Backup)

From the Email Archive for GSoC Mentors...

"We suggest projects have 2, and even 3, mentors ready to help mentor each contributor project. 1 mentor should be considered the primary mentor (responsible for evaluations, etc.) and the other 1-2 mentors should help primary mentors as much as they can and be ready to step in should the primary mentor need to take some time off for any period of time at any point in the program. There is no indication in the system for primary vs secondary mentors, that is just something your org decides."

"Can I mentor multiple students? The general advice from other mentors is, it’s best to mentor 1 contributor and focus on that contributor so you can give them your full attention, but it’s okay to be a backup mentor for a second project. Don’t spread yourself too thin or it will be a bad experience for everyone - you, the contributor, and the org."

Which means it's probably OK to do "cross-mentoring" for our projects...

Project A:

  • Primary Mentor: Alan
  • Backup Mentor: Me

Project B:

  • Primary Mentor: Me
  • Backup Mentor: Alan

If we have 3 projects (or more): We could probably do "chain-mentoring" for the projects...

Project A:

  • Primary Mentor: Alan
  • Backup Mentor: Betty

Project B:

  • Primary Mentor: Betty
  • Backup Mentor: Me

Project C:

  • Primary Mentor: Me
  • Backup Mentor: Alan

Sample Scoring for ASF Spreadsheet

  1. Want to mentor (Mentor emails):
    EMAIL1
    EMAIL2

  2. Did the student demonstrate that they have the required skills to start the project and learn what's needed along the way? And how happy are we with the results? (0-4 points)
    ???

  3. Explanation
    NAME has successfully completed a NuttX Pull Request, which shows that they are familiar with the NuttX Development Process
    • They are skilled in ??? Programming. They show keen interest in learning Advanced ??? Programming for this project.
    NAME has proven that they can interact well with the NuttX Community to gather feedback (including NuttX PMC)

  4. How do we rate the quality of the student's proposal, in terms of technical relevance, completeness, awareness of issues, realistic planning (less copy and paste)? (0-4 points)
    ???

  5. Explanation
    • This project is impactful because it promises to improve the ???
    of Everyday Gadgets, Home Appliances, Flying Drones etc, as more Consumer Devices get preloaded with the NuttX operating system
    • According to feedback from NuttX Community: This project has various Technical and Learning Challenges. We are grateful that NAME has decided to take on the project, in spite of the challenges
    • As his Mentor, I have documented the challenges here: ???
    • We have created an Agile, Realistic Plan (and a Backup Plan) to ensure that the project will complete successfully, based on Iterative Deliverables. This will mitigate any Technical and Learning Roadblocks.
    • At GSoC Midterm: NAME has agreed to present their interim results at the NuttX International Workshop. This will enable greater engagement with the Global NuttX Community.

  6. How does the mentor rate the student's chances of success, based on an in-person (face-to-face, video, audio, IRC, email) interview? (0-3 points, or 0-1 if email interview only)
    ???

  7. Explanation
    • We have conducted the Interview over Video Conferencing
    • Both Mentor and Student are fully confident that we will work successfully to complete the project in 12 weeks
    NAME appreciates the importance of their work to the NuttX Community, and they're ready to contribute to the NuttX Project (even after GSoC)

  8. How do we rate the originality of the student's contributions to the proposal? (0-2 points, 0 if mentor provides proposal, 1 if student builds proposal from suggested ideas, 2 if proposal is original idea from student)
    ???

  9. Explanation
    • Project Proposal was created based on Technical Concepts provided by Mentor, and fleshed out in detail by Student
    • That's because the Technical Concepts are deeply advanced, only a Mentor with years of NuttX Experience could assemble them into a meaningful project that's manageable for a University Undergrad to execute

  10. Did student work with the project community, on our public mailing lists, to create the proposal? (0-2 points)
    ???

  11. Explanation
    NAME initiated the Feedback Gathering via a GitHub Issue at the NuttX Repository
    • Followed by a post on the NuttX Mailing List
    • They received plenty of valuable feedback from the NuttX Community, including NuttX PMC
    NAME has agreed to continue the Community Engagement via Weekly Blog Updates, and through the NuttX International Workshop

  12. Did student explicitly indicate how much time they are going to dedicate to GSoC for the project's duration, and mention any other commitments that could conflict with the project (holidays, etc.)? And are we happy with this commitment? (0-2 points)
    ???

  13. Explanation
    • We are happy with NAME's Commitments and the Detailed Schedule that they have provided
    • Detailed Schedule includes a Week-by-Week Breakdown, including the working hours per week
    • They are keen to work more than the required hours and on weekends. But we advised them to spread out the working hours (for better work-life balance)

  14. Did student respond quickly to mentor inquiries? (0-2 points)
    ???

  15. Explanation
    NAME was highly responsive in spite of our Time Zones
    • We had many Online Meetings, Online Chats and Emails (response within hours)

  16. Affiliated (yes/no)
    no

@lupyuen lupyuen closed this as completed Apr 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant