Should I Open-Source My Python App?

Real Python · Beginner ·📰 AI News & Updates ·8y ago

Key Takeaways

The video discusses the pros and cons of open-sourcing a commercial Python application, considering factors such as business models, competition, and community contribution.

Full Transcript

hey guys I got a Python open source question from Reuben on YouTube awhile ago I just wanted to cover it in this video so Reuben says quick question what if I plan on selling my desktop GUI should I worry about creating more competition for myself if I put the code on github so this is a question about open sourcing a commercial project I assume and whether or not that's a good idea so my thoughts are Reuben I would be very careful be very careful with that it sounds like you're actually selling the product and you're not selling support contracts right like for example this is the business model I guess that people made work with with Linux where well the kernel and and everything is is available for free essentially but companies and and consumers are in some cases paying paying distributions money to get the support you know this is how Red Hat works and how how people have been able to build successful business models in the open source world so I'm not saying this is impossible but it's also a completely different game so if you're selling this app right now let's say on your website you know it's a digital download people pay you a one-time payment they can download the application and then just use it on their computer because you said it's a GUI app so I'm assuming this is for download this is not a SAS application or software as a service application this could you know you could quite possibly create a competitor for your own application for yourself and I don't really see based on the information you gave in the context that you gave I don't really see the benefit of open sourcing this application you know it makes sense to open source it if you want to use it as a portfolio item of sorts I mean you wrote the app you know I'm not sure if it's if having the source out there is is so important you know it still could be an impressive project I'm not sure if that's a valid valid argument for open open sourcing it you are hoping to get contributors from the community you you know maybe you're hoping that people are gonna be submitting patches and maybe making improvements to the app and you can continue to sell it that would be a more valid reason but how likely is that right how likely is someone else to contribute to to a commercial product and essentially for free I'm not sure of that if the right incentive is there sure could you know could be possible again if it's more like a support support kind of situation where you're selling out the support or selling the support and not the actual product then this could work better but again like I feel like it's not you know based on what you said it's probably not like a valid reason to open sourced as as well now another reason could be that you just want this to be open source because you believe in what what that stands for and I can very much relate to that you know I have a couple of open source projects and I don't get paid anything for them I maintain them for free creates a lot of work you know reviewing stuff giving people feedback on their code people get angry if if I let their pull requests sit there for too long and and it you know it's it also creates work but you know I really I benefited from open source so I believe in giving back to the community and you know other ways would be to donate money but I'd rather coat some stuff and then just just give that away so so I can very much relate to that kind of thinking but on the other hand if you if you're building you know if you're building your business around this stuff I mean I'm you know I give up actually I give away most of my teaching material I give away for free here on YouTube and on my website and you know in social media and all these other outlets like I create a ton of free content that I just give away but there's some stuff that is closed source in that sense right where it is it is paid training and it is more in-depth stuff and it is things like things like my book or you know the managing dependencies course and and products like that I don't open sourced and I don't give them away for free I you know that's how I feed my family I want to make some money I want to you know this is what keeps the business alive I'm trying to give away as much as I can because I want to you know just make the Python community better but I also got to make a living somehow so I feel like this is really similar to to this situation here where you got to decide you know which parts where does it make sense to give these things away for free or open-source them and where where do you want to keep them close source because you're gonna invite competitors and in this case you know based on what you said I would probably be careful about open sourcing it because I don't see a huge upside to it and I only see a downside if this is like a one-off digital purchase product that you're selling right now I don't really see the upside of open sourcing it now if you're selling support contracts that could all change you know I'm not saying there's not a business model where this would make sense but based on the context that that I think that is implied here I probably not do it I would maybe do it long term if you stop maintaining the application or you know the it's it's it's outdated and you stopped selling the product at that point it would be sort of a nice gesture to open-source it so that that I can continue to to to exist in the future and other people can maintain it if they want it I mean okay so I just thought of one reason like a valid reason if if you open sourced it and the reason would be that you can say you know when you're selling your app you can say hey you will always let's imagine this is some kind of backup tool like I'd be really concerned about not having the ability to access my data at a later point in time and if if the author says you know if you say well this is open source you can then I would feel more comfortable being able to pull the source and make changes you know and make sure that I can get this to work again the future hire someone to do it if if you ever stopped maintaining it so that this could be like a small reason to like D risk it for your customers but you know you could also offer you know you could offer people to pay extra and then buy the source code that way and again that might also invite competitors and stuff but you know I probably not open-source it at this point because it's very hard to take back once it's open source it's gonna get for it it's gonna get copied you'll never be able to make it close source again it'll just be out there so yeah probably would be like I would be a little bit careful with that in your shoes probably not do it for now all right I hope this advice was helpful let me know how you decide were you gonna do and best of luck with your app yeah so if anybody else has a question if you have a question that you would like to get answered in a future video and just leave a comment below I'll try and do as many videos as I can here and and just give out free advice answer answer these questions because I really enjoy it and spin it's been pretty cool interacting with you know with everyone in the community and getting feedback and just getting better at doing these videos like actually I feel like I really enjoy you know doing these videos and just getting better at talking into the camera over time at least I hope I'm getting better anyway so click the like and subscribe button and stay tuned for next video after PI thinking

