Zwillingssterns Weltenwald
Published on Zwillingssterns Weltenwald (http://www.xn--drachentrnen-ocb.de)

Startseite > Going from Python to Guile Scheme - a natural progression

Going from Python to Guile Scheme - a natural progression

py2guile book [1]

Python is the first language I loved. I dreamt in Python, I planned in Python, I thought I would never need anything else.

 - Free: html [2] | pdf [3]
 - Softcover: 14.95 € [1]
   with pdf, epub, mobi
 - Source: download [4]
   free licensed under GPL

I will show you why I love Python

Python is a language where I can teach a handful of APIs and cause people to learn most of the language as a whole. — Raymond Hettinger (2011-06-20) [5]

  • Pseudocode which runs
  • One way to do it
  • Hackable
  • Batteries and Bindings
  • Scales up

Where I hit its limits

Why, I feel all thin, sort of stretched if you know what I mean: like butter that has been scraped over too much bread. — Bilbo Baggins in “The Lord of the Rings”

  • Dual Syntax: What we teach new users is no longer what we use
  • Ceremony crops in
  • Complexity is on the rise

And how I lost its shackles

You must unlearn what you have learned. — Yoda in “The Empire Strikes Back“

  • Guile Scheme [6] compared to the strengths of Python
  • Guile Scheme [6] shortcomings
  • Guile [6] beyond Python

Guile Scheme [6] is the official GNU extension language, used for example in GNU Cash [7] and GNU Guix [8] and the awesome Lilypond [9].

Accompany me on a path beyond Python

Every sufficiently complex appli­ca­tion/langu­age/tool will either have to use Lisp or reinvent it the hard way. — Greenspuns 10th rule [10]

  • Buy the softcover: 14.95 € [1] (includes the ebook)
  • Read for free: html [2] | pdf [3]
  • Download the source: from Sourcehut [4]

As free cultural work [11], py2guile is licensed under the GPLv3 or later [12]. You are free to share, change, remix and even to resell it as long as you say that it’s from me (attribution) and provide the whole corresponding source under the GPL (sharealike).

For instructions on building the ebook yourself, see the README in the source.

Happy Hacking!

— Arne Babenhauserheide

Gratis py2guile from Freenet

py2guile book [13]

py2guile [13] is a book I wrote about Python and Guile Scheme. It’s selling at 14.95 €](https://www.epubli.de/shop/buch/47692) for the printed softcover.

To fight the new german data retention laws, you can get the ebook gratis: Just install Freenet [14], then the following links work:

  • py2guile.epub [15]
  • py2guile.mobi [16]
  • py2guile.pdf [17]
  • py2guile-0.9.0-fn.tar.gz [18]

Escape total surveillance and get an ebook about the official GNU extension language for free today!

Python chooses Github, therefore I’m releasing the py2guile PDF for free

py2guile book [3]

Python is the first language I loved. I dreamt in Python, I planned in Python, I thought I would never need anything else.

  Download “Python to Guile” (pdf) [3]

You can read more about this on the Mercurial mailing list [19].

 - Free: html [2] | pdf [3]
   preview edition
   (complete)

Yes, this means that with Guile I will contribute to a language developed via Git, but it won’t be using a proprietary platform.

If you like py2guile, please consider buying the book:

 - Softcover: 14.95 € [20]
   with digital companion
 - Source: download [4]
   free licensed under GPL

More information: draketo.de/py2guile [21]

Commentary on Python and Github

Subjective popularity contest without robust data

I was curious why this happened so I read through PEP 0481. It's interesting that Git was chosen to replace Mercurial due to Git's greater popularity, yet a technical comparison was deemed as subjective. In fact, no actual comparison (of any kind) was discussed. What a shame. — Emmanuel Rosa on G+ [22]

yes. And the popularity contest wasn’t done in any robust way — they present values between 3x as popular and 18x as popular. That is a crazy margin of error — especially for a value on which to base a very disrupting decision. — my answer

No more dogfooding

Yesterday Python maintainers chose to move to GitHub and Git. Python is now developed using a C-based tool on a Ruby-based, unfree platform. And that changed my view on what’s happening in the community. Python no longer fosters its children and it even stopped dogfooding where its tools are as good as or better than other tools. I don’t think it will die. But I don’t bet on it for the future anymore. — EDIT to my answer on Quora [23] “is Python a dying language?” which originally stated “it’s not dying, it’s maturing”.

Github invades your workflows

The PEP for github hedges somewhat by using github for code but not bug tracker. Not ideal considering BitKeeper, but a full on coup for GitHub. — Martin Owens

that’s something like basic self-defense, but my experience with projects who moved to GitHub is that GitHub soon starts to invade your workflows, changing your cooperation habits. At some point people realize that they can’t work well without GitHub anymore.

Not becoming dependent on GitHub while using it requires constant vigilance. Seeing how Python already switched to Git and GitHub because existing infrastructure wasn’t maintained does not sound like they will be able or willing to put in the work to keep independent. — my answer on G+ [24]

Foreboding since 2014

I was already pretty disappointed when I heard that Python is moving to Git. Seeing it choose the proprietary platform is an even sadder choice from my perspective. Two indicators for a breakage in the culture of the project.

For me that’s a reason to leave Python. Though it’s not like I did not get a foreboding of that. It’s why I started learning Guile Scheme in 2013 — and wrote about the experience.

I will still use Python for many practical tasks — it acquired the momentum for that, especially in science (I was a champion for Python in the institute, which is now replacing Matlab and IDL for many people here, and I will be teaching Python starting two weeks from now). I think it will stay strong for many years; a good language to start and a robust base for existing programs. But with what I learned the past years, Python is no longer where I place my bets. — slightly adjusted version of my post on the Mercurial mailing list [19].

Popularity without robust data instead of quality

(this is taken from a message I wrote to Brett, so I don’t have to say later that I stayed silent while Python went down. I got a nice answer, and despite the disagreement we said a friendly good bye)

Back when I saw that Python might move to git, I silently resigned and stopped caring to some degree. I have seen a few projects move to Git in the past years (and in every project problems remained even years after the switch), so when it came to cPython, the quarrel with git-fans just didn’t feel worthwhile anymore.

Seeing Python choose GitHub with the notion of “git is 3x to 18x more popular than Mercurial and free solutions aren’t better than GitHub” makes me lose my trust in the core development community, though.

PEP 481 states, that it is about the quality of the tooling, but it names the popularity numbers quite prominently: python.org/dev/peps/pep-0481/ [25]

If they are not relevant, they shouldn’t be included, but they are included, so they seem to be relevant to the decision. And “the best tooling” is mostly subjective, too — which is shown in the PEP itself which mostly talks about popularity, not quality. It even goes into length about how to avoid many of the features of GitHub.

I’ve seen quite a few projects try to avoid lock-in to GitHub. None succeeded. Not even in one where two of about six active developers were deeply annoyed by GitHub. This is exactly what the scipy part of the PEP describes: lock-in due to group effects.

Finally, using hg-git is by far not seamless. I use it for several projects, and when the repositories become big (as cPython’s is), the overhead of the conversion becomes a major hassle. It works, but native Mercurial would be much more efficient. When pushing takes minutes, you start to think twice about whether you’ll just do the quick fix right now. Not to forget that at some point people start to demand signing of commits in git-style (not possible with hg-git, you can only sign commits mercurial-style) as well as other gitologisms (which have an analogue in Mercurial but aren’t converted by hg-git).

Despite my disappointment, I wish you all the best. Python is a really cool language. It’s the first one I loved and will always stay dear to me, so I’m happy that you work on it — and I hope you keep it up.

So, I think this is goodbye. A bit melancholic, but that’s how that goes.

Good luck to you in your endeavors,
Arne Babenhauserheide

Enough negativity

And that’s enough negativity from me.

Thank you, Brett, for reminding me that even though we might disagree, it’s important to remember that people in the project are hit by negativity much harder than it feels for the one who writes.

For my readers: If that also happened to you one time or the other, please read his article:

How I stay happy making open source software [26]

Thank you, Brett. Despite everything I wrote here, I still think that Python is a great project, and it got many things right — some of which are things which are at least as important as code but much less visible, like having a large, friendly community.

I’m happy that Python exists, and I hope that it keeps going. And where I use programming to make a living, I’m glad when I can do it in Python. Despite all my criticism, I consider Python as the best choice for many tasks, and this is also written in py2guile [13]: almost the the first half of the book talks about the strengths of Python. Essentially I could not criticize Python as strongly as I’m doing it here if I did not like it so much. Keep that in mind when you think about what you read.

Also Brett now published an article where he details his decision to move to GitHub. It is a good read: The history behind the decision to move Python to GitHub — Or, why it took over a year for me to make a decision [27]

Werke von Arne Babenhauserheide. Lizensiert, wo nichts anderes steht, unter der GPLv3 or later und weiteren freien Lizenzen.

Diese Seite nutzt Cookies. Und Bilder. Manchmal auch Text. Eins davon muss ich wohl erwähnen — sagen die meisten anderen, und ich habe grade keine Zeit, Rechtstexte dazu zu lesen…


Source URL: http://www.xn--drachentrnen-ocb.de/py2guile

Links:
[1] https://www.epubli.com/shop/going-from-python-to-guile-scheme-9783737568401
[2] http://draketo.de/proj/py2guile
[3] http://draketo.de/proj/py2guile/py2guile.pdf
[4] https://hg.sr.ht/~arnebab/py2guile
[5] http://youtu.be/u1sVfGEBKWQ
[6] http://gnu.org/s/guile
[7] http://www.gnucash.org/
[8] http://gnu.org/s/guix
[9] https://lilypond.org/
[10] http://c2.com/cgi/wiki?GreenspunsTenthRuleOfProgramming
[11] http://freedomdefined.org
[12] http://gnu.org/l/gpl
[13] http://www.xn--drachentrnen-ocb.de/py2guile
[14] https://freenetproject.org
[15] http://127.0.0.1:8888/CHK@JZBNnKzunLtyYGA6GJ2HyqUgGo~pVzszPvzyfLRLp6k,jI6YaGFUfqytvIDatXOY8WT3aXHJ9tFMbo3ACayczRM,AAMC--8/py2guile.epub
[16] http://127.0.0.1:8888/CHK@BkQpbfPF6c7ZQ6gt8WnOMArx1bAzLWxdi~iYwVw7krQ,JAlznLHRG5cfAtk5h8VBWYTFsJyEJosRBm3beO-66lM,AAMC--8/py2guile.mobi
[17] http://127.0.0.1:8888/CHK@IhgI9ibrDdzAIhxtHvbxIIiA17s~mn70n0DEfXvm4Xk,ORo7vH5DCAxnMj~UnsJXeQuUvtigtzWNlJwh7f0DWHI,AAMC--8/py2guile.pdf
[18] http://127.0.0.1:8888/CHK@PtreU3X0X19mWyeNL2MBwS11vpgEAtFryt2imsHPJbY,i8aZuoFePpXdgTWooj-57f1uVOdNvczhSACuvTnAdyw,AAMC--8/py2guile-0.9.0-fn.tar.gz
[19] https://selenic.com/pipermail/mercurial/2016-January/049210.html
[20] https://www.epubli.de/shop/buch/47692
[21] http://draketo.de/py2guile
[22] https://plus.google.com/u/0/105415590548476995777/posts/Rsv1zEZYQiM
[23] https://www.quora.com/Is-it-true-that-Python-is-a-dying-language/answer/Arne-Babenhauserheide?srid=zIZz&share=ea54a346
[24] https://plus.google.com/u/0/105415590548476995777/posts/XJbhXeQtUc2
[25] https://www.python.org/dev/peps/pep-0481/
[26] http://www.snarky.ca/how-i-stay-happy-making-open-source-software
[27] http://www.snarky.ca/the-history-behind-the-decision-to-move-python-to-github