Language Selection

English French German Italian Portuguese Spanish

Latest in Planet Python: Open Source, SaaS and Monetization; Some Python Guides

Filed under
Development
  • Open Source, SaaS and Monetization

    When you're reading this blog post Sentry which I have been working on for the last few years has undergone a license change. Making money with Open Source has always been a complex topic and over the years my own ideas of how this should be done have become less and less clear. The following text is an attempt to summarize my thoughts on it an to put some more clarification on how we ended up picking the BSL license for Sentry.

    [...]

    Open Source is pretty clear cut: it does not discriminate. If you get the source, you can do with it what you want (within the terms of the license) and no matter who you are (within the terms of the license). However as Open Source is defined — and also how I see it — Open Source comes with no strings attached. The moment we restrict what you can do with it — like not compete — it becomes something else.

    The license of choice is the BSL. We looked at many things and the one we can to is the idea of putting a form of natural delay into our releases and the BSL does that. We make sure that if time passes all we have, becomes Open Source again but until that point it's almost Open Source but with strings attached. This means for as long as we innovate there is some natural disadvantage for someone competing with the core product while still ensuring that our product stays around and healthy in the Open Source space.

    If enough time passes everything becomes available again under the Apache 2 license.

    This ensures that no matter what happens to Sentry the company or product, it will always be there for the Open Source community. Worst case, it just requires some time.

    I'm personally really happy with the BSL. I cannot guarantee that after years no better ideas came around but this is the closest I have seen that I feel very satisfied with where I can say that I stand behind it.

  • How to Handle Coroutines with asyncio in Python

    When a program becomes very long and complex, it is convenient to divide it into subroutines, each of which implements a specific task. However, subroutines cannot be executed independently, but only at the request of the main program, which is responsible for coordinating the use of subroutines.

  • When to Use a List Comprehension in Python

    Python is famous for allowing you to write code that’s elegant, easy to write, and almost as easy to read as plain English. One of the language’s most distinctive features is the list comprehension, which you can use to create powerful functionality within a single line of code. However, many developers struggle to fully leverage the more advanced features of a list comprehension in Python. Some programmers even use them too much, which can lead to code that’s less efficient and harder to read.

    By the end of this tutorial, you’ll understand the full power of Python list comprehensions and how to use their features comfortably. You’ll also gain an understanding of the trade-offs that come with using them so that you can determine when other approaches are more preferable.

LWN: The return of Python dictionary "addition"

  • The return of Python dictionary "addition"

    Back in March, we looked at a discussion and Python Enhancement Proposal (PEP) for a new dictionary "addition" operator for Python. The discussion back then was lively and voluminous, but the PEP needed some updates and enhancements in order to proceed. That work has now been done and a post about the revised PEP to the python-ideas mailing list has set off another mega-thread.

    PEP 584 ("Add + and += operators to the built-in dict class") has gotten a fair amount bigger, even though it has lost the idea of dictionary "subtraction", which never gained significant backing the last time. It also has two authors now, with Brandt Bucher joining Steven D'Aprano, who wrote the original PEP. The basic idea is fairly straightforward; two dictionaries can be joined using the "+" operator or one dictionary can be updated in place with another's contents using "+=".

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

More in Tux Machines

