We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

How to make money with your Python Open-Source Project

00:00

Formale Metadaten

Titel
How to make money with your Python Open-Source Project
Serientitel
Anzahl der Teile
160
Autor
Lizenz
CC-Namensnennung - keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
How to make money with your Python Open-Source Project [EuroPython 2017 - Talk - 2017-07-12 - PythonAnywhere Room] [Rimini, Italy] Developers create new open-source projects every day. As the project becomes popular they have to invest more and more time into it's development and of course at some point a question arises: "How can I make some money with my project ?" In this talk we will try to answer this question. We will talk about different models of making money, their pros and cons. We will concentrate on Python Open-Source projects mostly and try to answer the following questions: What to sell? Where to sell? How to distribute? How to license? After this talk you will have a clear understanding of how you can make money with your project. What your next steps should be and how you can get the actual profit while still continuing making your customers happy
95
Vorschaubild
1:04:08
102
119
Vorschaubild
1:00:51
QuellcodeOpen SourceZahlenbereichAutorisierungTabelleRechter WinkelPunkt
MagnetkarteTransaktionPermanenteProzess <Informatik>ResultanteDienst <Informatik>MereologieEigentliche AbbildungMathematikTransaktionClientLesen <Datenverarbeitung>AuswahlaxiomOrdnung <Mathematik>Web SiteKonditionszahlQuellcodeEindeutigkeitTermMultiplikationsoperatorElektronische PublikationPhysikalische TheorieEin-AusgabeZellularer AutomatVerschlingungSchaltwerkGruppenoperationVorlesung/Konferenz
GoogolBildschirmfensterMultiplikationsoperatorInformationVerschlingungWeb SiteArithmetisches MittelSnake <Bildverarbeitung>SoftwareVorlesung/Konferenz
QuellcodeFreewareFunktion <Mathematik>VersionsverwaltungPay-TVGatewayEigentliche AbbildungSystemprogrammierungAuswahlaxiomKanalkapazitätInformationsspeicherungMinkowski-MetrikEndliche ModelltheorieKollaboration <Informatik>Rechter WinkelDifferenteBenutzerschnittstellenverwaltungssystemGraphische BenutzeroberflächeTypentheorieDienst <Informatik>Open SourceExogene VariableAdditionUmwandlungsenthalpieART-NetzFramework <Informatik>PlastikkarteFunktionalEinfügungsdämpfungVersionsverwaltungQuellcodeMinimalgradFontProzess <Informatik>Pay-TVDatenverarbeitungBildverarbeitungKonfiguration <Informatik>BenutzeroberflächeInverser LimesWeb SiteFreewareInformationsspeicherungSoftwareMinkowski-MetrikE-MailNeuroinformatikFamilie <Mathematik>Produkt <Mathematik>GatewayEigentliche AbbildungPhysikalisches SystemTransaktionKanalkapazitätMailing-ListeElektronische PublikationProgrammfehlerVorlesung/Konferenz
VersionsverwaltungPay-TVSoftwarePortscannerDistributionenraumFreewareKonfiguration <Informatik>Automatische IndexierungServerVerzeichnisdienstDatenstrukturOrdnung <Mathematik>ZeichenkettePasswortInstallation <Informatik>ZeitbereichUmwandlungsenthalpieInternetworkingPlastikkarteService providerMagnetkarteAutorisierungImplementierungPasswortCodeKonfiguration <Informatik>ZahlenbereichZellularer AutomatElektronische PublikationProzess <Informatik>Inverser LimesPunktMultiplikationsoperatorRechenschieberVersionsverwaltungPay-TVWeb-SeiteDienst <Informatik>Wurzel <Mathematik>Ein-AusgabeInhalt <Mathematik>TransaktionRechter WinkelFreewareIntegralService providerDifferenteLie-GruppeMailing-ListeBildschirmmaskeKonditionszahlMereologieTermInternetworkingEinfügungsdämpfungSoftwaretestProdukt <Mathematik>NeuroinformatikPlastikkarteIndexberechnungWärmeübergangGüte der AnpassungCodecMAPCodierungDistributionenraumGatewayServerAuthentifikationInstallation <Informatik>StandardabweichungEinsAdditionArithmetisches MittelDatenloggerUmwandlungsenthalpieComputeranimation
MagnetkartePay-TVVersionsverwaltungAusgleichsrechnungZeitbereichService providerVorzeichen <Mathematik>Codierung <Programmierung>HydrostatikRechenschieberE-MailAusnahmebehandlungDynamisches SystemMechanismus-Design-TheorieGenerator <Informatik>E-MailProdukt <Mathematik>DokumentenserverKartesische KoordinatenMultiplikationsoperatorRechter WinkelService providerOpen SourceDomain-NameImplementierungAdditionWort <Informatik>ZahlenbereichKonfiguration <Informatik>Zellularer AutomatVerknüpfungsgliedEndliche ModelltheorieDigitales ZertifikatPlotterBitVersionsverwaltungUmsetzung <Informatik>Pay-TVGatewayPunktSoftwareSoftwareentwicklerNatürliche ZahlOffene MengeDienst <Informatik>EinfügungsdämpfungKlasse <Mathematik>PhysikalismusSchnittmengePatch <Software>QuellcodeWeb SiteSichtenkonzeptGüte der AnpassungGefangenendilemmaSpeicherabzugProgrammfehlerAdressraumLokales MinimumCoxeter-GruppeCodierungCloud ComputingComputeranimation
Transkript: Englisch(automatisch erzeugt)
Hi, everyone. It seems that according to the number of people here, most of the people are rich already and don't need any money. Anyway, who has some open source project? Okay.
And who has some open source project which is actually used not only by yourself? Nice. So, why am I giving this talk anyway? I'm the author of three open source projects. The first one is more or less popular.
The second one is also doing good. And the third one was a mistake. It's not used by anyone. But anyway, it was an interesting exercise. At some point, I started to think if I have a successful open source project, maybe I can make some money out of it, right?
So, just to give you a brief idea about this Python Redmine project. It exists for three years by now. It has 255 stars on GitHub which doesn't seem to be a lot, but it depends with what to compare. Because, for example, the most successful PHP client for Redmine exists already for five years and has 500 stars.
So, I think we're doing good there. There are approximately 70 unique visitors per day and around 9,000 downloads per month.
So, as you can see, really nothing special here. I mean, any one of you can come up with a project like this. So, I still was able to make some money with it. So, let's see what I've tried. So, at first, I decided to try donations. The most obvious choice.
I remember these nice buttons that I saw in a lot of projects. And I thought this should work and it's a way to make money. So, I registered at one of the services, put a button on the website and linked the readme file.
And I started to dream about money. So, I waited one month, two months, three months, nothing. I didn't receive a single donation in three months.
By the way, did any one of you ever donate to some project? Okay. So, I thought maybe I'm using the wrong service and I registered at another one and the result was the same. Nothing changed. And no one even tried to contact me saying like, hey Max, I tried to donate but something didn't work, you know.
I was really depressed. And I didn't know what was wrong. I mean, a lot of people claimed that they received donations. So, unfortunately, I didn't succeed. But in the meantime, people were opening GitHub issues and download counter was growing.
So, everything was fine but still donations didn't work. I don't know why. I don't know what was wrong. Maybe I just didn't have these nice users in my user base.
So, let's go quickly through pros and cons of donations. First of all, it's the easiest way of receiving money and it can be tax-free if done properly. What properly is heavily dependent on your country so you better consult with your tax advisor.
But this is, it comes at a cost. So, actually, it's not really free because these donation services ask you for a fee per transaction. So, let's say if someone donates you one euro, you'll receive actually, let's say, 70 euro cents, for example.
So, some of these services require you to be a non-profit, registered as a non-profit. Some of these services don't accept payments from all over the world. So, some users won't be able to donate at all. And finally, in most of these services, you will need to have a bank account in US
or so-called European Union trusted countries. So, if you want to go with donations, choose your service wisely. Read the terms and conditions carefully. So, donations didn't work for me, but I didn't give up.
I decided to add another possible source of money, sponsorship. So, how can this work in theory? This is very rarely happens, but if a company is really heavy user of your project, they can suggest you permanent full-time job to work on your project.
A company or individual can pay you for implementing specific feature that is very urgently needed. Or you can offer extended support for a small fee, like 24-7 support by phone, for example. Speaking about pros and cons, the good part is that you will have established relationships.
You will have an order from a customer and if you do your job properly and in time, the chances are very high that you will receive more requests from this customer again. The bad part is that this will be considered as an income, so you will have to pay taxes
and also you now will have obligations. So, if before this project was just a hobby for you, and you could devote as much time as you want to do, now you will have deadline for some specific feature to be implemented
and you will have to manage more time more carefully. Regarding sponsorship, I put this link also information that I am ready. I am ready, please send me requests.
So, I am a very patient person, I waited for one year, no one contacted me ever. Actually, it's not really true, there was one guy. He contacted me and he asked me to implement something, but then he just disappeared. So, yeah, it didn't work for me as well. So, the next thing that you can do is to use advertisement or negware techniques.
So, the idea is simple, you registered some AD network like Google AD for example and put a banner on your website and you just earn some money when someone clicks on it.
And you can also add these negware techniques in your project, meaning when a software constantly, let's say, pops up some window asking to pay to get rid of this window or you can insert some random timeouts or some other weird things which can annoy your user and make them pay.
So, regarding pros and cons, everything is obvious here. It's very easy to do and it's basically a do-nothing income because once you set up everything, you just need to wait for money to come. But on the other side, it annoys your users and you may lose them completely.
And this, of course, will also be considered as an income, so be prepared to pay taxes. I didn't try this way of making money because I don't think this will be appreciated by my users, so I started to search for something else. Another option of making money is collaborative funding, which is very close to donations,
with the only difference that in collaborative funding you raise funds for a specific feature to be implemented or a specific bug to be fixed. There are several projects that successfully use this way of making money, like PyPy or Django as framework, and a lot of projects raise funds on bound resources platform.
So, regarding pros and cons, it's the same as donations, plus you have obligations here,
because if you raise some funds, of course people expect you to implement this feature or fix this bug by a specific date. This is also something that I didn't want to try because I already had a very bad experience with donations.
So finally, this brings us up to a freemium model. The idea is very simple, you have a free version with some basic functionality and you have a premium version with some additional features. And you know why? This finally worked.
So this is what I will talk about next, because it's not as simple as it sounds. So, regarding pros and cons of this freemium model, there are no obligations, no deadlines, you are the boss, you decide when and what to release. You can choose a proper payment gateway, which means that if you choose the right one,
you will be able to accept payments from the worldwide and you will be able to set up some additional payment systems instead of the usual visa or Mastercard only policy, which a lot of services have.
And you will also be able to set up prices per country, for example if you want to support people in Africa, you can set up a very low price for them, which will be controlled by checking that the card was issued in this country.
And of course this will be considered as an income and you have to pay fees for the payment gateway. Either pay transaction or per month, it depends on the gateway policy. So, we decided to go with this freemium model, now we want to find out how can we restrict our free version.
So, the most obvious is to make it feature limited, meaning some features will only be available in the freemium version. It can also be capacity limited, let's say you are writing some data processor tool
and you can restrict the free version by only processing files not larger than 1GB for example. Another option is to limit support channels, so let's say your users only receive support on GitHub with free version
and with the premium version you add email or telephone support or users of free version don't receive support at all. You can also add a seat restriction, which means that the free version can only be used on one computer but not across the network.
And you can introduce storage space limitations, which is suitable for software as a service model. Let's say you have an image processing service and it's open sourced on GitHub but you can also host it yourself with a nice user interface and users can upload files let's say only for 5MB with the free account.
And there can be other restrictions as well of course, that just depends on the product and your fantasy. For my product I chose features, feature restrictions and support limitations.
So the next step is to figure out the licensing problem. The common approach here is to go with dual licensing, which means that there are two licenses, one for free version and the second one for the premium version.
So I suggest you to have a look at these two websites. The first one is from Open Source Initiative, which lists almost all possible licenses. And the second one is from GitHub People, which is a very nice and intuitive user graphical interface which can help you to choose the right license.
And you can also see here a list of most popular licenses. For my project I chose Apache license, which is also used by Python requests. Django for example uses PSD3 and basically you need to invest some time into reading all these licenses to figure out which is right for your project.
After we chose the license for the free version, we need to choose the license for the premium one. This is more complicated, but there is an easy way. There is a nice license generator, which you can see on this slide.
It's just part of the form and you just need to fill the form and you will get the generated license. And if you feel paranoid you can just insert some fake data and then just modify it on your local computer. So the next question is how are we going to distribute our product with free version? It's easy and obvious, you just upload it to PyPI.
But how to distribute the premium version? So the answer is to host a private PyPI server with authentication. So there are different options available for this purpose. Some of them have more features than others.
But because we just want to start selling and we don't want to invest more time into setting up this PyPI service, we don't know how good our sales will be. I think there is no point in going with any of these options.
There is an easier way. We are just going to use Apache as our private PyPI server. What you basically need to do is to create a PyPI folder in the root, create .htx file with contents shown on this slide.
And depending on the Apache version you may not need the last two lines. And you need to create a folder which has the name of your project and put project related files generated by setup tools inside. And we'll also need a .ht password file with access data for our users. Let's have a look at it quickly.
So on the left side we can see an .ht password file with access data for 16 users. These data is encoded for Apache to understand it. And on the right we have an access data for the same 16 users but it's not encoded. This is what we will give to our users when they will buy our premium version.
So now the question is how to generate these codes. The quick and dirty implementation of this generator. You need to specify the amount of codes you want to generate, the path to .ht password and the file with clean passwords and that's it.
You basically run this generator code once and until you reach the specified number of sales you don't have this problem anymore. And you upload this generated code to the payment gateway which will do the distribution for you.
And here's an example how we can use our new private PyPI server with PIP. Basically it's absolutely the same as standard PIP installed. You just have to add minus i option to tell PIP that it should access our private PyPI server and not the public one. This approach with Apache server takes 5 minutes to set up and we can use Apache log files to track the user activity.
And if our sales will go really well we can just add a full feature each PyPI server transparently for our users.
So we're almost done. The last question is how or where to sell. So the easiest option is to sell at some online marketplace. The problem with this approach is because not many people are trying to sell their Python
projects there is no Python specific marketplace or at least I wasn't able to find it. And usually marketplaces charge you more per transaction or introduce additional fees because they don't have their own solutions for payment processing. So they need to pay some payment provider their fees.
And there's also limited customization options and limited options to withdraw money. Basically you will only have only one option just to monthly transfer money to a bank account. So the next option is internet acquiring. This is usually provided by your bank where you have your bank account.
Basically this is just a page where user enters the card access details and press the buy button and transaction happens. The good thing about internet acquiring is that you will have the lowest possible fees but there are other problems.
First this is a very low level solution which means that you will have to write some code to integrate with this. And because this is provided by your bank usually only cards are accepted meaning
no PayPal or other options and usually there are no customization options available at all. And the money will go to your account in this bank and that will be the only option that you will have. And finally our winner is the payment provider. The integration is very easy. Usually you don't have to write any code at all.
Though most of the providers also give you an API if you want to implement some low level integration and to control all the aspects of integration. There are usually several options provided to withdraw money and there are
a lot of customization options available and a lot of different payment methods. But fees are usually higher than internet acquiring but still lower than the marketplace ones. So let's have a brief overview of some of the payment providers.
So here we have a list of some payment providers together with the value they charge per transaction if your customers pay with Visa or MasterCard. Value charged usually depends on the payment method used by your customer.
So let's say if you choose Braintree and your customer will pay with American Express they will charge you 2.9% instead of 1.9. Or let's take Paylane if your customer pays with American Express here they will charge you only 15 Euro cents without any percentage.
But for JCB for example which is widely used in Japan Paylane will charge you 3.6% plus 25 Euro cents. So you really have to choose your payment provider carefully. You have to read all these terms and conditions.
Regarding for example Avangate it has the highest fee but the thing is that they work with almost all the countries. So for example if you are in Russia most of these providers won't work for you but Avangate will because brave people work there probably.
And Avangate also allows you to send your money to a special prepaid MasterCard option which is provided by a company called Payoneer which gives you a number of interesting opportunities as well.
So fitting it all together the first step is to develop a premium version of the product then to prepare project licenses. Then you need to register a domain name and set up SSL certificate for it because without that a payment gateway will refuse to register you.
And also if you want to have HTTPS support then people won't be happy and you will have to add the special trusted host option. Then you need to set up private PyPI and upload your premium version there. Next you need to sign up for the chosen payment gateway and upload your generated codes there
or you can also set up dynamic access codes generation mechanism if it's supported by the payment provider. And you can finally start selling. So what will happen when someone wants to buy your product?
They will fill in the payment details and then they will receive an email with instructions how to download, how to install the application, your package from your private PyPI repository.
So your customer can just copy and paste this and install the package with PyPI as usual. So what if you don't have a project? Create one. I mean don't be afraid to try. When I started my project three years ago I didn't have an idea that I would be standing here in front of you telling you how I succeeded.
It takes some time of course for success to come but just find the right idea and be patient that it should work. And that's it. If you have any questions ask. Thank you.
Thanks Max. Very interesting presentation. Any questions? Hi. What do you think about the bounty source model?
Do you think? Because as far as I can see it's not very used. So do you think it's the model that it's broken or the website, the service? Well good question. Good question. Yeah I also noticed that it's not really really popular and not really used but still some projects use it.
I don't know. I mean from my point of view the model is nice and right but I don't know why people just don't use it. I also had a dilemma of how to monetize open source. I actually earned two euros in donations in all my career as open source developers.
And I want to ask what you think about the ethics of SAAS, software as a service, if you've tried that and what you think about the model for open source ethics. That's what I mean.
Can you repeat the last part? Open source is kind of like having an ideology and I want to know what's your opinion about doing it as a software as a service, as a cloud service. Actually I like this idea very much because as I said, I mean I gave an example so you can open source the core maybe of the project on GitHub.
And then you can implement some nice service for your users on top of it. This way you will have a lot of users in the open source community who will send you patches and fixes maybe for your bugs.
And I know some projects that use this model successfully so I think it's nice. I would also use it but I just didn't come up with the right idea. I was wondering what about bitcoins or stuff like that for payments. Have you thought about it? Does it work?
No, I didn't think about that and I didn't see any payment provider that supports it. I'm sure there are some but I didn't really search for them. Yeah, okay, okay.
You can use a payment provider, BitPay or stuff like this but you can also just give your bitcoin address and send me something. So you wouldn't need a payment provider and so you don't pay a fee or you don't need a bank account or anything like this.
People from all over the world can send you money without currency conversion issues. Look into it. Maybe something to consider, thanks. Okay, we don't have time for more questions. You can of course ask.
Let's thank again Max for this very interesting presentation. Thanks Max.