diff --git a/content/blog/2018/02/2018-02-19-gsoc2018-announcement.adoc b/content/blog/2018/02/2018-02-19-gsoc2018-announcement.adoc index ee91569f560..b5322545a38 100644 --- a/content/blog/2018/02/2018-02-19-gsoc2018-announcement.adoc +++ b/content/blog/2018/02/2018-02-19-gsoc2018-announcement.adoc @@ -27,7 +27,7 @@ All information about the Jenkins GSoC is available on its link:/projects/gsoc/[ == I am a student. How do I apply? -See link:/projects/gsoc/students[Information for students] for application guidelines. +See link:/projects/gsoc/contributors[Information for students] for application guidelines. First step is to join discussions in the mailing lists in order to introduce yourself, establish connections with the community and potential mentors. The application period starts on March 12 and ends on March 27, but don't let it misguide you! diff --git a/content/blog/2019/03/2019-03-04-gsoc2019-announcement.adoc b/content/blog/2019/03/2019-03-04-gsoc2019-announcement.adoc index eea3a34ca2b..e582d89d057 100644 --- a/content/blog/2019/03/2019-03-04-gsoc2019-announcement.adoc +++ b/content/blog/2019/03/2019-03-04-gsoc2019-announcement.adoc @@ -38,7 +38,7 @@ All information about the Jenkins GSoC is available on its link:/projects/gsoc/[ == I am a student. How do I apply? -See the link:/projects/gsoc/students[Information for students] page for full application guidelines. +See the link:/projects/gsoc/contributors[Information for students] page for full application guidelines. We encourage interested students to reach out to the Jenkins community early and to start exploring project ideas. All project ideas have chats and mailing lists referenced on their pages. diff --git a/content/blog/2020/01/2020-01-29-gsoc-report.adoc b/content/blog/2020/01/2020-01-29-gsoc-report.adoc index 2bf0740e2a7..df392d75db2 100644 --- a/content/blog/2020/01/2020-01-29-gsoc-report.adoc +++ b/content/blog/2020/01/2020-01-29-gsoc-report.adoc @@ -172,7 +172,7 @@ including the number of hours that are expected from mentors, and we even have a section on preventing link:/projects/gsoc/mentors/#conflict-of-interest-prevention[conflict of interest]. When we recruit mentors, we point them to the mentor information page. -We also updated the link:/projects/gsoc/students/[student information page]. +We also updated the link:/projects/gsoc/contributors/[student information page]. We find this is a huge time saver as every student contacting us has the same questions about joining and participating in the program. Instead of re-explaining the program each time, we send them a link to those pages. @@ -287,4 +287,4 @@ Jenkins GSoC pages have been already updated towards the next year, and we invit * link:/projects/gsoc/[Main page with all contacts] * link:/projects/gsoc/2020/project-ideas/[GSoC 2020 Project Ideas] * link:/blog/2019/12/20/call-for-mentors/[GSoC 2020 Call for Mentors and Project Ideas] -* Information for link:/projects/gsoc/students/[students] and link:/projects/gsoc/mentors/[mentors] +* Information for link:/projects/gsoc/contributors/[students] and link:/projects/gsoc/mentors/[mentors] diff --git a/content/blog/2021/03/2021-03-17-gsoc2021-announcement.adoc b/content/blog/2021/03/2021-03-17-gsoc2021-announcement.adoc index 3cf99a3ccf8..7db923b8e6b 100644 --- a/content/blog/2021/03/2021-03-17-gsoc2021-announcement.adoc +++ b/content/blog/2021/03/2021-03-17-gsoc2021-announcement.adoc @@ -40,7 +40,7 @@ All information about the Jenkins GSoC is available on its link:/projects/gsoc/[ == I am a student. How do I apply? -See the link:/projects/gsoc/students[Information for students] page for full application guidelines. +See the link:/projects/gsoc/contributors[Information for students] page for full application guidelines. We encourage interested students to reach out to the Jenkins community early and to start exploring project ideas. All project ideas have chats and mailing lists referenced on their pages. diff --git a/content/blog/2022/03/2022-03-08-gsoc2022-announcement.adoc b/content/blog/2022/03/2022-03-08-gsoc2022-announcement.adoc index 9461ce2b48f..3b1c5e1c549 100644 --- a/content/blog/2022/03/2022-03-08-gsoc2022-announcement.adoc +++ b/content/blog/2022/03/2022-03-08-gsoc2022-announcement.adoc @@ -53,7 +53,7 @@ All information about the Jenkins GSoC is available on its link:/projects/gsoc/[ == How do I apply? -See the link:/projects/gsoc/students[Information for students] page for full application guidelines. +See the link:/projects/gsoc/contributors[Information for students] page for full application guidelines. We encourage interested participants to reach out to the Jenkins community early and to start exploring project ideas. We also encourage participants to join the weekly link:https://docs.google.com/document/d/1OpvMWpzBKtKnYBAkhtQ1dK5zQix3D7RY5g3vDJXkSnc/edit?usp=sharing[Jenkins GSoC office hours], these meetings are set up for participants to meet org admins and mentors and to ask questions. diff --git a/content/blog/2022/11/2022-11-23-get-prepared-for-gsoc.adoc b/content/blog/2022/11/2022-11-23-get-prepared-for-gsoc.adoc index 62fb5ae758a..0685cc69b39 100644 --- a/content/blog/2022/11/2022-11-23-get-prepared-for-gsoc.adoc +++ b/content/blog/2022/11/2022-11-23-get-prepared-for-gsoc.adoc @@ -55,7 +55,7 @@ To move forward, use the documentation available on link:/doc/developer/[jenkins Another way to get experience is to follow the suggestions of the link:/doc/developer/tutorial-improve/[**"Improve a Plugin Tutorial"**]. -And of course read the rules and general advice specific to Google Summer of Code: link:/projects/gsoc/students/[GSoC studends] and https://opensource.googleblog.com/2022/11/get-ready-for-google-summer-of-code-2023.html. +And of course read the rules and general advice specific to Google Summer of Code: link:/projects/gsoc/contributors/[GSoC studends] and https://opensource.googleblog.com/2022/11/get-ready-for-google-summer-of-code-2023.html. Also a useful reading are link:/projects/gsoc/#previous-years[previous year's submission] and recorded meetings. Remember it is always a good idea to let others know about your contributions to the community especially via IRC conversations, GitHub issues, as well as pull requests. diff --git a/content/blog/2023/02/2023-02-01-gsoc-update.adoc b/content/blog/2023/02/2023-02-01-gsoc-update.adoc index aeb48600fbb..93b78670d1b 100644 --- a/content/blog/2023/02/2023-02-01-gsoc-update.adoc +++ b/content/blog/2023/02/2023-02-01-gsoc-update.adoc @@ -35,7 +35,7 @@ The proposals are based on the link:/projects/gsoc/2023/project-ideas/[2023 proj The phase will culminate with the selection of the students/contributors participating in in this year's GSoC. The deadline for the application is April 4. -Please carefully review the guidelines for a successful application on the link:/projects/gsoc/students/[Information for GSoC Contributors] page. +Please carefully review the guidelines for a successful application on the link:/projects/gsoc/contributors/[Information for GSoC Contributors] page. In a nutshell, select a project idea and begin thinking about how you will build a proposal to convince the mentors that you are the best candidate to bring the project to a successful end. diff --git a/content/blog/2023/02/2023-02-23-gsoc2023-announcement.adoc b/content/blog/2023/02/2023-02-23-gsoc2023-announcement.adoc index c4c4101746e..27b1cfb7363 100644 --- a/content/blog/2023/02/2023-02-23-gsoc2023-announcement.adoc +++ b/content/blog/2023/02/2023-02-23-gsoc2023-announcement.adoc @@ -50,7 +50,7 @@ All information about the Jenkins GSoC is available on its link:/projects/gsoc/[ == How do I apply? -Refer to the link:/projects/gsoc/students[Information for students] page for full application guidelines. +Refer to the link:/projects/gsoc/contributors[Information for students] page for full application guidelines. We encourage interested participants to reach out to the Jenkins community early and to start exploring project ideas. We also encourage participants to join the weekly link:https://docs.google.com/document/d/1UykfAHpPYtSx-r_PQIRikz2QUrX1SG-ySriz20rVmE0/edit?usp=sharing[Jenkins GSoC office hours]. diff --git a/content/blog/2024/02/2024-02-23-gsoc2024-announcement.adoc b/content/blog/2024/02/2024-02-23-gsoc2024-announcement.adoc index 883ddb96610..e567af9c796 100644 --- a/content/blog/2024/02/2024-02-23-gsoc2024-announcement.adoc +++ b/content/blog/2024/02/2024-02-23-gsoc2024-announcement.adoc @@ -47,7 +47,7 @@ All information about the Jenkins GSoC is available on its link:/projects/gsoc/[ == How do I apply? -Refer to the link:/projects/gsoc/students[information for contributors] page for full application guidelines. +Refer to the link:/projects/gsoc/contributors[information for contributors] page for full application guidelines. We encourage interested participants to reach out to the Jenkins community early and start exploring project ideas. We also encourage participants to join the weekly link:https://docs.google.com/document/d/1UykfAHpPYtSx-r_PQIRikz2QUrX1SG-ySriz20rVmE0/edit?usp=sharing[Jenkins GSoC office hours]. diff --git a/content/projects/gsoc/2022/application.adoc b/content/projects/gsoc/2022/application.adoc index 7e905a37180..851505b3248 100644 --- a/content/projects/gsoc/2022/application.adoc +++ b/content/projects/gsoc/2022/application.adoc @@ -161,7 +161,7 @@ _Provide your potential contributors with a page containing tips on how to write Welcome and thank you for your interest! To apply to the organization, please follow the link:https:/projects/gsoc/students/#student-application-process[guidelines on our website]. -Before submitting please go through the link:https://google.github.io/gsocguides/student/[GSoC contributor guide] and the link:/projects/gsoc/students/[Jenkins GSoC contributor guide] which documents Jenkins specific requirements. Participating in Google Summer of Code requires 15-20 hours commitment a week over several months. If it may overlap with your study, internship, work or other commitments, we recommend you plan accordingly. +Before submitting please go through the link:https://google.github.io/gsocguides/student/[GSoC contributor guide] and the link:/projects/gsoc/contributors/[Jenkins GSoC contributor guide] which documents Jenkins specific requirements. Participating in Google Summer of Code requires 15-20 hours commitment a week over several months. If it may overlap with your study, internship, work or other commitments, we recommend you plan accordingly. If you have any questions about the application process, please feel free to contact us via link:https://community.jenkins.io/tag/gsoc[Jenkins GSoC Discourse] or in the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[jenkinsci/gsoc-sig Gitter] chat. We also have weekly meetings which are open to everyone. diff --git a/content/projects/gsoc/2022/index.adoc b/content/projects/gsoc/2022/index.adoc index f7144b8e619..1ac90c3ffbf 100644 --- a/content/projects/gsoc/2022/index.adoc +++ b/content/projects/gsoc/2022/index.adoc @@ -45,7 +45,7 @@ please report any issues you discover. == GSoC Contributors -* link:/projects/gsoc/students[Information and application guidelines for GSoC contributors] +* link:/projects/gsoc/contributors[Information and application guidelines for GSoC contributors] * Online Meetup: Introduction to Jenkins in GSoC (link:https://bit.ly/3pbJFuC[slides], link:https://youtu.be/GDRTgEvIVBc[video]) diff --git a/content/projects/gsoc/2023/index.adoc b/content/projects/gsoc/2023/index.adoc index 4b3ffdb5484..67739a1e831 100644 --- a/content/projects/gsoc/2023/index.adoc +++ b/content/projects/gsoc/2023/index.adoc @@ -49,7 +49,7 @@ please report any issues you discover. == GSoC Contributors -* link:/projects/gsoc/students[Information and application guidelines for GSoC contributors] +* link:/projects/gsoc/contributors[Information and application guidelines for GSoC contributors] * Online Meetup: Introduction to Jenkins in GSoC (link:https://bit.ly/3pbJFuC[slides], link:https://youtu.be/GDRTgEvIVBc[video]) diff --git a/content/projects/gsoc/2024/application.adoc b/content/projects/gsoc/2024/application.adoc index 7e905a37180..851505b3248 100644 --- a/content/projects/gsoc/2024/application.adoc +++ b/content/projects/gsoc/2024/application.adoc @@ -161,7 +161,7 @@ _Provide your potential contributors with a page containing tips on how to write Welcome and thank you for your interest! To apply to the organization, please follow the link:https:/projects/gsoc/students/#student-application-process[guidelines on our website]. -Before submitting please go through the link:https://google.github.io/gsocguides/student/[GSoC contributor guide] and the link:/projects/gsoc/students/[Jenkins GSoC contributor guide] which documents Jenkins specific requirements. Participating in Google Summer of Code requires 15-20 hours commitment a week over several months. If it may overlap with your study, internship, work or other commitments, we recommend you plan accordingly. +Before submitting please go through the link:https://google.github.io/gsocguides/student/[GSoC contributor guide] and the link:/projects/gsoc/contributors/[Jenkins GSoC contributor guide] which documents Jenkins specific requirements. Participating in Google Summer of Code requires 15-20 hours commitment a week over several months. If it may overlap with your study, internship, work or other commitments, we recommend you plan accordingly. If you have any questions about the application process, please feel free to contact us via link:https://community.jenkins.io/tag/gsoc[Jenkins GSoC Discourse] or in the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[jenkinsci/gsoc-sig Gitter] chat. We also have weekly meetings which are open to everyone. diff --git a/content/projects/gsoc/2024/project-ideas/cloudevents-plugin.adoc b/content/projects/gsoc/2024/project-ideas/cloudevents-plugin.adoc index 5b9cc0af262..a04c695d1e4 100644 --- a/content/projects/gsoc/2024/project-ideas/cloudevents-plugin.adoc +++ b/content/projects/gsoc/2024/project-ideas/cloudevents-plugin.adoc @@ -10,6 +10,7 @@ skills: - Java - Go - CloudEvents SDK +- CDEvents SDK - Networking mentors: - "krisstern" @@ -21,17 +22,23 @@ links: --- === Background -As the CI/CD world is moving more towards interoperability between multiple platforms, Jenkins should also be compatible with the same interoperability standards. Some of these standards with respect to communication between different CI/CD platforms are put forth by the CloudEvents specification. This spec outlines the structure of CloudEvents, which are produced or consumed by entities which support it, hence making those entities compatible with other CI/CD platforms which also support them allowing them to work together. +As the CI/CD world moves towards interoperability between multiple platforms, Jenkins should also be compatible with the emergent interoperability standards. +Some of these standards concerning communication between different CI/CD platforms are put forth by the CloudEvents and CDEvents specifications. +This spec outlines the structure of CloudEvents, which are produced or consumed by entities that support it, hence making those entities compatible with other CI/CD platforms that allow them to work together. -Jenkins currently does not support CloudEvents, making it hard for users to use it with other platforms which support them. +Jenkins currently supports CloudEvents via a link:../../2021/projects/cloudevents-plugin.adoc[former GSoC project from 2021], however, it does not support CDEvents, making it hard for users to use it with other platforms that support both. -The link:/projects/gsoc/2021/projects/cloudevents-plugin[previous CloudEvents plugin project] in Google Summer of Code was a predecessor to the CDEvents project, that is currently running in the Continuous Delivery Foundation. -To provide some context, the CDEvents project is an incubating project at the Continuous Delivery Foundation. +The link:/projects/gsoc/2021/projects/cloudevents-plugin[previous CloudEvents plugin project] in Google Summer of Code 2021 was a predecessor to the CDEvents project, that is currently running in the Continuous Delivery Foundation, this is such that this older project could not support CDEvents since it existed before CDEvents' inception. +For CDEvents only, we have an link:https://plugins.jenkins.io/cdevents/[existing plugin] that is able to listen to and emit CDEvents, but does not support CloudEvents. +This project aims to extend Jenkins support to both the CloudEvents and CDEvents. More information about that project is available at link:https://cdevents.dev/[]. For this new project, we will enable Jenkins to support CDEvents. That may involve extending or adjusting the CloudEvents plugin so that it supports CDEvents. The most likely scenario is that we will start a new plugin for this project. +For context, we expect the selected contributor to harness both the link:https://github.com/cloudevents/sdk-java[CloudEvents Java SDK] and the link:https://github.com/cdevents/sdk-java[CDEvents Java SDK] to create and read events by the proposed new plugin for Jenkins. +The contributor must also understand how the Jenkins plugin development life-cycle works and gain hands-on experience in plugin architecture design. + ==== Project Details This project idea proposes to implement a Jenkins plugin which extends the Jenkins to make CloudEvents both discoverable and subscribable. Users should be able to set a global configuration to allow users to subscribe and discover CloudEvents. diff --git a/content/projects/gsoc/2024/project-ideas/enhancing-an-existing-llm-model-with-domain-specific-jenkins-knowledge.adoc b/content/projects/gsoc/2024/project-ideas/enhancing-an-existing-llm-model-with-domain-specific-jenkins-knowledge.adoc index 2cedb0da930..a484e7220cc 100644 --- a/content/projects/gsoc/2024/project-ideas/enhancing-an-existing-llm-model-with-domain-specific-jenkins-knowledge.adoc +++ b/content/projects/gsoc/2024/project-ideas/enhancing-an-existing-llm-model-with-domain-specific-jenkins-knowledge.adoc @@ -8,9 +8,12 @@ status: published sig: infra skills: - Python +- React.js - LLM - AI/ML - Jenkins +- Ollama +- LangChain - UI mentors: - "krisstern" @@ -23,8 +26,10 @@ links: === Background -This full-stack project focuses on a proof-of-concept (PoC) to fine-tune an existing open-source LLM model Llama 2 with domain-specific Jenkins data to be compiled, wrangled, and processed by the contributor as a part of an application to be developed, with a minimalistic UI to interact with the user. +This full-stack project focuses on a proof-of-concept (PoC) idea to fine-tune an existing open-source LLM model (such as Llama 2) with domain-specific Jenkins data to be compiled, wrangled, and processed by the contributor as a part of an AI-driven application, to develop a minimalistic UI for the user to interact with the LLM as a complete end-to-end product. +This product is to be installed and run locally on the user's laptop, with tools such as link:https://ollama.com/[Ollama] for setting up and running LLMs locally, and link:https://www.langchain.com/[LangChain] to be used as a framework to construct the LLM-powered app. The contributor will get to be involved in every step of the application development process, from data collection, wrangling, and processing to fine-tuning the model and developing the UI. +They may also get exposed to how to package software to be distributed as a standalone application to be consumed by the end user. === Project Size @@ -38,3 +43,4 @@ Intermediate to Advanced === Links * link:https://www.datacamp.com/tutorial/fine-tuning-llama-2[DataCamp tutorial on how to fine-tune Llama 2] +* link:https://www.datacamp.com/tutorial/how-to-build-llm-applications-with-langchain[How to Build LLM Applications with LangChain Tutorial] diff --git a/content/projects/gsoc/contributors.adoc b/content/projects/gsoc/contributors.adoc new file mode 100644 index 00000000000..959f010c06a --- /dev/null +++ b/content/projects/gsoc/contributors.adoc @@ -0,0 +1,413 @@ +--- +layout: project +title: "Google Summer of Code: Information for GSoC Contributors" +description: "This page aggregates links to internal and external resources for Google Summer of Code contributors" +tags: +- gsoc +project: gsoc +opengraph: + image: /images/gsoc/opengraph.png +--- + +image:/images/gsoc/jenkins-gsoc-logo_small.png[Jenkins GSoC, role=center, float=right] + +This page provides information for contributors about participating in Jenkins GSoC program. +See link:/projects/gsoc[the main GSoC project] page for other information and links. + +== GSoC Contributor Application Process + +First of all, take the time to read the link:https://google.github.io/gsocguides/student/[Google Summer of Code Guide]. + +Also bookmark the link:https://developers.google.com/open-source/gsoc/timeline[timeline]. +Print it and hang it where you can see it every day! + +The aforementioned documents are the reference and the inspiration for this document. + +=== Eligibility steps + +You must verify that you are eligible to participate in the program. +We cannot make any exception. Please: + +. Make sure you are link:https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation[eligible to participate in the program] +. If you are an accepted student in the United States of America on an F1 visa, you must obtain an link:https://developers.google.com/open-source/gsoc/faq#i_am_an_accepted_student_in_the_united_states_on_an_f1_visa_how_do_i_get_authorization_to_participate[authorization before you can participate]. + +=== Application steps + +. Check out the link:/projects/gsoc/2024/project-ideas[GSoC 2024 Project ideas] +. Select an interesting project idea or draft your own proposal. +. Use the link:https://docs.google.com/document/d/1dIlPLXfLbFsvcaHFuwmH9_lSCVm9m6-SgNYTNAnSZpY/[project proposal template] to write your project proposal. +. If you are not familiar with Jenkins, read the introductory info on the website and try using Jenkins with one of your previous projects. +. Join the link:https://community.jenkins.io/c/contributing/gsoc/[Discourse communication channel] +. Join the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[Jenkins GSoC Gitter Chat] +. Using the Discourse channel or the Gitter chat: + .. Introduce yourself to the Jenkins GSoC community, + .. Start a discussion about a Jenkins GSoC project. + .. Be patient, there are time zones, and mentors have full time jobs outside of the Jenkins community. +. Eventually, you may have to join both the Gitter chat and the Discourse channel, but initially you can reach us either way. +. Add GSoC office hours to your calendar (to be announced on link:/projects/gsoc[the main GSoC project] page). +. Recommended: Do some contributions in the area of your project idea + +You can find more details about application steps below. + +[#expectations] +=== Expectations + +When you apply to the GSoC program, you are committing to 30..40 hours of coding per week for the duration of the program. + +. We expect contributors to get involved into project discussions at the beginning of the GSoC contributor application period in order to have the opportunity to discuss the project with potential mentors and to jointly review the proposal drafts. +. We expect contributors to attend at least one office hours during the application period. + +=== Rules of Engagement + +==== Communications are in English + +The official communication language is English, and English is a second +language to most of us. Learning proper English grammar is key to +good communications. This is a challenge for mentors and contributors alike. + +We encourage all contributors to spend some time improving their knowledge of +the English language to increase their chances of success in open source. +There are many good videos on youtube that can help you improve written and spoken +English. + +Remember that the goal when communicating is to be understood. +Frequent grammar mistakes include +link:http://guidetogrammar.org/grammar/runons.htm[run-on sentences] (they are confusing), +link:http://guidetogrammar.org/grammar/fragments.htm[sentence fragments] (they are incomplete), +or miss constructing link:http://guidetogrammar.org/grammar/clauses.htm[clauses] +and link:http://guidetogrammar.org/grammar/phrases.htm[phrases] (confusing). + +It is always good to start at the basics, +that is how to write a sentence, and how to write a paragraph. + +The following links are suggestions to help you improve your communication skills: + +* link:http://guidetogrammar.org/grammar/index.htm[Guide to grammar & writing] +* link:http://web.mit.edu/me-ugoffice/communication/technical-writing.pdf[Sentence structure of Techinical Writing] +* link:https://www.youtube.com/watch?v=4dr5lN1jqRE[Learn English Grammar: The Sentence] +* link:https://www.youtube.com/watch?v=0IFDuhdB2Hk[Writing Skills: The Paragraph] + + +==== Communications are public + +We expect almost all communications to be done in public. + +Contributors and mentors do not communicate privately regarding the technical +aspects of the project or the GSoC program. Mentors are not expected to +respond to such contributors inquiries when made in private. Contributors will +get much better answers when they ask in public rather than in private, +as mentors will collectively complement each other. + +Contributors please note that mentors do not have "special information", +or "privileged information" that they would reveal only to you +privately. Contributors should not ask mentors to hide information from +other contributors, this is simply not how open-source development works. In +open-source development, all ideas are presented and debated publicly. +All the information we have is in the project ideas, or is shared on +the public channels (for example gitter, Discourse channel, office hours). +Contributors are expected to find this information on their own using the +search tools. + +Contributor proposals are also public. Contributors might be afraid of another +contributor copying their proposal or stealing their ideas, but there is +nothing to fear. First, mentors can easily tell when ideas and proposals +have been copied. Second, Jenkins is a community driven open source +development organization, where all proposals and ideas are debated +in public and are visible to the entire community. There is always a +public debate on ideas and proposals. + +[#student-proposals] +=== GSoC Contributor Proposals + +We expect proposals from contributors to contain all the sections discussed in the +link:https://google.github.io/gsocguides/student/[Google Summer of Code Guide], +specifically the link:https://google.github.io/gsocguides/student/writing-a-proposal#elements-of-a-quality-proposal[Elements of a Quality Proposal]. + +Contributors need to use the link:https://docs.google.com/document/d/1dIlPLXfLbFsvcaHFuwmH9_lSCVm9m6-SgNYTNAnSZpY/[project proposal template] +to write their proposals. Contributor proposals should not be confused with link:../proposing-project-ideas[project ideas]. + +We strongly encourage contributors to engage with the mentors as early as +possible. If you wait until the last few days to submit a proposal, +mentors will not have time to discuss with you, and your chances of +being accepted are greatly diminished. + +You can have additional sections or paragraphs if they are applicable: + +. A contribution history section: if you participated in any open-source projects or proposed any patches in Jenkins, you can definitely list them in this section. +. An appendix section of detailed design, architecture or implementation. This section could contain code samples, pseudo-code, diagrams, mock UIs, etc. +. A section related to testing your project: unit tests, integration tests, test automation. +. A section or paragraph on deliverables: demos, presentations, releases (alpha, official). +. A section or paragraph on improvements, bug fixes, benefits to the community. +. Any other section that the contributor deems is applicable and helps the proposal + +In the proposal, we also expect contributors to disclose all known commitments +that overlap with any of the program phases (community bonding, coding +periods, evaluation periods, etc.): + +. Disclose your vacations periods, part-time or full-time job, school, classes, tests, exams, periods of non-availability, etc. +. Failure to disclose known commitments may lead to immediate failure, +especially in the case of another jobs or internship. +. Unexpected events: we understand there can be unexpected events in life, and those cannot be planned. Please inform us as soon as possible if you need time away from the program. You can use private messaging for sensitive information. + +NOTE: Please note that the link:https://community.jenkins.io/c/contributing/gsoc/[Discourse channel] +is publicly visible inside and outside the community. +It is required to use this channel for the initial review and feedback collection. + +=== First begin a communication in link:https://community.jenkins.io/c/contributing/gsoc/[Discourse] + +* Please use the _[GSOC 2024 PROPOSAL] Your Name and Project Title_ subject in discussion. +** If another contributor is interested in the same project idea, you can contribute to their thread, or start your own thread. +* Contents. In the first communication we would be interested to see the following information: +** A short self-introduction: your area of study, interests, background +** Motivation letter. Why are you interested in the Jenkins project? Which projects ideas do you want to work on? +** If you participate in open-source projects, please reference them +** If you have a GitHub, Twitter account, a blog or technical/scientific publications, please reference them as well + +NOTE: In GSoC we do not hire you in the common sense. +Please *DO NOT* send us your CVs/resumes or universal cover letters. +We are mostly interested to understand your interests and your motivation to work in the project. + +=== First contributions + +We highly recommend to make some contributions to the project while you work on the application. +It will help you to polish the proposal, +and mentors will consider contributions and interactions with the community when processing applications. + +[[UsefulLinks]] +=== Useful links + +Here are a list of links to help you get started on participating in Jenkins and in coding for the Jenkins project, +in increasing level of difficulty. + +* link:/project/governance/[Project Governance] +* link:/participate[Participate and Contribute] +* link:https://wiki.jenkins.io/display/JENKINS/Plugin+tutorial[Plugin tutorial] +* link:/blog/2017/08/07/intro-to-plugin-development/[Plugin Development Tutorials, Videos, and More] +* link:https://github.com/jenkinsci/jenkins/blob/master/CONTRIBUTING.md[Contributing to the Jenkins core] + +There is also a +link:https://issues.jenkins.io/issues/?jql=labels%20%3D%20newbie-friendly[list of newbie-friendly issues]. + +Feel free to contact potential mentors and org admins if you need help with choosing a newbie friendly issue to tackle. +See the contact links in project proposals. + +== GSoC Contributor Selection Process + +Once the application period is over, administrators and mentors make a decision on which proposal to accept +based on the proposal submitted to the Google Summer of Code website. +Only proposals submitted before the deadline to the Google Summer of Code website are considered. + +We understand contributors are anxious to know whether they are selected or not, but admins and mentors are +bound to secrecy until Google announces the selection results. +We will not discuss the selection with students until Google makes the announcement. + +== Congratulations, you have been selected... or not + +We thank all GSoc contributors who reach out to us during the application period. +If you have not been selected link:https://google.github.io/gsocguides/student/being-turned-down[read this], +there could be many reasons, and some are even outside of our control. +Do not feel bad, we encourage you to stay with the community, and apply again next year. + +If you have been selected, the community bonding period starts within two days after the announcement. + +== Community Bonding + +As soon as the GSoC contributors are accepted, the community bounding period starts. +During this period, contributors are not expected to be coding immediately. +Instead they are expected to prepare to code. + +A successful community bonding usually leads to successful coding periods. +It is our experience that poor community bonding leads to difficult coding periods. + +Use the community bonding to: + +. Define the communication channels with your mentors: + * If it does not exist, setup a gitter chat room for your project. +. Setup the weekly meeting schedule with your mentors: + * Two meetings per week is recommended, + * Announce your meeting schedule to: + ** The gitter chat of your project. + ** Send a google calendar meeting invite to the mentors, CC the org admins. +. Get introduced to the key stakeholders and contributors in the area of the project by your mentors: + * For example, an introduction to subject matter experts. +. Continue to discuss and plan the project with the community and the mentors: + * Work on the design document of the project. + ** Work on clarifying objectives and expectations, + ** Study, refine and discuss the design and the project plan, + ** Top-level architecture document: + *** Create diagrams of operation, + *** Answer questions such as "How is the user going to use this?", "What configurations are needed?", etc., + *** Some people find it useful to write a mini user guide or how-to guide, as if the project was already done. This usually helps define the project., + * Create an implementation plan with milestones per coding period. + * At this point it may be appropriate to discuss the project on the _jenkinsci-dev@googlegroups.com_ mailing list or on the relevant SIG mailing list. Talk to the mentor about it. +. Setup your computer and your development environment to work on the project (see <>). +. Learn and discuss the process with the mentors: + * Setup the github project, + * Pull-requests, + * Code reviews. +. We use link:https://issues.jenkins.io/secure/Dashboard.jspa[Jira] to track GSoC tasks: + * Create an account using link:https://accounts.jenkins.io/login[this link]. + * Become familiar with navigating Jira. + +== Coding periods + +GSoC contributors are expected to... + +. Work on the GSoC project as it is a full-time employment. + * It means 12 weeks of writing good code, about 20..30 hours per week is an **expected** workload though it can be adjusted upon the agreements with mentors. + * Push code to github almost every day of every coding period. + * Follow the <> + * Chat a line or two about what you are doing, almost every coding day, in your project channel (writing code, writing tests, updating documentation, etc.). + ** Just saying "Hi, today I am working on these classes" or "writing tests for ..." is good enough, but you can of course interact more as needed. + * Write a short summary of the work done each week, published to: + ** A personal blog, or + ** The relevant SIG mailing list, or + ** A paragraph or two should be enough. + ** It's okay to say things like _ and were challenging because of _. + * Interact with the community in a timely fashion when you need help (do not stay stuck without telling mentors). + * Say something when you are stuck, lost in the code, confused about the objectives, etc. + * Produce good quality code with reasonable amount of testing and documentation. + * Follow the link:https://wiki.jenkins.io/display/JENKINS/Code+Style+Guidelines[Code Style Guidelines] + * Have a finalized deliverable at the end of the project. + ** For plugin development projects, this means releasing a plugin to the alpha or to the official update center. + ** Have documentation on how to use the plugin of the features developed during the project. + *** Documentation usually starts at the README file of the github repository + *** The format is either link:https://guides.github.com/features/mastering-markdown/[Github Markdown] or link:https://asciidoctor.org/docs/[Asciidoctor]. +. Take Time off + * You have approximately 5 "vacation days" during the project, do not hesitate to use them if required. + * Notify your mentors in advance when you take time off. + * Use weekends to have a rest, avoid significant overwork and enjoy coding + * Timely notify mentors in the case of emergencies and outages (missing scheduled meetings, etc.). + * Timely notify mentors and org admins about unexpected time commitments (life goes on, it is normal - mentors will let you know if they can't be reached too). +. Be present on-line + * Be around in the project chats during the working hours (the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[Jenkins GSoC Gitter Chat], and the Gitter Chat of your project) + * Be proactive; reach out to the community if required + * Optional: Attend Jenkins governance meetings if the timezone allows + +GSoC contributors are **not** expected to... + +. Strictly follow the originally submitted mini-design and the project proposal + * The world is not ideal, and there may be unexpected obstacles or shortcuts + * Upon the discussion with mentors, any plan can be adjusted + * We expect contributors to achieve at least some goals in the original proposal +. Investigate and solve *every* issue on your own + * We have mentors and experts, who can help you by answering questions and doing joint investigation if required + +=== Evaluations + +At the end of each coding period, GSoC contributors are expected to: + +. Do a public on-line presentation, +.. The presentation consists of Google Slides and a demo, on recorded broadcast. +.. This event is recorded and made public. +.. Prepare for this presentation approximately one week before the end of the coding period. +.. Mentors will offer to do presentation dry-runs, if they forget, contributors should ask for it as needed. +. Publish a summary of your status and the next steps +.. As a blog post published to: +... To the Jenkins website blogs (see link:https://github.com/jenkins-infra/jenkins.io/blob/master/CONTRIBUTING.adoc#adding-a-blog-post[adding a blog post]) +... And announce the blog post on the link:https://community.jenkins.io[Discourse channel]. + +As a part of the Final evaluation, contributors present the project results at the link:https://www.meetup.com/Jenkins-online-meetup/[Jenkins Online Meetup] + +TIP: The secret to making excellent presentations is to be ready ahead of time, and practice, practice, practice. +Write a script, and practice out loud, exaggerate enunciation when you practice, and put on a little smile to lift your voice just enough. +If you create a slide or two per week on the work you have done that week, you will be ready. +Repeating a presentation numerous times will help you breeze through it with fluidity. + +Past years presentations and blog posts may inspire you. Here are some links: + +* GSoC 2018 blog posts: +** link:/blog/2018/07/23/remoting-kafka-plugin-1/[Remoting over Kafka] +** link:/blog/2018/08/17/code-coverage-api-plugin-1/[Code Coverage API] +* GSoC 2016 blog post: +** link:/node/tags/external-workspace-manager/[External Workspace Manager] + +[[codestyle]] +== Code Style Best Practices + +GSoC contributors should adopt best practices as soon as possible in their coding career. +Learn to configure your IDE to have proper spacing and proper indentation is a must. +By default, the IDE you use may not have the correct settings. + +Best practices include topics such as space and indentation, naming conventions for +variables, class members, methods, classes. These are all important when writing code. + +The best practices can be learned: + +* From the link:https://wiki.jenkins.io/display/JENKINS/Code+Style+Guidelines[Code Style Guidelines] +* By reading existing code +* By asking mentors or submit a pull-request and ask for review +* By reading code style guidelines of other organizations found on the internet. Here are some popular ones: +** link:https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/styleguide.md[Twitter Style Guide] +** link:https://google.github.io/styleguide/javaguide.html[Google Java Style Guide] +** link:https://petroware.no/javastyle.html[Petroware Java Programming Style Guidelines] + +Documenting code with Javadoc can be learned by imitation, but it is better to read the reference: +it's link:https://www.oracle.com/technetwork/articles/java/index-137868.html[here]. + +When it comes to testing, Jenkins projects must come with: + +* link:https://wiki.jenkins.io/display/JENKINS/Unit+Test[Unit] tests, +* and for plugins, link:https://github.com/jenkinsci/acceptance-test-harness[Acceptance Test Harness] tests. + +If your project is a plugin and you are ready to release it, +you also need to learn the link:https://wiki.jenkins.io/display/JENKINS/Hosting+Plugins[plugin release process]. + +== Getting in touch + +=== Discourse Channel & Mailing List + +Since the Jenkins community is distributed across all time zones, +and since the gitter chat rooms are more difficult to search, +we recommend using the Discourse channel for most of the communications. + +Contributors should join the following Jenkins mailing lists: + +* _https://community.jenkins.io_ - sync-ups on GSoC organizational topics (meeting scheduling, process Q&A). +* _jenkinsci-dev@googlegroups.com_ - for all technical discussions and the project application (link:https://groups.google.com/g/jenkinsci-dev[archives]). +** Join this list after talking to the org admins and/or the project mentors, and once the project is ready to be discussed with the developers + +Other mailing lists: + +* link:/projects/gsoc/#orgadmin[Org admins mailing list]- for **private** communications with org admins (escalations, issues with mentors) +** Please *DO NOT* use this mailing list for applications and intro emails + +=== Chat + +We use the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[Jenkins GSoC Gitter Chat] +for office hours and real-time discussions. +Note that mentors and org-admins may be unavailable in the chat outside the Office Hours slots (see below). + +Once the projects are announced, mentors and students may switch to another communication channel. + +[[officehours]] +=== Office hours + +In addition to chat, Discourse and mailing lists, we have regular office hours for sync-ups +between students, org admins and mentors. + +See the link:/projects/gsoc/#office-hours[main GSoC page] for the schedule. + +== Post-GSoC + +Congratulations, you have made it to the end! + +Once GSoC is over, final results are announced by Google. But this is not the end of the road. + +You can: + +. Continue to develop your project within the Jenkins community +. Present your work at a local link:/projects/jam[Jenkins Area Meetup] +. Participate in other Jenkins projects +. Participate again next year +. Become a mentor in link:https://summerofcode.withgoogle.com[Google Summer of Code] for next year +. Become a mentor in link:https://codein.withgoogle.com/[Google Code In] + +Depending on the project results, and available budget, we may offer a sponsored trip +to link:https://www.cloudbees.com/devops-world/[DevOps World] or another Jenkins-related event to contributors +who successfully finish their projects. +This sponsorship is not guaranteed though. + +If contributors agree to go to such event, we expect contributors to present their project and to write a blog-post about the trip. +In 2018, one of our students, Pham Vu Tuan, attended DevOps World - Jenkins World, +and wrote link:https://pvtuan10.github.io/essays/20181019-DWJW18.html[this blog post] about it. diff --git a/content/projects/gsoc/index.adoc b/content/projects/gsoc/index.adoc index 8df6b3742a9..bc1e0d532af 100644 --- a/content/projects/gsoc/index.adoc +++ b/content/projects/gsoc/index.adoc @@ -54,7 +54,7 @@ Our documentation will be updated over time to reflect the changes in the GSoC p == GSoC Contributors -* link:/projects/gsoc/students[Information and application guidelines for GSoC contributors] +* link:/projects/gsoc/contributors[Information and application guidelines for GSoC contributors] // * Online Meetup: Introduction to Jenkins in GSoC // (link:https://bit.ly/3pbJFuC[slides], // link:https://youtu.be/GDRTgEvIVBc[video]) diff --git a/content/projects/gsoc/mentors.adoc b/content/projects/gsoc/mentors.adoc index 2b1836bc2ca..17adec1abc7 100644 --- a/content/projects/gsoc/mentors.adoc +++ b/content/projects/gsoc/mentors.adoc @@ -12,7 +12,7 @@ opengraph: image:/images/gsoc/jenkins-gsoc-logo_small.png[Jenkins GSoC, role=center, float=right] This page aggregates links to internal and external resources for Google Summer of Code **mentors**. -GSoC Contributor resources can be found link:/projects/gsoc/students[here]. +GSoC Contributor resources can be found link:/projects/gsoc/contributors[here]. :toc: diff --git a/content/projects/gsoc/roles-and-responsibilities.adoc b/content/projects/gsoc/roles-and-responsibilities.adoc index ea56de41ae5..6c5a1eebf4c 100644 --- a/content/projects/gsoc/roles-and-responsibilities.adoc +++ b/content/projects/gsoc/roles-and-responsibilities.adoc @@ -72,7 +72,7 @@ A technical advisor is one type of subject matter expert. GSoC contributors are the active learners and coders. -To learn more about their role, please see link:/projects/gsoc/students/[information for GSoC contributors] +To learn more about their role, please see link:/projects/gsoc/contributors/[information for GSoC contributors] ## Org Admin diff --git a/content/projects/gsoc/students.adoc b/content/projects/gsoc/students.adoc index e9960c10f03..a9aeaa421a1 100644 --- a/content/projects/gsoc/students.adoc +++ b/content/projects/gsoc/students.adoc @@ -1,413 +1,4 @@ --- -layout: project -title: "Google Summer of Code. Information for GSoC Contributors" -description: "This page aggregates links to internal and external resources for Google Summer of Code contributors" -tags: -- gsoc -project: gsoc -opengraph: - image: /images/gsoc/opengraph.png ---- - -image:/images/gsoc/jenkins-gsoc-logo_small.png[Jenkins GSoC, role=center, float=right] - -This page provides information for contributors about participating in Jenkins GSoC program. -See link:/projects/gsoc[the main GSoC project] page for other information and links. - -== GSoC Contributor Application Process - -First of all, take the time to read the link:https://google.github.io/gsocguides/student/[Google Summer of Code Guide]. - -Also bookmark the link:https://developers.google.com/open-source/gsoc/timeline[timeline]. -Print it and hang it where you can see it every day! - -The aforementioned documents are the reference and the inspiration for this document. - -=== Eligibility steps - -You must verify that you are eligible to participate in the program. -We cannot make any exception. Please: - -. Make sure you are link:https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation[eligible to participate in the program] -. If you are an accepted student in the United States of America on an F1 visa, you must obtain an link:https://developers.google.com/open-source/gsoc/faq#i_am_an_accepted_student_in_the_united_states_on_an_f1_visa_how_do_i_get_authorization_to_participate[authorization before you can participate]. - -=== Application steps - -. Check out the link:/projects/gsoc/2024/project-ideas[GSoC 2024 Project ideas] -. Select an interesting project idea or draft your own proposal. -. Use the link:https://docs.google.com/document/d/1dIlPLXfLbFsvcaHFuwmH9_lSCVm9m6-SgNYTNAnSZpY/[project proposal template] to write your project proposal. -. If you are not familiar with Jenkins, read the introductory info on the website and try using Jenkins with one of your previous projects. -. Join the link:https://community.jenkins.io/c/contributing/gsoc/[Discourse communication channel] -. Join the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[Jenkins GSoC Gitter Chat] -. Using the Discourse channel or the Gitter chat: - .. Introduce yourself to the Jenkins GSoC community, - .. Start a discussion about a Jenkins GSoC project. - .. Be patient, there are time zones, and mentors have full time jobs outside of the Jenkins community. -. Eventually, you may have to join both the Gitter chat and the Discourse channel, but initially you can reach us either way. -. Add GSoC office hours to your calendar (to be announced on link:/projects/gsoc[the main GSoC project] page). -. Recommended: Do some contributions in the area of your project idea - -You can find more details about application steps below. - -[#expectations] -=== Expectations - -When you apply to the GSoC program, you are committing to 30..40 hours of coding per week for the duration of the program. - -. We expect contributors to get involved into project discussions at the beginning of the GSoC contributor application period in order to have the opportunity to discuss the project with potential mentors and to jointly review the proposal drafts. -. We expect contributors to attend at least one office hours during the application period. - -=== Rules of Engagement - -==== Communications are in English - -The official communication language is English, and English is a second -language to most of us. Learning proper English grammar is key to -good communications. This is a challenge for mentors and contributors alike. - -We encourage all contributors to spend some time improving their knowledge of -the English language to increase their chances of success in open source. -There are many good videos on youtube that can help you improve written and spoken -English. - -Remember that the goal when communicating is to be understood. -Frequent grammar mistakes include -link:http://guidetogrammar.org/grammar/runons.htm[run-on sentences] (they are confusing), -link:http://guidetogrammar.org/grammar/fragments.htm[sentence fragments] (they are incomplete), -or miss constructing link:http://guidetogrammar.org/grammar/clauses.htm[clauses] -and link:http://guidetogrammar.org/grammar/phrases.htm[phrases] (confusing). - -It is always good to start at the basics, -that is how to write a sentence, and how to write a paragraph. - -The following links are suggestions to help you improve your communication skills: - -* link:http://guidetogrammar.org/grammar/index.htm[Guide to grammar & writing] -* link:http://web.mit.edu/me-ugoffice/communication/technical-writing.pdf[Sentence structure of Techinical Writing] -* link:https://www.youtube.com/watch?v=4dr5lN1jqRE[Learn English Grammar: The Sentence] -* link:https://www.youtube.com/watch?v=0IFDuhdB2Hk[Writing Skills: The Paragraph] - - -==== Communications are public - -We expect almost all communications to be done in public. - -Contributors and mentors do not communicate privately regarding the technical -aspects of the project or the GSoC program. Mentors are not expected to -respond to such contributors inquiries when made in private. Contributors will -get much better answers when they ask in public rather than in private, -as mentors will collectively complement each other. - -Contributors please note that mentors do not have "special information", -or "privileged information" that they would reveal only to you -privately. Contributors should not ask mentors to hide information from -other contributors, this is simply not how open-source development works. In -open-source development, all ideas are presented and debated publicly. -All the information we have is in the project ideas, or is shared on -the public channels (for example gitter, Discourse channel, office hours). -Contributors are expected to find this information on their own using the -search tools. - -Contributor proposals are also public. Contributors might be afraid of another -contributor copying their proposal or stealing their ideas, but there is -nothing to fear. First, mentors can easily tell when ideas and proposals -have been copied. Second, Jenkins is a community driven open source -development organization, where all proposals and ideas are debated -in public and are visible to the entire community. There is always a -public debate on ideas and proposals. - -[#student-proposals] -=== GSoC Contributor Proposals - -We expect proposals from contributors to contain all the sections discussed in the -link:https://google.github.io/gsocguides/student/[Google Summer of Code Guide], -specifically the link:https://google.github.io/gsocguides/student/writing-a-proposal#elements-of-a-quality-proposal[Elements of a Quality Proposal]. - -Contributors need to use the link:https://docs.google.com/document/d/1dIlPLXfLbFsvcaHFuwmH9_lSCVm9m6-SgNYTNAnSZpY/[project proposal template] -to write their proposals. Contributor proposals should not be confused with link:../proposing-project-ideas[project ideas]. - -We strongly encourage contributors to engage with the mentors as early as -possible. If you wait until the last few days to submit a proposal, -mentors will not have time to discuss with you, and your chances of -being accepted are greatly diminished. - -You can have additional sections or paragraphs if they are applicable: - -. A contribution history section: if you participated in any open-source projects or proposed any patches in Jenkins, you can definitely list them in this section. -. An appendix section of detailed design, architecture or implementation. This section could contain code samples, pseudo-code, diagrams, mock UIs, etc. -. A section related to testing your project: unit tests, integration tests, test automation. -. A section or paragraph on deliverables: demos, presentations, releases (alpha, official). -. A section or paragraph on improvements, bug fixes, benefits to the community. -. Any other section that the contributor deems is applicable and helps the proposal - -In the proposal, we also expect contributors to disclose all known commitments -that overlap with any of the program phases (community bonding, coding -periods, evaluation periods, etc.): - -. Disclose your vacations periods, part-time or full-time job, school, classes, tests, exams, periods of non-availability, etc. -. Failure to disclose known commitments may lead to immediate failure, -especially in the case of another jobs or internship. -. Unexpected events: we understand there can be unexpected events in life, and those cannot be planned. Please inform us as soon as possible if you need time away from the program. You can use private messaging for sensitive information. - -NOTE: Please note that the link:https://community.jenkins.io/c/contributing/gsoc/[Discourse channel] -is publicly visible inside and outside the community. -It is required to use this channel for the initial review and feedback collection. - -=== First begin a communication in link:https://community.jenkins.io/c/contributing/gsoc/[Discourse] - -* Please use the _[GSOC 2024 PROPOSAL] Your Name and Project Title_ subject in discussion. -** If another contributor is interested in the same project idea, you can contribute to their thread, or start your own thread. -* Contents. In the first communication we would be interested to see the following information: -** A short self-introduction: your area of study, interests, background -** Motivation letter. Why are you interested in the Jenkins project? Which projects ideas do you want to work on? -** If you participate in open-source projects, please reference them -** If you have a GitHub, Twitter account, a blog or technical/scientific publications, please reference them as well - -NOTE: In GSoC we do not hire you in the common sense. -Please *DO NOT* send us your CVs/resumes or universal cover letters. -We are mostly interested to understand your interests and your motivation to work in the project. - -=== First contributions - -We highly recommend to make some contributions to the project while you work on the application. -It will help you to polish the proposal, -and mentors will consider contributions and interactions with the community when processing applications. - -[[UsefulLinks]] -=== Useful links - -Here are a list of links to help you get started on participating in Jenkins and in coding for the Jenkins project, -in increasing level of difficulty. - -* link:/project/governance/[Project Governance] -* link:/participate[Participate and Contribute] -* link:https://wiki.jenkins.io/display/JENKINS/Plugin+tutorial[Plugin tutorial] -* link:/blog/2017/08/07/intro-to-plugin-development/[Plugin Development Tutorials, Videos, and More] -* link:https://github.com/jenkinsci/jenkins/blob/master/CONTRIBUTING.md[Contributing to the Jenkins core] - -There is also a -link:https://issues.jenkins.io/issues/?jql=labels%20%3D%20newbie-friendly[list of newbie-friendly issues]. - -Feel free to contact potential mentors and org admins if you need help with choosing a newbie friendly issue to tackle. -See the contact links in project proposals. - -== GSoC Contributor Selection Process - -Once the application period is over, administrators and mentors make a decision on which proposal to accept -based on the proposal submitted to the Google Summer of Code website. -Only proposals submitted before the deadline to the Google Summer of Code website are considered. - -We understand contributors are anxious to know whether they are selected or not, but admins and mentors are -bound to secrecy until Google announces the selection results. -We will not discuss the selection with students until Google makes the announcement. - -== Congratulations, you have been selected... or not - -We thank all GSoc contributors who reach out to us during the application period. -If you have not been selected link:https://google.github.io/gsocguides/student/being-turned-down[read this], -there could be many reasons, and some are even outside of our control. -Do not feel bad, we encourage you to stay with the community, and apply again next year. - -If you have been selected, the community bonding period starts within two days after the announcement. - -== Community Bonding - -As soon as the GSoC contributors are accepted, the community bounding period starts. -During this period, contributors are not expected to be coding immediately. -Instead they are expected to prepare to code. - -A successful community bonding usually leads to successful coding periods. -It is our experience that poor community bonding leads to difficult coding periods. - -Use the community bonding to: - -. Define the communication channels with your mentors: - * If it does not exist, setup a gitter chat room for your project. -. Setup the weekly meeting schedule with your mentors: - * Two meetings per week is recommended, - * Announce your meeting schedule to: - ** The gitter chat of your project. - ** Send a google calendar meeting invite to the mentors, CC the org admins. -. Get introduced to the key stakeholders and contributors in the area of the project by your mentors: - * For example, an introduction to subject matter experts. -. Continue to discuss and plan the project with the community and the mentors: - * Work on the design document of the project. - ** Work on clarifying objectives and expectations, - ** Study, refine and discuss the design and the project plan, - ** Top-level architecture document: - *** Create diagrams of operation, - *** Answer questions such as "How is the user going to use this?", "What configurations are needed?", etc., - *** Some people find it useful to write a mini user guide or how-to guide, as if the project was already done. This usually helps define the project., - * Create an implementation plan with milestones per coding period. - * At this point it may be appropriate to discuss the project on the _jenkinsci-dev@googlegroups.com_ mailing list or on the relevant SIG mailing list. Talk to the mentor about it. -. Setup your computer and your development environment to work on the project (see <>). -. Learn and discuss the process with the mentors: - * Setup the github project, - * Pull-requests, - * Code reviews. -. We use link:https://issues.jenkins.io/secure/Dashboard.jspa[Jira] to track GSoC tasks: - * Create an account using link:https://accounts.jenkins.io/login[this link]. - * Become familiar with navigating Jira. - -== Coding periods - -GSoC contributors are expected to... - -. Work on the GSoC project as it is a full-time employment. - * It means 12 weeks of writing good code, about 20..30 hours per week is an **expected** workload though it can be adjusted upon the agreements with mentors. - * Push code to github almost every day of every coding period. - * Follow the <> - * Chat a line or two about what you are doing, almost every coding day, in your project channel (writing code, writing tests, updating documentation, etc.). - ** Just saying "Hi, today I am working on these classes" or "writing tests for ..." is good enough, but you can of course interact more as needed. - * Write a short summary of the work done each week, published to: - ** A personal blog, or - ** The relevant SIG mailing list, or - ** A paragraph or two should be enough. - ** It's okay to say things like _ and were challenging because of _. - * Interact with the community in a timely fashion when you need help (do not stay stuck without telling mentors). - * Say something when you are stuck, lost in the code, confused about the objectives, etc. - * Produce good quality code with reasonable amount of testing and documentation. - * Follow the link:https://wiki.jenkins.io/display/JENKINS/Code+Style+Guidelines[Code Style Guidelines] - * Have a finalized deliverable at the end of the project. - ** For plugin development projects, this means releasing a plugin to the alpha or to the official update center. - ** Have documentation on how to use the plugin of the features developed during the project. - *** Documentation usually starts at the README file of the github repository - *** The format is either link:https://guides.github.com/features/mastering-markdown/[Github Markdown] or link:https://asciidoctor.org/docs/[Asciidoctor]. -. Take Time off - * You have approximately 5 "vacation days" during the project, do not hesitate to use them if required. - * Notify your mentors in advance when you take time off. - * Use weekends to have a rest, avoid significant overwork and enjoy coding - * Timely notify mentors in the case of emergencies and outages (missing scheduled meetings, etc.). - * Timely notify mentors and org admins about unexpected time commitments (life goes on, it is normal - mentors will let you know if they can't be reached too). -. Be present on-line - * Be around in the project chats during the working hours (the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[Jenkins GSoC Gitter Chat], and the Gitter Chat of your project) - * Be proactive; reach out to the community if required - * Optional: Attend Jenkins governance meetings if the timezone allows - -GSoC contributors are **not** expected to... - -. Strictly follow the originally submitted mini-design and the project proposal - * The world is not ideal, and there may be unexpected obstacles or shortcuts - * Upon the discussion with mentors, any plan can be adjusted - * We expect contributors to achieve at least some goals in the original proposal -. Investigate and solve *every* issue on your own - * We have mentors and experts, who can help you by answering questions and doing joint investigation if required - -=== Evaluations - -At the end of each coding period, GSoC contributors are expected to: - -. Do a public on-line presentation, -.. The presentation consists of Google Slides and a demo, on recorded broadcast. -.. This event is recorded and made public. -.. Prepare for this presentation approximately one week before the end of the coding period. -.. Mentors will offer to do presentation dry-runs, if they forget, contributors should ask for it as needed. -. Publish a summary of your status and the next steps -.. As a blog post published to: -... To the Jenkins website blogs (see link:https://github.com/jenkins-infra/jenkins.io/blob/master/CONTRIBUTING.adoc#adding-a-blog-post[adding a blog post]) -... And announce the blog post on the link:https://community.jenkins.io[Discourse channel]. - -As a part of the Final evaluation, contributors present the project results at the link:https://www.meetup.com/Jenkins-online-meetup/[Jenkins Online Meetup] - -TIP: The secret to making excellent presentations is to be ready ahead of time, and practice, practice, practice. -Write a script, and practice out loud, exaggerate enunciation when you practice, and put on a little smile to lift your voice just enough. -If you create a slide or two per week on the work you have done that week, you will be ready. -Repeating a presentation numerous times will help you breeze through it with fluidity. - -Past years presentations and blog posts may inspire you. Here are some links: - -* GSoC 2018 blog posts: -** link:/blog/2018/07/23/remoting-kafka-plugin-1/[Remoting over Kafka] -** link:/blog/2018/08/17/code-coverage-api-plugin-1/[Code Coverage API] -* GSoC 2016 blog post: -** link:/node/tags/external-workspace-manager/[External Workspace Manager] - -[[codestyle]] -== Code Style Best Practices - -GSoC contributors should adopt best practices as soon as possible in their coding career. -Learn to configure your IDE to have proper spacing and proper indentation is a must. -By default, the IDE you use may not have the correct settings. - -Best practices include topics such as space and indentation, naming conventions for -variables, class members, methods, classes. These are all important when writing code. - -The best practices can be learned: - -* From the link:https://wiki.jenkins.io/display/JENKINS/Code+Style+Guidelines[Code Style Guidelines] -* By reading existing code -* By asking mentors or submit a pull-request and ask for review -* By reading code style guidelines of other organizations found on the internet. Here are some popular ones: -** link:https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/styleguide.md[Twitter Style Guide] -** link:https://google.github.io/styleguide/javaguide.html[Google Java Style Guide] -** link:https://petroware.no/javastyle.html[Petroware Java Programming Style Guidelines] - -Documenting code with Javadoc can be learned by imitation, but it is better to read the reference: -it's link:https://www.oracle.com/technetwork/articles/java/index-137868.html[here]. - -When it comes to testing, Jenkins projects must come with: - -* link:https://wiki.jenkins.io/display/JENKINS/Unit+Test[Unit] tests, -* and for plugins, link:https://github.com/jenkinsci/acceptance-test-harness[Acceptance Test Harness] tests. - -If your project is a plugin and you are ready to release it, -you also need to learn the link:https://wiki.jenkins.io/display/JENKINS/Hosting+Plugins[plugin release process]. - -== Getting in touch - -=== Discourse Channel & Mailing List - -Since the Jenkins community is distributed across all time zones, -and since the gitter chat rooms are more difficult to search, -we recommend using the Discourse channel for most of the communications. - -Contributors should join the following Jenkins mailing lists: - -* _https://community.jenkins.io_ - sync-ups on GSoC organizational topics (meeting scheduling, process Q&A). -* _jenkinsci-dev@googlegroups.com_ - for all technical discussions and the project application (link:https://groups.google.com/g/jenkinsci-dev[archives]). -** Join this list after talking to the org admins and/or the project mentors, and once the project is ready to be discussed with the developers - -Other mailing lists: - -* link:/projects/gsoc/#orgadmin[Org admins mailing list]- for **private** communications with org admins (escalations, issues with mentors) -** Please *DO NOT* use this mailing list for applications and intro emails - -=== Chat - -We use the link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[Jenkins GSoC Gitter Chat] -for office hours and real-time discussions. -Note that mentors and org-admins may be unavailable in the chat outside the Office Hours slots (see below). - -Once the projects are announced, mentors and students may switch to another communication channel. - -[[officehours]] -=== Office hours - -In addition to chat, Discourse and mailing lists, we have regular office hours for sync-ups -between students, org admins and mentors. - -See the link:/projects/gsoc/#office-hours[main GSoC page] for the schedule. - -== Post-GSoC - -Congratulations, you have made it to the end! - -Once GSoC is over, final results are announced by Google. But this is not the end of the road. - -You can: - -. Continue to develop your project within the Jenkins community -. Present your work at a local link:/projects/jam[Jenkins Area Meetup] -. Participate in other Jenkins projects -. Participate again next year -. Become a mentor in link:https://summerofcode.withgoogle.com[Google Summer of Code] for next year -. Become a mentor in link:https://codein.withgoogle.com/[Google Code In] - -Depending on the project results, and available budget, we may offer a sponsored trip -to link:https://www.cloudbees.com/devops-world/[DevOps World] or another Jenkins-related event to contributors -who successfully finish their projects. -This sponsorship is not guaranteed though. - -If contributors agree to go to such event, we expect contributors to present their project and to write a blog-post about the trip. -In 2018, one of our students, Pham Vu Tuan, attended DevOps World - Jenkins World, -and wrote link:https://pvtuan10.github.io/essays/20181019-DWJW18.html[this blog post] about it. +layout: redirect +redirect_url: /projects/gsoc/contributors +--- \ No newline at end of file