Original Description

https://dbader.org/python-tricks ► Improve Your Python Skills, Bit by Bit Should you release your commercial Python app as open-source on GitHub? This is the question I got from YouTube commenter Ruben: "What if I plan on selling my Python desktop GUI app, should I worry about creating more competition for myself if I put the code on GitHub?" In this video I'll share my thoughts on the matter. In short, I think you should be careful about open-sourcing a commercial project. If you plan on selling this app it can be a dangerous move to make the source code to your application available as open-source. Of course there are successful open-source business models (just look to the Linux world, Red Hat etc.) but if you plan on selling a standalone GUI app and can't make money from support contracts and other revenue streams I don't think releasing the code as open-source is a good idea. Watch the video to hear why. What do you think? Should Ruben make his Python app open-source or is he better off keeping it closed-source for now? FREE COURSE – "5 Thoughts on Mastering Python" https://dbader.org/python-mastery SUBSCRIBE TO THIS CHANNEL: https://dbader.org/youtube * * * ► Python Developer MUGS, T-SHIRTS & MORE: https://nerdlettering.com ► PythonistaCafe – A peer-to-peer learning community for Python developers: https://www.pythonistacafe.com FREE Python Coding Tutorials & News: » Python Tutorials: https://dbader.org » Python News on Twitter: https://twitter.com/@dbader_org » Weekly Tips for Pythonistas: https://dbader.org/newsletter » Subscribe to this channel: https://dbader.org/youtube
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Real Python · Real Python · 0 of 60