Programming: Interview With Guido van Rossum, Python Picks and New Release of Picolibc From Keith Packard

  • Interview Guido van Rossum: “I'd rather write code than papers.”

    Guido van Rossum (1956) is the founding father of the Python programming language, one of the most popular development tools in the world. In 2019 CWI will award him the Dijkstra Fellowship. What led you to come up with a brand new programming language during your time at CWI? “I started at CWI as a junior programmer on a research team with Lambert Meertens, Leo Geurts and Steven Pemberton. They wanted to develop a language which would enable people without programming experience – such as scientists – to start writing computer programs fairly quickly.” “It was at the time that Basic was on the rise due to the arrival of the microcomputer. Meertens looked at this inadequate language with horror. ‘Stamp out Basic!’ Was his motto. In the end, ABC, as our language was called, would not work. The target group could not use it on their microcomputers, which were not powerful enough for it, while Unix users already had other tools. Those users thought ABC was an odd man out.” “Then I came across the so-called Amoeba project. That was a distributed operating system based on a microkernel, developed by Andrew Tanenbaum at the Vrije Universiteit Amsterdam and Sape Mullender at CWI. Not aiming at popularizing their operating system, their first and foremost goal was writing papers. Scientifically it was a breakthrough indeed: those papers are still being studied. I myself was not a researcher but a programmer on that project. I must say thought that there was an atmosphere at CWI in which programmers had a major input in the projects.”

  • Python Tears Through Mass Spectrometry Data

    At the November 2019 Python Frederick event, Conor Jenkins showed the group how mass spectrometry works and how Python saves huge amounts of time when processing the large amount of data produced by a mass spec analysis.

  • Wingware News: Wing Python IDE 7.1.3 - November 14, 2019

    Wing 7.1.3 adds improved and expanded documentation and support for matplotlib, improves the accuracy of code warnings, fixes automatically debugging child processes on Windows with Python 3.8, fixes installing the remote agent from .rpm or .deb installations, solves several issues with runtime type introinspection, allows Open from Project and similar navigation commands from non-Browse vi mode, improves debugger reliability, and fixes about 30 other minor usability issues.

  • Easily specifying colours from the default colour cycle in matplotlib

    Another quick matplotlib tip today: specifically, how easily specify colours from the standard matplotlib colour cycle. A while back, when matplotlib overhauled their themes and colour schemes, they changed the default cycle of colours used for lines in matplotlib. Previously the first line was pure blue (color='b' in matplotlib syntax), then red, then green etc. They, very sensibly, changed this to a far nicer selection of colours.

  • Typing Mercurial with pytype

    Following the recent introduction of Python type annotations (aka "type hints") in Mercurial (see, e.g. this changeset by Augie Fackler), I've been playing a bit with this and pytype. pytype is a static type analyzer for Python code. It compares with the more popular mypy but I don't have enough perspective to make a meaningful comparison at the moment. In this post, I'll illustrate how I worked with pytype to gradually add type hints in a Mercurial module and while doing so, fix bugs! The module I focused on is mercurial.mail, which contains mail utilities and that I know quite well. Other modules are also being worked on, this one is a good starting point because it has a limited number of "internal" dependencies, which both makes it faster to iterate with pytype and reduces side effects of other modules not being correctly typed already.

  • Two Books About the Kivy GUI Framework

    The Kivy Python GUI framework is intriguing. Not only it’s cross-platform but also supports Android. Java is too verbose and low level for me and Kivy is an opportunity for developing native Android apps without leaving Python. Outside of the Kivy project documentation, there are few third-party advanced tutorials that go in more depth than the official tutorials. So, before diving into the code of the Kivy demos, I wanted some books to explore more features and get a broader picture of the framework and what it can do. I found two potentially interesting books: Building Android Apps in Python Using Kivy with Android Studio: With Pyjnius, Plyer, and Buildozer by Ahmed Fawzy Mohamed Gad (Apress, 2019), and Kivy - Interactive Applications and Games in Python - Second Edition by Roberto Ulloa (Packt, 2015).

  • A Qt GUI for logging

    A question that comes up from time to time is about how to log to a GUI application. The Qt framework is a popular cross-platform UI framework with Python bindings using PySide2 or PyQt5 libraries. The following example shows how to log to a Qt GUI. This introduces a simple QtHandler class which takes a callable, which should be a slot in the main thread that does GUI updates. A worker thread is also created to show how you can log to the GUI from both the UI itself (via a button for manual logging) as well as a worker thread doing work in the background (here, just logging messages at random levels with random short delays in between).

  • Picolibc 1.1 Released With POSIX File I/O Support

    Longtime X11 developer Keith Packard has spent a lot of time in recent months while being employed by SiFive working on Picolibc as a new C library for embedded systems. Picolibc is designed solely for embedded use-cases at this point and was formerly developed by Keith under the name newlib-nano. Picolibc 1.1 is out now as the project's second stable release.

  • Picolibc Version 1.1

    Picolibc development is settling down at last. With the addition of a simple 'hello world' demo app, it seems like a good time to stamp the current code as 'version 1.1'.

VXL Launches CloudDesktop On the Go (CoGo), a Truly Portable Linux Micro Thin Client

VXL, a leader in thin clients, endpoint management and digital signage software solutions, launches its new, low cost, CloudDesktop On the Go (CoGo). An ultra-compact and highly portable USB key, CoGo repurposes legacy PCs into a fully functional Linux thin client. Available with a lifetime perpetual license and priced at a highly competitive $77 including first year support, CoGo offers users up to a massive 50% saving over equivalent software solutions. CoGo allows businesses to extend the life of ageing PC hardware by using it to access server-hosted computing sessions or virtual desktop infrastructure. Users simply plug CoGo into a PC and boot from it. The VXL Gio Linux firmware is instantly useable without overwriting the local OS and the converted PC can be managed as thin client. Read more

ALT Linux: Worthy Linux Alternatives, With a Catch

ALT Linux may have a problem with getting English language updates on some of its most recent product releases. The primary geographic audience it serves may not make English a top priority. Yet many of its products are available with the English language intact. The great variety of Linux distros available make ALT Linux a very viable source of options for anyone looking to sample the flexibility the Linux operating system offers. I like the starter kit inventory maintained by the ALT Linux developers. Distro hoppers particularly can focus on trying dozens of desktop varieties without having to adjust to separate distro designs. All of the ALT Linux distros share a common, simple design for ease of use and reliability. Read more

Security: IPFire Update, Latest Patches and Freexian/Debian Report

  • IPFire 2.23 - Core Update 137 released

    We are happy to announce the release of IPFire 2.23 - Core Update 137. It comes with an updated kernel, a reworked Quality of Service and various bug and security fixes. Development around the Quality of Service and tackling some of the bugs required an exceptional amount of team effort in very short time and I am very happy that we are now able to deliver the result to you to improve your networks. Please help us to keep these things coming to you with your donation!

  • Security updates for Friday

    Security updates have been issued by CentOS (kernel), Debian (ghostscript, mesa, and postgresql-common), Fedora (chromium, php-robrichards-xmlseclibs, php-robrichards-xmlseclibs3, samba, scap-security-guide, and wpa_supplicant), Mageia (cpio, fribidi, libapreq2, python-numpy, webkit2, and zeromq), openSUSE (ImageMagick, kernel, libtomcrypt, qemu, ucode-intel, and xen), Oracle (kernel), Red Hat (ghostscript, kernel, and kernel-rt), Scientific Linux (ghostscript and kernel), SUSE (bash, enigmail, ghostscript, ImageMagick, kernel, libjpeg-turbo, openconnect, and squid), and Ubuntu (ghostscript, imagemagick, and postgresql-common).

  • Freexian’s [Raphaël Hertzog] report about Debian Long Term Support, October 2019