From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Arne Babenhauserheide Newsgroups: gmane.lisp.guile.user Subject: Re: How to make GNU Guile more successful Date: Mon, 13 Feb 2017 12:06:10 +0100 Message-ID: <87lgtajpkc.fsf@web.de> References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1486985462 24595 195.159.176.226 (13 Feb 2017 11:31:02 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 13 Feb 2017 11:31:02 +0000 (UTC) Cc: guile-user@gnu.org To: Amirouche Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Mon Feb 13 12:30:57 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cdEqP-0005sA-7F for guile-user@m.gmane.org; Mon, 13 Feb 2017 12:30:57 +0100 Original-Received: from localhost ([::1]:56014 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdEqT-0006xg-4b for guile-user@m.gmane.org; Mon, 13 Feb 2017 06:31:01 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44466) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdEq6-0006xO-IJ for guile-user@gnu.org; Mon, 13 Feb 2017 06:30:40 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cdEq1-0000lH-UU for guile-user@gnu.org; Mon, 13 Feb 2017 06:30:38 -0500 Original-Received: from mout.web.de ([217.72.192.78]:54406) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cdEq1-0000ka-Jn for guile-user@gnu.org; Mon, 13 Feb 2017 06:30:33 -0500 Original-Received: from kaverne ([85.212.69.50]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MCIqT-1cUCQe0qor-0098nb; Mon, 13 Feb 2017 12:30:29 +0100 In-reply-to: X-Provags-ID: V03:K0:3yEqpY8OR7RO8YrkQCptdYBt7GJie1hZgSc4ulL67TCcLVQJWD9 Tu8QfLEyU26e3g5IjE/OeA+WYh5rS7yVGpSDbr3ks4q6Dp408PUKAlCOjyAIyMU1vPJCKh9 C+RRFG6TitY4fVoIHZZja6j+fJ3vdwtZ0nkfCPiDm5bAbBfwgo7BuUnmKmRbD8Uy15SyLSg zzK0Xpj7AseUpQw7B77Vw== X-UI-Out-Filterresults: notjunk:1;V01:K0:GOEfKb6qNdU=:KIyRVYfh38eDYIU5bP8nct 7nJ9J4UaOv4oBHsNjjt4otlM71TqB0y6Vvq67WjkK7gIqmJLDiYzukQyQaNxHFqeGqLAp6CD3 iCHDNZjsqJz/eDpRQymreJFdy1AhaSVbwqyhUmRFBN1uTUiFxKSYezTVS9yRqhyO1S/iP2Eog Xhd6CHqux5EmS4fN8A2/0gq7SBUfwiB84KfTn0vUcTqHeBzOT4Z84u34pBKNTJbDvXSyVdsdD TDu3Ca5E0JiGnbUsmh3n5hWYfgNWFREom64heXRkDcBfA6rTc0qvQpd7SKrrS5Ts66pyNQGRC 3DqC5MopVAOfOUHajM1ID5BKt3onu68WWTVGgUZ2jcXt1NoBN4sQqeC5O3InUc1lVKygO1PAa k0/+BaLCYnzWW1YTbSpgXIXGm20GQo0fWfCyXggMegI+rRjBRv6+jtDrA8yuScbdoUKjjaz4i EPDJ6U6KbxUq+uvkidOlsUXkwSpUZNTeydr3EDk5WnFORXo28/eAKbA1QAY3feKEUX4cbg6TB XQnmsgstWOlPWSA0+VzTQH2MjNV0JWEvcq+FkylrjJwxSLL4/+kVqMi2EiRvJnGgiyY78vGoR VkdpIN5/JoW5XALz86gExc1ZsOUogWn23l6QdnAmd76T0XtdgYfKzDlLgDDuqomqpoKZ7xBbt ovGkvEipejqhHKkvsuaB6P69hLw7Qr2guOMfBqtQc3zT+9LSLq/Fbr8679qFI6tEQ+JIn3+vN CVT0DR4CvbpLSiEAmN2FC/UTlyH4l8FhIJ16GJJh7rkigd4ozfeIYd9d159yFXH8XiYp+79p X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.78 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:13180 Archived-At: Hi Amirouche, Thank you for your nice writeup! Amirouche writes: > I don't know why Racket is successful probably because > it has a very good documentation and also a documentation > generator written in scheme. > > => This is a long debate and core principle of GNU project > so I don't want to enter that debate But I want to add something: I’m getting the hang of just checking the info-page to look something up. And I realize that with well-written info-pages this is faster than googling for stack overflow. > And it's easy to packages. > > => Another pain topic. In reality it's very easy to package > all sort of guile programs for guix. But guix itself needs > to be more stable. I wish I had guildhall ready. Got hit by time-eaten-by-other-project-because-guildhall-was-priority-three. It needs to be easy to not just package some code, but also to share that package without hitting a bottleneck. > Python is successful because it has a massive number > of libraries. … > => We (all the people reading this mail) can not just > create all those projects. It requires to many domain > knowledge for a handful of people to be able to compete. > But what we can do is *share*, *share* and *share* > again *all* what we do (on mailing list, blogs, on gitlab > or whatever) whether it is a full blown project with a > website made by a professional designer with tests suite, > a tutorial documentation reference doc and a community or > a simple *snippet* or broken experiments. A really simple way to share a project would be nice here. Nowadays many people just push something with a README to github, but github is unfree. > => In terms of software I really think, we need something like > ActiveState Python Cookbook [0]. I still go there sometime even > I could simply ask the question on StackOverflow and get an > answer in minutes. > > [0] http://code.activestate.com/recipes/langs/python/ > > During a long time I was said that Pythonist were > among the smartest developer, because simply they had > the guts to learn a language that was not learned in > school. I never heard that one :) > Python *was* easy to learn. > > => Scheme is easy to learn if you stick in the "garden" > (garden must be defined but it's basically what I > introduce in my tutorial [1]) Which is totally the > same for the Python of today (read Python 3.5+). Or look at py2guile: http://draketo.de/py2guile Python is no longer easy due to integrating additional syntactic forms, each of which makes a specific kind of code much nicer but complicates learning. We have something similar in foof-loop: (define (count-matching-items list predicate) (loop ((for item (in-list list)) (with count 0 (if (predicate item) (+ count 1) count))) => count)) ; ^^ here This looks really simple in this place, but it introduces special syntax which will be unintelligible for someone who does did not explicitly learn foof-loop. And guildhall is filled with special forms I had to understand just to be able to do small changes. This is a social problem. For a deeper discussion why it is a problem, see http://winestockwebdesign.com/Essays/Lisp_Curse.html "Lisp is so powerful that problems which are technical issues in other programming languages are social issues in Lisp." We can counter this with easy tutorials and with writing something like canonical Scheme. But for this, we need to define a canonical Scheme which is hits the performance and readability sweet-spot for Guile. Canonical code must be close to the fastest code. Practically put: We need Andy Wingo to nitpick the tutorial about things which will cause overheads the compiler cannot fix easily — including expensive use of macros. > [1] http://hyperdev.fr > > PHP was successful back in the days because it was easy > to install, Or because it was the only thing which existed. Didn’t it make it easy for the hoster to sandbox it — both in terms of access and in terms of resource requirements? > => A scheme web application is much easier to run! Sadly not on my cheap webhoster which provides unlimited bandwidth for a fixed cost. > => While you might not be interested to build something > like prestashop. You very much be interested to build > something like Drupal or Wordpress to allow mom and > dad and others create a personnal experience on the > web. > > Another thing, Python has GNU Media Goblin > > => We must do better! Or, maybe collaborate with it? I’m sure that there’s lots of stuff which could be shared, because it is not language-specific (more exactly: it’s HTML, CSS, Javascript and images). > What block you from contributing to the wide ecosystem of GNU Guile? - publishing a program for non-Linux platforms (well, Windows, OSX and mobile phones) so most of my friends can use it. - an alternative to `python setup.py register sdist upload` Best wishes, Arne