-
Notifications
You must be signed in to change notification settings - Fork 2.7k
GSoC with MuseScore
- About Google Summer of Code
- What's involved
- Contributing outside GSoC
- Applying for GSoC with MuseScore
- Resources
Google Summer of Code (GSoC) is an annual initiative to encourage contribution to open source software development. Every year, thousands of contributors are paid stipends by Google to complete coding projects with roughly 200 open source organizations like MuseScore.
If you're a student, or if you're new to open source software development, this is your chance to gain real-world coding experience under the guidance of an experienced mentor. You get to contribute to a project you love and earn a stipend for the privilege!
First, there's an application process to decide which organizations, mentors, and contributors will participate, and what the projects will be.
Projects range in size from:
- Small (~90 hours)
- Medium (~175 hours)
- Large (~350 hours)
If your application is successful, you'll have a 12 week coding period between May and September in which to complete your project. This deadline can optionally be extended into November if you and your mentor agree. (See the GSoC Timeline for exact dates.)
GSoC is a learning experience. Not all projects are completed successfully, but that's OK! You'll still get the stipend as long as your mentor judges you to have performed adequately during the coding period. The amount paid depends on where you live and the size of the project.
If you're not eligible for GSoC, or if you don't get selected to participate, all is not lost!
Everyone is welcome to contribute to MuseScore's open source development. Contributing is fun, and you get to interact with our team and community, making changes that benefit millions of people around the world.
While you won't receive a stipend for contributing outside GSoC, we've been known to hire community members in the past, so who knows where your efforts might lead! Even if you don't get a job with us, you'll still be able to write about it on your CV/résumé, and link to your pull requests as proof of what you have achieved.
Contributing also improves your chances of getting selected for GSoC in a future year, assuming you are eligible then. (Note that if you contribute too much then you would no longer qualify as a beginner.)
Our team engages with open source developers by providing design and testing support for community projects, as well as feedback in pull requests. Occasionally our designers will jump on video calls with community developers to explain details of a specification. And you can ask in the Discord server if you have any questions about development.
If you'd like to participate in GSoC as a contributor for MuseScore:
-
Check you are eligible
- See FAQs on eligibility and open source beginners (students don't have to be beginners).
- Also see section 7.1 of the program rules.
-
Join MuseScore's Discord server
- Introduce yourself in the
#gsoc
channel ASAP!
- Introduce yourself in the
-
Compile MuseScore
- Follow the compilation steps in this wiki.
- If you get stuck, ask for help in the Discord server's
#development
channel.
-
Submit a pull request
- Fix an issue and send us your code. We don't expect massive changes, but we want to see interesting code samples that demonstrate you know what you're doing. This might be a neat algorithm in 10 lines of code, or a single line in an obscure part of the program. Trivial fixes don't count.
- It doesn't matter what the PR does, or whether it ultimately gets merged or rejected, as long as it demonstrates a good understanding.
- Your first PR must be submitted before the GSoC application deadline. You may continue to make minor edits to your PR after the deadline (e.g. to implement changes requested by reviewers), and you may continue to submit other PRs before or after the deadline.
-
Choose a project
- Remember to discuss new ideas with us before you write a proposal.
-
Write a draft proposal
- Write it in Google Docs and share a link with the mentor so they can comment on it and suggest improvements.
-
Submit your application
- Applications must be submitted via the GSoC website before the deadline. No exceptions.
Once you've applied, you might want to:
-
Improve your application
- You can continue to edit and re-submit your application right up to the deadline.
- It's best to submit early to avoid last-minute mishaps, then amend it later if you are able.
-
Write another proposal
- You can submit up to 3 project proposals (e.g. 2 for MuseScore and 1 for a different organization).
- It's sensible to have at least one backup proposal in case your first choice isn't selected.
- You'll never be asked to work on more than one of your proposals, but it could be any of them, so don't propose anything you're not willing to work on.
-
Submit more pull requests
- This shows us you're keen and enables you to demonstrate understanding of multiple parts of the codebase.
- It's the best way to stand out from the crowd.
If you're interested in becoming a GSoC contributor, you should familiarize yourself with the information on these pages.
Project ideas for GSoC | Project ideas that have been approved by the internal team |
GSoC Proposals | Proposal template and tips for writing a proposal |
GSoC Timeline | Deadlines for applications and projects |
Contributor Guide | How to apply and participate |
FAQs | Answers to frequently asked questions |
Discussion Group | Questions and reminders |
Open Source Blog | News |
Testing
- Manual testing
- Automatic testing
Translation
Compilation
- Set up developer environment
- Install Qt and Qt Creator
- Get MuseScore's source code
- Install dependencies
- Compile on the command line
- Compile in Qt Creator
Beyond compiling
Misc. development
Architecture general
- Architecture overview
- AppShell
- Modularity
- Interact workflow
- Channels and Notifications
- Settings and Configuration
- Error handling
- Launcher and Interactive
- Keyboard Navigation
Audio
Engraving
- Style settings
- Working with style files
- Style parameter changes for 4.0
- Style parameter changes for 4.1
- Style parameter changes for 4.2
- Style parameter changes for 4.3
- Style parameter changes for 4.4
Extensions
- Extensions overview
- Manifest
- Forms
- Macros
- Api
- Legacy plugin API
Google Summer of Code
References