← Previous Next →
1 A better Python REPL – bpython vs python interpreter
A better Python REPL – bpython vs python interpreter
Real Python
2 Introducing large-type.com – A Utility Website
Introducing large-type.com – A Utility Website
Real Python
3 Reading Hacker News Without Wasting Tons of Time
Reading Hacker News Without Wasting Tons of Time
Real Python
4 Forward References and Python 3 Type Hints
Forward References and Python 3 Type Hints
Real Python
5 Using Sublime Text as your Git Editor
Using Sublime Text as your Git Editor
Real Python
6 Python Code Linting and Auto-Complete for Sublime Text
Python Code Linting and Auto-Complete for Sublime Text
Real Python
7 Make your Python Code More Readable with Custom Exceptions
Make your Python Code More Readable with Custom Exceptions
Real Python
8 Write Better Tests with Sublime Text's Split Layout Feature
Write Better Tests with Sublime Text's Split Layout Feature
Real Python
9 How to Use Sublime Text from the Command Line
How to Use Sublime Text from the Command Line
Real Python
10 Rename Variables with Multiple Selection in Sublime Text
Rename Variables with Multiple Selection in Sublime Text
Real Python
11 Sublime Text Settings for Writing PEP 8 Python
Sublime Text Settings for Writing PEP 8 Python
Real Python
12 Write Cleaner Python with Sublime Text's Indent Guides
Write Cleaner Python with Sublime Text's Indent Guides
Real Python
13 Sublime Text Whitespace Settings for Python Development
Sublime Text Whitespace Settings for Python Development
Real Python
14 Function Argument Unpacking in Python
Function Argument Unpacking in Python
Real Python
15 Python Code Review: Debugging and Refactoring "Conway's Game of Life" +  Automated Tests
Python Code Review: Debugging and Refactoring "Conway's Game of Life" + Automated Tests
Real Python
16 Using "get()" to Return a Default Value from a Python Dict
Using "get()" to Return a Default Value from a Python Dict
Real Python
17 A Python Shorthand for Swapping Two Variables
A Python Shorthand for Swapping Two Variables
Real Python
18 Python Code Review: Refactoring a Web Scraper, PEP 8 Style Guide Compliance, requirements.txt
Python Code Review: Refactoring a Web Scraper, PEP 8 Style Guide Compliance, requirements.txt
Real Python
19 Click & Jump to Test Failures from the Command Line (iTerm2)
Click & Jump to Test Failures from the Command Line (iTerm2)
Real Python
20 Setting up Sublime Text for Python Developers
Setting up Sublime Text for Python Developers
Real Python
21 Sublime Text + Python Guide Overview
Sublime Text + Python Guide Overview
Real Python
22 Python Code Review: Adding Pytest Tests to an Existing Python Web Scraper
Python Code Review: Adding Pytest Tests to an Existing Python Web Scraper
Real Python
23 Type-Checking Python Programs With Type Hints and mypy
Type-Checking Python Programs With Type Hints and mypy
Real Python
24 A Shorthand for Merging Dictionaries in Python 3.5+
A Shorthand for Merging Dictionaries in Python 3.5+
Real Python
25 Python Code Review Flask Web Security Tutorial + Virtualenvs, requirements.txt
Python Code Review Flask Web Security Tutorial + Virtualenvs, requirements.txt
Real Python
26 My Python Code Looks Ugly and Confusing – Help!
My Python Code Looks Ugly and Confusing – Help!
Real Python
27 Setting Up a Programmer Portfolio/Developer Blog – How To Get Started
Setting Up a Programmer Portfolio/Developer Blog – How To Get Started
Real Python
28 Do I Need a GitHub/GitLab/Bitbucket Profile as a Developer?
Do I Need a GitHub/GitLab/Bitbucket Profile as a Developer?
Real Python
29 Programmer Portfolio – Example and Walkthrough
Programmer Portfolio – Example and Walkthrough
Real Python
30 How to Get Your 1st Speaking Gig at a Tech Conference
How to Get Your 1st Speaking Gig at a Tech Conference
Real Python
31 How to Build Your Public Speaking Skills as a Developer
How to Build Your Public Speaking Skills as a Developer
Real Python
32 The Object-oriented Version of "Spaghetti Code" is "Lasagna Code" ?!
The Object-oriented Version of "Spaghetti Code" is "Lasagna Code" ?!
Real Python
33 Setting up Sublime Text for Python Developers – Lesson #1
Setting up Sublime Text for Python Developers – Lesson #1
Real Python
34 Cool New Features in Python 3.6
Cool New Features in Python 3.6
Real Python
35 "is" vs "==" in Python – What's the Difference? (And When to Use Each)
"is" vs "==" in Python – What's the Difference? (And When to Use Each)
Real Python
36 Emulating switch/case Statements in Python with Dictionaries
Emulating switch/case Statements in Python with Dictionaries
Real Python
37 Python Function Argument Unpacking Tutorial (* and ** Operators)
Python Function Argument Unpacking Tutorial (* and ** Operators)
Real Python
38 What Code Should I Put On My GitHub/GitLab/BitBucket Profile?
What Code Should I Put On My GitHub/GitLab/BitBucket Profile?
Real Python
39 A Crazy Python Dictionary Expression ?!
A Crazy Python Dictionary Expression ?!
Real Python
40 String Conversion in Python: When to Use __repr__ vs __str__
String Conversion in Python: When to Use __repr__ vs __str__
Real Python
41 Method Types in Python OOP: @classmethod, @staticmethod, and Instance Methods
Method Types in Python OOP: @classmethod, @staticmethod, and Instance Methods
Real Python
42 Optional Arguments in Python With *args and **kwargs
Optional Arguments in Python With *args and **kwargs
Real Python
43 Python Context Managers and the "with" Statement (__enter__ & __exit__)
Python Context Managers and the "with" Statement (__enter__ & __exit__)
Real Python
44 Installing Python Packages with pip and virtualenv / venv
Installing Python Packages with pip and virtualenv / venv
Real Python
45 "For Each" Loops in Python with enumerate() and range()
"For Each" Loops in Python with enumerate() and range()
Real Python
46 Python Code Review: LibreOffice Automation and the Python Standard Library
Python Code Review: LibreOffice Automation and the Python Standard Library
Real Python
47 Managing Python Dependencies With Pip and Virtual Environments – Lesson #1
Managing Python Dependencies With Pip and Virtual Environments – Lesson #1
Real Python
48 Python Tutorial: List Comprehensions Step-By-Step
Python Tutorial: List Comprehensions Step-By-Step
Real Python
49 Leveraging Python's Implicit "return None" Statements
Leveraging Python's Implicit "return None" Statements
Real Python
50 What's the meaning of underscores (_ & __) in Python variable names?
What's the meaning of underscores (_ & __) in Python variable names?
Real Python
51 Python Data Structures: Sets, Frozensets, and Multisets (Bags)
Python Data Structures: Sets, Frozensets, and Multisets (Bags)
Real Python
52 Writing automated tests for Python command-line apps and scripts
Writing automated tests for Python command-line apps and scripts
Real Python
53 How to find great Python packages on PyPI, the Python Package Repository
How to find great Python packages on PyPI, the Python Package Repository
Real Python
54 Immutable vs Mutable Objects in Python
Immutable vs Mutable Objects in Python
Real Python
55 PyPI vs Warehouse, the Next-Generation Python Package Repository
PyPI vs Warehouse, the Next-Generation Python Package Repository
Real Python
56 pep8.org — The Prettiest Way to View the PEP 8 Python Style Guide
pep8.org — The Prettiest Way to View the PEP 8 Python Style Guide
Real Python
57 My Experience at PyCon 2017 in Portland
My Experience at PyCon 2017 in Portland
Real Python
58 Pylint Tutorial – How to Write Clean Python
Pylint Tutorial – How to Write Clean Python
Real Python
59 "Reverse a List in Python" Tutorial: Three Methods & How-to Demos
"Reverse a List in Python" Tutorial: Three Methods & How-to Demos
Real Python
60 Python Refactoring: "while True" Infinite Loops & The "input" Function
Python Refactoring: "while True" Infinite Loops & The "input" Function
Real Python

The video advises caution when considering open-sourcing a commercial Python application, weighing the potential benefits against the risks of creating competition and losing control over the project.

Key Takeaways
  1. Evaluate your business model and consider alternative revenue streams
  2. Assess the potential benefits of open-sourcing, such as community contribution and portfolio building
  3. Consider the risks of creating competition and losing control over the project
  4. Explore alternative options, such as offering support contracts or selling the source code
  5. Carefully weigh the pros and cons before making a decision
💡 Open-sourcing a commercial project can be a complex decision, requiring careful consideration of business models, competition, and community engagement.

Related AI Lessons

Up next
Tasty Weird! Book 16 by Anh Do · Audiobook preview
Google Play Books
Watch →