Hello RDKit users, As some of you know, I have been exploring ways to fund commercial open source software projects in cheminformatics. I plan to try a crowdsourcing model to help develop and support the mmpdb matched molecular pair system. In short, I'm looking for several people or organizations interested in funding specific new mmpdb features.
At this point I am looking to see if there is enough interest to be worth my time and effort. If you are potentially interested, or have feedback, please respond in private email. I am starting with a small trial. One company contacted me asking if I could add Postgres support and a way to export the property rules. I can deliver that to them. However, it typically takes 2-3 times as much effort to develop software for general use than software for a single customer. (For example, the people who asked me to develop a feature don't need much documentation about what the feature does.) It doesn't seem right to ask them to pay twice as much just so I can add the result back to mmpdb. In addition, others may be interested in those features, and be willing to pay for them. If I contribute the new features back to mmpdb immediately, then they have no reason to pay me since the features are there. While if I wait, I might get more consulting work for redoing the same work. Even better, if several companies pay me for a feature, then the surplus can help fund general mmpdb maintenance beyond those specific features. Crowdsourcing ============= I am planning to run the trial as a Kickstarter-like system. For those who are unfamiliar with Kickstarter, it's a crowdfunding platform. A project creator comes up with a funding goal, and a deadline. If enough people commit funding, the project starts. If there isn't enough funding, then no one does or pays anything. For example, if each of three companies commits to paying EUR 5 000, then the total commitment is EUR 15 000. That exceeds the basic funding goal of EUR 14 000, which means I will develop a new version of mmpdb with the features listed below, and deliver the new version to those backers. Like most Kickstarter projects, I also have a set of concrete stretch goals. I honestly don't think I'll get EUR 50 000 of funding for this trial, but if I do, then I'll be able to make many improvements to the mmpdb project, and make it all available through the main mmpdb repository as soon as it's ready. Goals and Funding levels ======================== Here are the provisional goals and corresponding funding levels. At this point I am looking for feedback before committing to them. o Basic level - EUR 14 000 This pays for my time to add support for: - Postgres database support - rule and property rule export - provide environment fingerprints as SMILES fragments, instead of or in addition to SHA256 hashes Everyone who joins the crowdsourcing consortium would receive the new features, under the existing 3-clause BSD license. However, in order to incentivize people to join, this new code will not be sent upstream to the main mmpdb repository hosted by the RDKit project. (See the Q&A below.) Feedback question: are there any other minor modifications that several people would like, and are willing to pay for? o Delayed upstream level - EUR 20 000 Within 6 months of completion, I will contribute the new features back upstream to the main mmpdb repository for anyone to download and use. The delay is meant to encourage people to fund the project now, rather than wait until it is available for free. Feedback questions: is this a reasonable enticement? Is the delay too short or too long? Perhaps I should consider something else? The main problem with open source funding has always been in trying to get people to pay for things which are already available for free. o Documentation level - EUR 25 000 At this level of support, I rewrite and update the documentation from the current README into a better form that can be hosted on "Read the Docs". Of this, USD 400 will go to sponsoring Read the Docs. o mmpdb/GitHub support - EUR 29 000 At this level of support, I will be able to handle support questions on the mmpdb project page on GitHub for a year. o Instant upstream level - EUR 37 000 At this level of support, the code is distributed upstream at once, with no further delay. o Test suite level - EUR 50 000 At this level of support, I develop a reasonable automated test suite for the project. Currently there are only a few tests to assure that the basic functionality works. This must be fleshed out in order to support long-term development. Good test suites often find new bugs, which I'll also fix. How to join =========== To start, email me to say that you are interested, and how much you are willing to fund. Kickstarter allows people to set their own donation levels, which is likely difficult to explain to the financial department. I can understand, because I know I'm weirded out by the restaurants which allow you to pay what you think the food was worth! Instead, here are the funding levels: Academic/Individual - EUR 1 000 Research group - EUR 3 000 Organization - EUR 5 000 All crowdsourcing consortium members will receive the mmpdb source code under the existing 3-clause BSD license. Those wishing to pay an additional EUR 3 000 will receive 1 year of support. That EUR 3 000 will added to the sum used to determine if a funding goal is met. The funding status will be made public. Funders can be left anonymous or agree to have their names used. I generally use purchase orders, paid to my company's Swedish bank account. I can accept credit card payments through PayPal, though will charge 10% more because of the overhead. If enough people commit to the project, I will send out a formal quote to the backers, and start the purchase order process. Timeline ======== As a rough timeline: Today - Pre-announcement on the RDKit list for planning purposes 1 September - Announcement on the RDKit list 28 September - Lightning talk at the RDKit UGM 1 October - Second announcement on the RDKit list 1 November - Call off the trial if there has not been enough interest 1 December - End of fundraising / see which funding goals are met Note: I define "interest" as people sending me an email saying they/their company wants to join, at a given funding level. It does not mean that I have a purchase order from everyone. It should be seen as a verbal agreement, not a written or financial commitment. Project work will likely start shortly after the interest level meets the basic level goal. If this trial proves very successful (over EUR 30 000 or so), then one likely future crowdsourcing project will be to develop a web interface for mmpdb. Questions & Answers =================== 1) Is it really "open source development" if it isn't available to everyone for free? Most well-known open source software is also available at no cost. However, open source, and free software, describe the rights and freedoms available to the person who receive the software. They do not require that the software be made available for no cost. Think if you modify a GPL project like Open Babel, and distribute the changes to a friend. There's nothing about the GPL, or the principles of open source, which require you to also distribute that code to anyone else. I am influenced by Stallman's essay at https://www.gnu.org/philosophy/selling.html . He states "if you are redistributing copies of free software, you might as well charge a substantial fee and make some money. Redistributing free software is a good and legitimate activity; if you do it, you might as well make a profit from it. ... Distributing free software is an opportunity to raise funds for development. Don't waste it!" 2) What happens to the code if the 'Delayed upstream level' goal of EUR 20 000 isn't reached? That's a tough one. At the very least, any of the backers who receive a copy of the code could contribute the code to the main mmpdb repository in the RDKit project. If there is little interest, I will likely release it after 9 months or a year, and also reduce my involvement in developing open source cheminformatics software, as I cannot continue to do things for free or low wages. 3) What about Oracle support, or feature X? Then let me know. Part of my goal now is to figure out which to include as the features to implement at the basic level. If there's more interest, I might have two feature levels. In any case, I am also available for consulting work. 3) Where should I send questions and suggestions? Right now, private email to me is the best. I'll set up a mailing list and project web page if I get preliminary feedback that it's worth my time to go further with this trial. Thanks for reading to the end! Andrew Dalke da...@dalkescientific.com _______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss