Python
Python is an open source programming language and web server runtime environment used for many IndieWeb projects.
Why
There are many reasons why you might want to use Python for an IndieWeb project, including:
- Python is an easy language to start learning.
- You can build applications quickly with Python.
- There are many frameworks that let you use your Python skills to build web applications.
- There are many IndieWeb applications built with Python which you can use as a source of inspiration and learning as you build your own tools.
- There are IndieWeb and Microformats libraries available for Python (i.e. IndieWeb_Utils, Flask_IndieAuth, mf2py and mf2util.
IndieWeb Examples
Examples of indieweb community members who are using Python on their personal sites (alphabetical order):
Bear
Bear's uses Kaku, a Python based static site generator, to run his personal site bearlog and uses the following Python projects:
capjamesg
capjamesg uses Python across his IndieWeb projects. His blog uses a custom-built static site generator called letsjam. He uses Python for his webmention receiver, Micropub endpoint, and other projects.
Beto Dealmeida
Beto uses Nefelibata, a Python based static generator to run his weblog Tao &c.
fluffy
fluffy uses Publ, a Python based web publishing system, to run beesbuzz.biz.
Kartik Prabhu
Kartik Prabhu's personal site Parallel Transport runs on Bundle and uses the following Python IndieWeb projects:
- ronkyuu
- mf2py
- mf2util
Kyle Mahan
Kyle Mahan uses Red Wind (written in Python) to run his personal site http://kylewm.com/ with the following Python projects:
David Reeve
David Reeve's site Lancey Space uses Red Wind with the following Python projects:
Libraries
Generally useful libraries being developed by IndieWeb participants in Python.
- ronkyuu, a collection of tools for sending webmentions and verifying rel=me.
- webmention-tools, utilities to send webmentions and query Webmention.io
- mf2py, a microformats2 parser
- Bleeding-edge development currently being done on Kartik's fork. Will be folded into the master in the future.
- mf2util is a microformats2-specific parsing utility. Useful for reading the relevant properties for comments and reply-contexts. Also has some special handling for date/times that converts them into Python datetime or date objects.
- ninka is a small library to handle indieauth endpoint discovery and auth token validation
- python-indieweb is an example Flask app that implements IndieAuth, webmentions, micropub-endpoint and token-endpoint.
- granary fetches and converts silo data (Facebook, Flickr, Google+, Instagram, and Twitter via their APIs) to/from ActivityStreams, microformats2 HTML and JSON, Atom, and more. Also available as a REST service.
- indieweb-utils is a set of building blocks for implementing IndieWeb applications. indieweb-utils includes features such as a webmention discovery function, implementation of the Post Type Discovery specification, and a reply context generator.
Third-party Libraries
Non-IndieWeb-specific libraries that may still be of interest.
- Requests: By far the best way to interact with any HTML endpoint.
- BeautifulSoup: sits of top of other HTML parsing libraries (lxml or html5lib) and provides a nice interface for wading through HTML, even horribly broken HTML.
- Bleach: sanitizer and autolinker. Useful for removing dangerous code from e.g., for displaying remote content. Excludes almost everything by default.
Projects
IndieWeb projects built with Python:
- Bridgy (open source) runs on Google AppEngine
- granary
- oauth-dropins
- webmention-tools
- mf2py
- Kaku
- Red Wind
- Bundle
- Woodwind
- IndieWeb Search
- IndieWeb_Utils
Hosting
Python does not have PHP's ubiquity, and finding hosting can be a little bit more of a challenge. See web_hosting for more details.
- Google AppEngine (webapp, Django)
- Webfaction
- Heroku (Flask, Django)
- VPS running a WSGI server like uWSGI or gunicorn.