-
Notifications
You must be signed in to change notification settings - Fork 676
Closed
Labels
Description
The Bounty (CLOSED)
A bounty of $5,000 (USD) will be awarded to the first person (or team) that can build a MusicXML parser that renders notation with VexFlow. The winner will also be eligible for up to $5,000 of additional development work (so really, this is a $10,000 bounty.)
The Goal
The goal is to implement a MusicXML parser that generates VexFlow notation, similar to how VexTab does.
- The parser must fully support the MusicXML 3 specification.
- Code must be written in ES6, well commented, and neatly organized.
- Code must work in all major browsers in both Canvas and SVG.
- Code is expected full test coverage, along with visual tests for each of the features (similar to the VexFlow tests.)
- VexFlow itself might need updates to support various MusicXML features -- you will send PRs to 0xfe/vexflow to implement these features.
How this will work
- If you're participating, contact me at
[email protected]and let me know. I encourage you to communicate with me regularly as you build this. - Submit your finished repository to
[email protected]atar.bz2(orgzorzipor whatever) archive. - Make sure to include a
README.mdfile with build instructions, test instructions, documentation, etc. - I will review and evaluate your work, and possibly send it back requesting minor changes, corrections, or more information.
- If I like it, you win! You get a check for $5,000, and we might work together on further improvements or other projects (also for which you will get paid.)
Terms and Conditions
(Sorry, but I have to do this.)
- You must be in a country where such bounties are legal, and where there are no trade restrictions placed by the US or Canada.
- Your participation in this bounty will not violate any law applicable to you, or disrupt or compromise any data that is not your own.
- You are solely responsible for any applicable taxes, withholding or otherwise, arising from or relating to your participation in this bounty, including payments.
- You must be at least 13 years old to participate. If you're under 18, you need to get guardian consent before any payment can be made.
- If you win, you must transfer full ownership of the code to me. This means that you may be unable to use, build derivative works from, or redistribute any code developed for this bounty.
- I reserve the right to modify, discontinue, or terminate this bounty at my discretion.
- I shall not be liable to you or to any third-party for any damages that you may incur as a result of your participation in this bounty.
FAQ
Answers to some questions that have been asked so far.
- Does it have to be pure ES6?
Yes. ES6 all the way. - Can I translate from another library or language (e.g., an existing C++ MusicXML parser.)?
No. For ownership reasons, the code has to be entirely your own. - Is there a deadline for this bounty?
There is no deadline, but that may change in the future to something reasonable. - Should I develop this in the open?
Use good judgement. There's nothing stopping someone else from claiming your code as their own and submitting it. - How much test coverage is good enough?
It is important that the final product be easy to maintain, so full test coverage is a hard requirement. Yes, it's tedious, but you will build a better product that way. - What runtime dependencies can I use?
Please try to keep dependencies at a minimum. Ideally, the only dependency you will need is VexFlow, but I can grant one-off exceptions for lightweight open-source libraries such as lodash. If you're not sure, please check with me before you add a new dependency. - I'm interested. How do I start?
Just start. Feel free to send me an e-mail letting me know that you did (or not, it's entirely up to you.) Although, I encourage you to keep a line of communication open with me.
Folyd and javenfang