Jekyll2022-11-15T11:57:30+00:00https://madewith.mu/feed.xmlMade With MuA blog to celebrate projects that use the Mu Python code editor to create cool stuff.Nicholas H.TollerveyAnnouncing a new stable release: 1.2.02022-11-15T10:30:00+00:002022-11-15T10:30:00+00:00https://madewith.mu/mu/users/2022/11/15/mu-1-2-0<p>Mu is a Pythonic beginner’s code editor created by volunteers in the community.</p>
<p>It provides an easy answer to the question beginners always ask, “but how do I
start?”.</p>
<p>Simple, <a href="https://codewith.mu/en/download">download Mu</a>.</p>
<p>Today, we’re delighted to announce the next stable release of Mu: 1.2.0.</p>
<p><img src="/assets/snek.svg" style="border: 0;" /></p>
<p>This release introduces Snek mode, fixes some minor bugs, addresses some usability gremlins and adjusts some capabilities to make things tidier. Much of this work was done over the summer at the code-sprints at EuroPython 2022 in Dublin. Kudos and thanks to all the new contributors to Mu.</p>
<p>What’s new?</p>
<ul>
<li>Thanks to <a href="https://github.com/keith-packard">@keith-packard</a> for Snek mode. <a href="https://sneklang.org/" rel="nofollow">Snek</a> is a Python inspired language for processors too small even to run MicroPython.</li>
<li><a href="https://github.com/tmontes">@tmontes</a> contributed changes so Mu builds to Linux AppImages (an easy way to package application for Linux).</li>
<li>Minor fixes by <a href="https://github.com/stratakis">@stratakis</a> in the Russian translation.</li>
<li><a href="https://github.com/carlosperate">@carlosperate</a> fixed many minor glitches and gremlins.</li>
<li><a href="https://github.com/carlosperate">@carlosperate</a> was on fire with fixes needed to ensure Mu continues to work with very old versions of OSX (as used in many educational institutions).</li>
<li>Again, thanks to <a href="https://github.com/carlosperate">@carlosperate</a>, AppImage with Wayland no longer requires the setting of an environment variable to make it work properly.</li>
<li>The web mode includes simple and easy to use integration with beginner and education friendly web hosts, <a href="https://pythonanywhere.com/">PythonAnywhere</a>.</li>
<li><a href="https://github.com/agdales">@agdales</a>, <a href="https://github.com/Jeffrey04">@Jeffrey04</a>, <a href="https://github.com/johannaengland">@johannaengland</a> and <a href="https://github.com/AnjaVerboven">@AnjaVerboven</a> contributed new messages of the day as part of their onboarding at EuroPython.</li>
<li><a href="https://github.com/tonybaloney">@tonybaloney</a> contributed several Windows based fixes and clean-ups.</li>
<li><a href="https://github.com/johannaengland">@johannaengland</a> and <a href="https://github.com/prcutler">@prcutler</a> were on fire tidying up and fixing docs at EuroPython.</li>
<li>A bug was fixed in the web mode relating to the resolution and/or recreation of the assets directory (in which images, css and templates were to be found).</li>
<li>Or friend at Adafruit, <a href="https://github.com/tannewt">@tannewt</a> made the necessary changes so Mu handles OSC commands gracefully (see the <a href="https://github.com/mu-editor/mu/pull/2326">PR</a> for more details).</li>
<li>New contributor, <a href="https://github.com/zigit">@zigit</a> ensured "Unexpected Maker" based ESP boards are correctly detected.</li>
<li>Thanks to <a href="https://github.com/Jayman2000">@Jayman2000</a>, error messages are correctly capitalized (or not) to avoid potential confusion.</li>
</ul>
<p><br /></p>
<p>That's it, and a huge thanks to everyone who has contributed code,
documentation, bug reports, feedback and encouragement..!</p>Nicholas H.TollerveyMu is a Pythonic beginner’s code editor created by volunteers in the community.Mu: An Editor in Hostile Environments2022-11-14T08:00:00+00:002022-11-14T08:00:00+00:00https://madewith.mu/mu/users/2022/11/14/hostile-environments<p><img src="/assets/venera14.jpg" /></p>
<p>This is a picture of the surface of Venus, taken by the Soviet
<a href="https://en.wikipedia.org/wiki/Venera_14">Venera 14 probe</a>. Apparently, the
temperature of the barren rocky surface is 465 °C and the pressure is that
of 94 Earth atmospheres (9.5 MPa). The atmosphere is a murky orange, contains
substantial quantities of hydrogen sulphide (so it smells like rotten eggs) and
it rains sulphuric acid. No wonder the probe lasted only 57 minutes before
breaking.</p>
<p>This is, undoubtedly, a hostile environment.</p>
<p>Mu is an editor for beginners. By definition, our users probably don’t know
what they’re doing (they’re beginners!) and, it is with some trepidation, that
we design Mu to work in all sorts of different environments… some of which
are hostile.</p>
<p>For instance, we were once contacted by a teacher who explained that Mu didn’t
work on their classroom computers. Mu core contributor
<a href="http://timgolden.me.uk/">Tim Golden</a> took up the challenge and liaised with
the school’s network administrator who had installed Mu. It
turns out they had deliberately configured the student’s home directory to be
read only. As many of you will undoubtedly know, a user’s home directory is
supposed to be writeable to the user (and any applications they
run, like Mu). Having a writeable home directory is how we save your code,
settings and the log files that help us debug what has happened when Mu
doesn’t work.</p>
<p>It would be very easy to mock such a set-up and criticise the school’s network
admin as incompetent, ignorant or a clown. But a far more helpful and
compassionate response is to engage with and try to understand the situation.</p>
<p>Tim embodied this approach with great aplomb.</p>
<p>As I remember the details, students all saved their work on a networked drive
and the home directory (containing configuration files) was locked down so they
couldn’t change their settings. Unfortunately, Mu’s algorithm for discovering
the correct path for the user’s home directory was unable to distinguish that
the actual home directory was read only (why would it be?) or that some other
network attached drive was really where students had write permissions.</p>
<p>At the core of this situation is a simple fact: schools are complicated and
often chaotic places.</p>
<p>Lessons were disrupted because the applications
students needed to use were broken because students misconfigured them. The
answer: <em>don’t let students save configuration</em>.</p>
<p>Hey presto, problem solved… until Mu arrived.</p>
<p>In the end I believe Tim discussed other possible solutions around the core
problem and put guard code in place to ensure Mu would at least helpfully
recover in such a rare and unusual situation. Put simply, if we dealt
with every pathological situation, Mu itself would become pathological software
as it drifted away from simplicity and ease to coping with all possible
situations. Tim’s approach is a good example of our alternative: we try very
hard to keep Mu simple and easy while helping
our (beginner) users identify when they run up against a
pathological situation if Mu encounters a problem.</p>
<p>Relatedly, a common solution to problematic configuration is to create a sort
of virtual sandbox isolated from other aspects of the system.</p>
<p>In the Python world we use the <code class="language-plaintext highlighter-rouge">pip</code> command to install packages, and we wanted
the new version of Mu to provide users with an easy-to-use and simple interface
for this command. My first attempt at a solution involved adding a directory
to the Python path used by Mu and instructing <code class="language-plaintext highlighter-rouge">pip</code> to use <em>that</em> as the
destination for all packages. This mostly worked but not enough of the time
that it was reliable.</p>
<p>Over a friendly coffee in London Tim (again) stepped up to help.</p>
<p>He asked me if there was an aspect of Mu that needed attention but which I
didn’t have time to properly tackle. He explained he could own this part of the
codebase, thus giving me some time back to concentrate on all the other things
that needed doing. I explained the Mu and <code class="language-plaintext highlighter-rouge">pip</code> problem and we quickly came to
the conclusion that we should use the built-in capability of Python to create
virtual environments: isolated Python sandboxes into which packages could be
installed with no problems.</p>
<p>You can probably guess where this is going…</p>
<p>It turns out there are two ways to manage Python virtual environments: the
built-in <code class="language-plaintext highlighter-rouge">venv</code> module and the third-party <code class="language-plaintext highlighter-rouge">virtualenv</code> package. Furthermore,
it turns out that automatically creating isolated Python environments isn’t
quite as easy as one might think.</p>
<p>In exactly the same way we assumed a user’s home directory would always be
writeable, our assumptions about users’ computers and the naïveté of
“just automate the use of a virtual environment” opened up a veritable can of
worms. While this approach worked fine for most people, there were significant
numbers of edge cases, each of which required investigation and a solution.</p>
<p>Let’s be honest here, asking a beginner to investigate this sort of technical
problem feels like trying to do a <a href="https://en.wikipedia.org/wiki/Talk-down_aircraft_landing">talk down aircraft landing</a>,
yet Tim is both determined and a gifted technical communicator. Over the course
of a few months Tim was able to engage with many confused beginner developers
(along with a few highly experienced coders who’d also stumbled upon Mu) to
iron out the problems when creating a virtual environment for users.</p>
<p><img src="/assets/splash_screen.gif" /></p>
<p>In case you’re wondering, it is this process that happens on first run of Mu
(which is why Mu takes significantly longer at this moment). It’s also why we
engaged with long-time friend of Mu and Pythonic designer extraordinaire
<a href="https://www.dev.ngo/">Steve Hawkes</a> to produce the funky animation of
Penelope the Python (our mascot).</p>
<p>The end result is, we hope, an opportunity to introduce our users to the
personality of Mu, while also doing a bunch of rather complicated house-keeping
on their behalf.</p>
<p>Of course, Tim doesn’t have super powers and there are still kinks to be ironed
out. For instance, there is a <a href="https://bugs.python.org/issue46686">bug in Python itself</a>
(over which we have no control) which causes perhaps 90% of our current bug
report traffic. While we could work around the issue (it just so happens that
Tim is also a core Python developer and Windows expert, so one of the handful
of engineers on the planet with enough depth of knowledge and context to
understand exactly what would need to be done), the “correct” solution is for
it to be fixed in Python.</p>
<p>Such are the challenges faced by Mu (and its developers, such as Tim) as we try
to make it work as simply as possible for our users, no matter their computing
environment.</p>Nicholas H.TollerveyAnnouncing a new stable release: 1.1.12022-02-22T17:40:00+00:002022-02-22T17:40:00+00:00https://madewith.mu/mu/users/2022/02/22/mu-1-1-1<p>At last, after what feels like a huge amount of time and effort, we’re
delighted to release a new stable release of Mu. You can <a href="https://codewith.mu/en/download">download it here</a>.</p>
<p>Huge thanks to the many many contributors who volunteered their time to help
make this happen. If you want to see the making of Mu unfold, check out
<a href="https://github.com/mu-editor/mu/issues/2060">this video</a> (can you spot the “deliberate mistake”?):</p>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/nOMCS_8Bm-E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>
<p><br />
What exactly are you looking at?</p>
<ul>
<li>The faces represent the developers.</li>
<li>The multi-coloured blobs are the source code files that make up Mu.</li>
<li>The lines between the source code blobs show how the files are organised
together into directories.</li>
<li>As time passes, developers can be seen to change, add and delete files as
the project matures.</li>
</ul>
<p><br />
Kudos and thanks to Mu contributors <a href="https://rplktr.com/">RPLKTR</a> for the music
and <a href="https://www.dev.ngo/">Hawkz</a> for the animated logo.</p>
<p>This final release includes the following highlights and changes:</p>
<ul>
<li>Minor clean ups in the Makefile.</li>
<li>Thank you to <a href="https://github.com/microbit-mark">@microbit-mark</a> for updating the board IDs to support version 2.2 of the device.</li>
<li>Updates to the Chinese translation by <a href="https://github.com/CSharperMantle">@CSharperMantle</a>. 謝謝。</li>
<li>Updates to the Slovak translation by <a href="https://github.com/bletvaska">@bletvaska</a>. Ďakujem.</li>
<li>The foundations of a brand new Russian translation of Mu by <a href="https://github.com/grovz">@grovz</a> with contributions from <a href="https://github.com/iamdbychkov">@iamdbychkov</a>. спасибо!</li>
<li>Thanks to <a href="https://github.com/MinoruInachi">@MinoruInachi</a> (with feedback from <a href="https://github.com/odaki">@odaki</a>) for a revised Japanese translation for Mu. ありがとうございます</li>
<li>Due to complicated dependency problems, we've updated the bundled version of Flask to 2.0.3. Thanks to <a href="https://github.com/carlosperate">@carlosperate</a> for quickly resolving this problem.</li>
<li>Due to limitations in the way Windows MSI installers work, we're releasing this version as 1.1.1 (rather than 1.1.0).</li>
</ul>
<p><br />
That’s it..! Please provide bug reports or feedback via <a href="https://github.com/mu-editor/mu/issues/new">our GitHub repository</a>.</p>
<p>Next stop, Mu2.0. If you’d like to help, please don’t hesitate to get in touch.</p>
<p>:-)</p>Nicholas H.TollerveyAt last, after what feels like a huge amount of time and effort, we’re delighted to release a new stable release of Mu. You can download it here.Merry Christmas: Mu 1.1.0-beta.72021-12-22T11:20:00+00:002021-12-22T11:20:00+00:00https://madewith.mu/mu/users/2021/12/22/beta7<p><img src="/assets/xmas_mu.png" style="border: none;" /></p>
<p>Season’s greetings to everyone. We’re pleased to announce that beta 7 of Mu is
now here, just in time for Christmas. Get it from
<a href="https://codewith.mu/en/download">the download page</a>!</p>
<p>The usual caveats apply: since this is a beta release it may contain bugs or
unfinished features. Please provide bug reports or feedback via
<a href="https://github.com/mu-editor/mu/issues/new">GitHub</a>.</p>
<p>We expect the next release to be the final version of 1.1 as we work hard to
integrate all the various localization and internationalization efforts
currently underway.</p>
<p>What’s new in this release?</p>
<ul>
<li>Thanks to the ever-green <a href="https://github.com/keith-packard">@keith-packard</a> for his contribution to ensure icons on the button bar continuously scale based on the window width. This looks really smooth and slick.</li>
<li>Tinsel laden <a href="https://github.com/tmontes">@tmontes</a> has made a number of contributions around tooling for internationalization (i18n) of Mu. These include using the
<a href="http://babel.pocoo.org/en/latest/">Babel</a> package for generating the required translation files from our source code, and updating the <code class="language-plaintext highlighter-rouge">Makefile</code> (and <code class="language-plaintext highlighter-rouge">make.py</code>) so the process can be automated.</li>
<li>Xmassy <a href="https://github.com/xbecas">@xbecas</a> is a new joiner to the core team and we’re very please to have him with us since he has done a <strong>huge</strong> amount of work on updating and curating the translation files needed for i18n. Thanks to his work, translators for all the other existing locales need not have to go through the string generation/update steps (he’s done that for you already!).</li>
<li>Both @xbecas and @tmontes have made extensive updates to our pt-PT (Portuguese) translation. Feliz Natal e Próspero Ano Novo.</li>
<li>This was swiftly followed by a welcome contribution by <a href="https://github.com/rffontenelle">@rffontenelle</a> the red-nosed translator, who made extensive updates to the pt-BR (Brazilian Portuguese) translation. Many thanks Rafael, you continue to demonstrate why the Brazilian FLOSS community is such a vibrant place, and we hope your work will help beginner coders in Brazil take their first steps to join your community. Boas Festas!</li>
<li>Now that the upstream PyGame / PyGameZero packages have been updated and repackaged, @tmontes has ensured we use these (rather than our own custom builds) in our installers for Windows and OSX. Many thanks to our friends and collaborators in those projects (cc/ <a href="https://github.com/illume">@illume</a> and <a href="https://github.com/lordmauve">@lordmauve</a>).</li>
<li>Once in royal <a href="https://github.com/devdanzin">@devdanzin</a>’s repos, stood some lowly bugs to fix. These include ensuring empty path handling is properly handled by <code class="language-plaintext highlighter-rouge">get_save_path</code>, correct highlighting of both f-strings and triple quoted strings in the editor widget, fixing a comment-toggling bug that deleted the first character of the next line under certain circumstances and more robust handling of environment variables. Wow, @devdanzin was on fire..! (…and has further work in development, thank you so much for your continued contributions.)</li>
<li>Carolling <a href="https://github.com/carlosperate">@carlosperate</a> has put a huge effort in. He has triaged various crash reports, administered our continuous integration pipeline, and reviewed and merged much of the work described above. He also ensured our version numbering for Mu is no longer odd, and meets the guidelines set out in <a href="https://www.python.org/dev/peps/pep-0440/">PEP440</a>.</li>
<li>Good Tim Golden (<a href="https://github.com/tjguk">@tjguk</a>) fast typed out, a venv that’s crisp and even. His outstanding work on making Python virtual environments work in some of the most inhospitable computing environments ever found is miraculous. Tim’s genius is to know exactly the right intervention to make, and in this case his epic addition of <code class="language-plaintext highlighter-rouge">-I</code> to the Mu codebase will help ensure the user’s virtual environments are properly isolated.</li>
<li>@tmonter has updated the <a href="https://github.com/mu-editor/pup">pup</a> packager we use to create our installer. This should fix a problem found on the new ARM based Macs. He has also made significant progress on a cross-distro Linux package which we hope will make an appearance in the not-too-distant future.</li>
<li>Finally, Nicholas (<a href="https://github.com/ntoll">@ntoll</a>) promises never to do another Christmas themed changelog. 🎄🎅🎉</li>
</ul>
<p>Wishing you all a flourishing and fulfilling 2022.</p>Nicholas H.TollerveyA Request for Help: Translations please!2021-12-13T16:00:00+00:002021-12-13T16:00:00+00:00https://madewith.mu/mu/users/2021/12/13/translate<p><strong>UPDATE: Coordination of translations is being done <a href="https://github.com/mu-editor/mu/discussions/1931">via this discussion on GitHub</a>.</strong></p>
<p><img src="/assets/mu_in_chinese.png" /></p>
<p>Education is a right, not a privilege.</p>
<p>It means that access to education should be as easy as possible given the
different and diverse circumstances of learners.</p>
<p>The lingua franca of coding is
English, and most programming languages (Python included) use English for its
keywords (<code class="language-plaintext highlighter-rouge">if... else</code>, <code class="language-plaintext highlighter-rouge">for ... in ...</code> and <code class="language-plaintext highlighter-rouge">while ...</code> for instance). Most
programming tutorials, tools and resources are written in English. But what if
English is an additional language for you, or, especially if you’re an
absolute beginner, you don’t know English at all?</p>
<p>Clearly, you’ll face challenges learning Python.</p>
<p>This is where <a href="https://github.com/mu-editor/mu/discussions/1931">translating Mu</a> comes into play. We <em>care very
deeply</em> that learners are able to take their first steps with
Python in a tool that works in <em>their language</em>. We try
very hard to meet learners where they are, and that includes their native
language and being culturally sensitive through our user interface.</p>
<p>If you have any doubt of the importance of
this sort of thing, here’s a wonderful video of some young Chinese students
saying thank you for being able to learn Python in Mu…</p>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/w3hQglx5Kj0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>
<p><br /></p>
<p>Thanks to the remarkable work of both <a href="https://github.com/xbecas">Vasco</a> and
<a href="https://github.com/tmontes">Tiago</a>, our translation strings have been updated
again and include all the new written elements of our user interface that have
not yet been translated (i.e. those added during the development of version
1.1). Existing translations that require updates
<a href="https://github.com/mu-editor/mu/tree/master/mu/locale">can be found in the <code class="language-plaintext highlighter-rouge">locale</code> directory</a>
and, if you’re looking for an example of the sorts of update we’re looking for,
you can’t go far wrong looking at Vasco’s
<a href="https://github.com/mu-editor/mu/pull/1795">update of the Portuguese translation</a>.</p>
<p>If you want to add a translation for a <em>new</em> language, you should use the
following convenience commands now built into our Makefile:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>make translate_begin LANG=xx_XX - create/update a mu.po file for translation.
make translate_done LANG=xx_XX - compile translation strings in mu.po to mu.mo file.
make translate_test LANG=xx_XX - run translate_done and launch Mu in the given LANG.
</code></pre></div></div>
<p>If you’re looking for a fun way to contribute to Mu, this is it. We’re a
friendly team and you can ask questions via
<a href="https://gitter.im/mu-editor/general">our Gitter channel</a>
or via a
<a href="https://github.com/mu-editor/mu/pulls">pull request on GitHub</a>.</p>
<p><strong>Coordination of translations is being done <a href="https://github.com/mu-editor/mu/discussions/1931">via this discussion on GitHub</a>.</strong></p>
<p>This is the last work needed in our codebase for us to release version 1.1.</p>
<p>We look forward to your contributions and thank you in advance.</p>
<p>:-)</p>Nicholas H.TollerveyUPDATE: Coordination of translations is being done via this discussion on GitHub.Announcing Mu version 1.1.0-beta.62021-10-06T08:30:00+00:002021-10-06T08:30:00+00:00https://madewith.mu/mu/users/2021/10/06/beta6<p><img src="/assets/mu_language_select.gif" style="border: none;" /></p>
<p>We’re delighted to announce that beta 6 of Mu is here (get it from from
<a href="https://codewith.mu/en/download">the download page</a>)!</p>
<p>As always, since this is a beta release and may contain bugs or unfinished
features. Please provide bug reports or feedback via
<a href="https://github.com/mu-editor/mu/issues/new">GitHub</a>.</p>
<p>One of the characteristics of this release is that it contains contributions
from several folk who are not regular core members of the volunteer Mu
developers team. This is a healthy sign as it proves three things:</p>
<ol>
<li>Folks see value in and care about Mu.</li>
<li>The Mu project itself is friendly and welcoming to new contributors.</li>
<li>Our codebase is small and simple enough that it’s easy to make changes.</li>
</ol>
<p>Many thanks to <em>everyone</em> who has contributed to this release. Your work is
really appreciated.</p>
<p>So, what’s new?</p>
<ul>
<li><a href="https://github.com/carlosperate">Carlos</a> fixed some packaging problems
relating to the iPython kernel bundled with Mu.</li>
<li><a href="https://github.com/dybber">Martin</a> fixed a couple of problems relating to
the stopping of child processes (Flask and scripts stopped via
KeyboardInterrupt in Linux).</li>
<li>The web mode checks for the availability of templates in the local directory
tree before starting up. If a template directory isn’t found in the expected
location, then the user sees a helpful message describing the problem and
what they need to do to fix it.</li>
<li>Mu’s splash screen no longer always appears on top of everything else on the
user’s desktop. The splash screen now also logs the progress of installing
the various packages needed on first install. Thanks to Carlos for these
changes.</li>
<li>A new admin/settings option has been added to allow users to manually change
the translation Mu uses for its interface. Updating this setting requires a
restart of Mu. <a href="https://github.com/ZanderBrown">Zander</a> contributed the
icon/glyph to indicate the relevant tab is for translation related settings
(not entirely obvious if Mu’s UI is using a language you don’t understand
and you’re looking for the setting that relates to translations). The icon
makes this clear.</li>
<li>On some desktop windowing systems there is a bug that means windows re-open
at a position higher up the screen, and so may appear off the top of the
screen. We’ve ensured this never happens with Mu. If Mu starts with any
part of the window off the screen, the window is moved to be within the
dimensions of the screen. This was a weird one to track down and fix.</li>
<li>Many thanks to <a href="https://github.com/espoelstra">Ethan Spoelstra</a> who
contributed a change so Crostini on ChromeOS is used to return the correct
CIRCUITPY path if it exists.</li>
<li>Huge thanks to <a href="https://github.com/keith-packard">Keith Packard</a> for several
contributions to this release of Mu. Keith refactored the way in which Mu
handles pasting in the REPL window so it works correctly and more broadly
across operating systems.</li>
<li>Keith also fixed some font related issues in the REPL.</li>
<li>Keith was on fire with a couple more contributions relating to SVG icons in
the buttons in Mu. We’re very grateful to
<a href="https://github.com/Rybec">Ben Williams</a> for putting in the work to make our
button icons SVG files. Keith made the code changes to implement this.</li>
<li>Thanks to <a href="https://github.com/hroncok">Miro Hrončok</a> for pointing out a
change in Python 10 which would break some of our UI calls into PyQt, and
who provided a patch to fix things.</li>
<li>Some minor clarifications in our
<a href="https://mu.rtfd.io">developer documentation</a>.</li>
</ul>
<p>We’re getting close to a 1.1.0-final, with some virtual environment fixes and
translation related work remaining to be done.</p>
<p>That’s it..! :-)</p>Nicholas H.TollerveyAnnouncing Mu version 1.1.0-beta.52021-07-05T08:30:00+00:002021-07-05T08:30:00+00:00https://madewith.mu/mu/users/2021/07/05/beta5<p><img src="/assets/beta5.gif" /></p>
<p>Beta 5 is here (get it from <a href="https://codewith.mu/en/download">the download page</a>)!</p>
<p>Since this is a beta release and may contain bugs or unfinished features.
Please provide bug reports or feedback via <a href="https://github.com/mu-editor/mu/issues/new">GitHub</a>.</p>
<p>We had hoped for a regular (fortnightly) release tempo. Due to the voluntary
nature of Mu’s development and because some of the updates in this release
were quite challenging (see below), this release is a LOT later than we had
planned.</p>
<ul>
<li>Several of us made minor updates and fixes (such as ensuring various packages
had explicit dependency versions listed, updating versions for Mu’s own
dependencies and so on).</li>
<li>Right clicking on highlighted text in the editor, with the REPL active, now
has an additional option added to the context menu: to correctly paste the
text from the editor into the REPL. Thanks to
<a href="https://crogers.pages.tufts.edu/">Professor Chris Rogers</a> of
Tufts University for suggesting this feature.</li>
<li>The multi-talented <a href="https://danhalbert.org/">Dan Halbert</a> of
<a href="https://www.adafruit.com/">Adafruit</a> very kindly fixed a bug in the
Adafruit board handling when on run on new Apple M1 hardware. Thank you Dan
for your valuable contribution.</li>
<li>A huge amount of work by Tim and Carlos has gone into analysing the
<a href="https://github.com/mu-editor/mu/issues?q=is%3Aissue+is%3Aopen+Crash+Report">crash reports</a>
from recent beta releases of Mu. This has resulted in significant
effort to address many of the bugs encountered, many of which related to
edge cases encountered by the new virtual environment feature. Tim and Carlos
have created many fixes and checks to ensure these bugs are either completely
fixed or are, at least, mitigated in more helpful ways. This has been a
challenging and “fiddly” bit of work, so kudos and thanks, as always, to both
Tim and Carlos for their continued efforts.</li>
<li>Carlos has also updated the version of <a href="https://micropython.org">MicroPython</a>
used in the <a href="https://microbit.org/">BBC micro:bit</a>
mode to the latest 2.0.0-beta.5 version.</li>
<li>In addition, Carlos has ensured that the micro:bit mode flashes files onto
the micro:bit using the correctly memory aligned hex string.</li>
<li>Github user ajs256 has ensured the crash reporter doesn’t kick in when a
<code class="language-plaintext highlighter-rouge">KeyboardInterrupt</code> is triggered in Mu (CTRL-C).</li>
<li>Sometimes in Mu for Linux, the expected <code class="language-plaintext highlighter-rouge">.py</code> file extension wasn’t added
to new files. This depended on the user’s graphical shell. Mu now checks the
output from the shell and, if requires, will add <code class="language-plaintext highlighter-rouge">.py</code> itself.</li>
<li>Various fixes to Mu’s logging make it more robust, clear and useful.</li>
<li>Tiago fixed a late breaking bug in packaging Mu for OSX. All fixed in a
matter of hours. Amazing work!</li>
</ul>
<p>There are perhaps a couple more features we want to land in the coming weeks,
and then we will start the work of ensuring internationalization is fully up
to date, the website reflects the new features and various changes, and PUP
will be able to produce redistributable appimages for Linux.</p>
<p>Then we will have reached 1.1.0-final. :-)</p>Nicholas H.TollerveyAnnouncing Mu version 1.1.0-beta.42021-04-19T06:00:00+00:002021-04-19T06:00:00+00:00https://madewith.mu/mu/users/2021/04/19/beta4<p><img src="/assets/beta4.gif" /></p>
<p>Beta 4 is here (get it from <a href="https://codewith.mu/en/download">the download page</a>).
Since this is a beta release and may contain bugs or unfinished features.
Please provide bug reports or feedback via <a href="https://github.com/mu-editor/mu/issues/new">GitHub</a>.</p>
<ul>
<li>Carlos made many changes to clean up the specification for required modules
used by the installer. This will make supporting and tracking Mu’s
dependencies MUCH easier. Thank you Carlos!</li>
<li>Huge thanks to Dan Halbert of Adafruit who contributed a significant amount
of refactoring to the CircuitPython mode. As a result Mu now uses the
<code class="language-plaintext highlighter-rouge">adafruit-board-toolkit</code> module for device identification, among many other
helpful changes
<a href="https://github.com/mu-editor/mu/pull/1371">described in Dan’s pull request</a>.
Thank you Dan..!</li>
<li>Carlos was on fire… he also fixed a bug in the file-copy dialog when the
context menu was opened with an empty list of files.</li>
<li>Carlos (again), fixed some outstanding documentation issues for supporting
Raspbian Buster (and newer). These are now <a href="https://mu.rtfd.io/">in our docs</a>.</li>
<li>Carlos (again, again) tidied up various aspects of the Makefile so there is
only a single source of truth for running various utilities and commands.</li>
<li>Logging was another focus for this release. Now that we have a few weeks
worth of crash reports we’ve been able to look at the parts of the
application that cause most grief and add extra-logging in various locations.
Tim put in a great effort to make sure the “first run” and other virtual
environment based aspects of Mu now have clearer and more useful logging and
throw more useful exceptions, closer to the source of the problem, for the
resulting crash report. Carlos ensured the IPython kernel installation was
properly logged.</li>
<li>We ensured various key packages were pinned to particular versions to
maximise compatibility with older versions of Python still found in schools.</li>
</ul>
<p>There are many pull requests and work items currently in flight and they’ll be
landing very soon as the overall quality and robustness of Mu significantly
improves. Many thanks to everyone who continues to help, support and contribute
to the ongoing development of Mu.</p>Nicholas H.TollerveyAnnouncing Mu version 1.1.0-beta.32021-03-29T10:15:00+00:002021-03-29T10:15:00+00:00https://madewith.mu/mu/users/2021/03/29/beta3<p><img src="/assets/splash_screen.gif" /></p>
<p>Beta 3 is here (get it from <a href="https://codewith.mu/en/download">the download page</a>).</p>
<p>From now on we hope to maintain a fortnightly release during the beta phase as
things “come together”. Shown above is our wonderful final splash screen
animation by the exceptionally talented Steve Hawkes
(<a href="https://github.com/hawkz">@hawkz</a>) of
<a href="https://www.dev.ngo/">The Developer Society</a>. Thank you so much for this
generous artistic and fun contribution to Mu.</p>
<p>Other changes in this release include:</p>
<ul>
<li>Thanks to a recent update in <a href="https://pypi.org/project/pgzero/">PyGame Zero</a>,
we’re back to using the official package from PyPI, rather than our patched
fork, in the installer.</li>
<li>Both Tim and Carlos have contributed updates, fixes and tests to address a
bug affecting Windows users who may have a space in the file path upon which
Mu is found. This was a difficult bug to reproduce but Tim did a lot of
digging to isolate the cause with as much confidence as is possible when it
comes to such things. Carlos did a bunch of thankless and fiddly test related
work so testing with spaces in the path is part of our test suite. Work on
this is ongoing so expect further improvements in upcoming releases. As
always, many thanks for these efforts.</li>
<li>Tim addressed a <code class="language-plaintext highlighter-rouge">wheel</code>/<code class="language-plaintext highlighter-rouge">sdist</code> related problem that was causing odd side
effects with regard to dependancies.</li>
<li>A strange bug, where it was not possible to install third-party packages on
first run of Mu, opened up a deep rabbit hole of investigation. In the end
Tim was able to fix this AND address the source of a warning message from Qt
when Mu was starting for the first time.</li>
<li>The splash screen code was rewritten in such a way that objects relating to
the splash screen will always be garbage-collected by Python and destroyed by
Qt5. Previously, they existed for the full duration of the application, not
really causing any problems, but “in limbo” nonetheless.</li>
<li>The crash reporting tool has had a minor update so the user is reminded to
attach their log file to the bug report, along with an indication of where to
find the log file.</li>
</ul>
<p>Work is ongoing for a beta 4 release on or around 12th April. As always, we
really appreciate constructive feedback, bug reports and help.</p>
<p>Onwards and upwards..!</p>Nicholas H.TollerveyAnnouncing Mu version 1.1.0-beta.22021-03-15T19:30:00+00:002021-03-15T19:30:00+00:00https://madewith.mu/mu/users/2021/03/15/beta2<p><img src="/assets/computer_recommend.gif" /></p>
<p>After months of work, by many contributors, we’re delighted to announce
the release of Mu 1.1.0 beta 2. This is the version we recommend you use, and
you should update to this version via our official installers that you can
<a href="https://codewith.mu/en/download">download from here</a>.</p>
<p>The full list of updates can be found in
<a href="https://mu.readthedocs.io/en/latest/changes.html">our CHANGELOG</a>. Of course,
this being a beta release, <strong>we expect there to be bugs</strong>. Please don’t
hesitate to give feedback and
<a href="https://codewith.mu/en/howto/1.1/bugs">report any problems you may find</a>.</p>
<p>We’ll be making further beta releases as this past year’s efforts come
together, and we continue to develop new features, fix bugs and enhance Mu.
You are most welcome to contribute via our
<a href="https://github.com/mu-editor/mu/">GitHub repository</a>. All our previous
releases are available <a href="https://github.com/mu-editor/mu/releases">via GitHub</a>.</p>
<p>I want to make special mention and celebrate the work of:</p>
<ul>
<li>Long time Mu contributor <a href="https://twitter.com/tjguk">Tim Golden</a> who
(foolishly?) offered to help with Mu’s handling of Python packages. His epic
and Herculean efforts ensure Mu uses Pythonic virtual environments for
package management. Thank you for this outstanding contribution Tim.</li>
<li>University lecturer
<a href="https://di.ku.dk/Ansatte/tap/?id=304036&vis=medarbejder">Martin Dybdal</a> has
made many numerous changes to Mu. The editor is vastly improved by
Martin’s fearless quest to improve all aspects of the code base. He has also
been the driving force behind the new ESP mode that he uses to teach his
students about
<a href="https://m5guide.readthedocs.io/en/latest/">ESP based MicroPython wrist-watches</a>.
Tak for al din hjælp Martin.</li>
<li><a href="https://twitter.com/carlosperate">Carlos Pereira Atencio</a> of the MicroBit
Foundation has been a formidable and talented contributor to Mu from the very
beginning. Without Carlos’s exceptional work, touching all aspects of Mu, our
efforts would be significantly impaired. As an embedded engineer his
MicroPython related insights have been invaluable and it is Carlos who has
ensured Mu works with the super-duper version 2 of the MicroBit. Muchas
gracias Carlos.</li>
<li>The ever mysterious <a href="https://zanderbrown.github.io/">Zander Brown</a> (Mu’s
answer to <a href="https://en.wikipedia.org/wiki/The_Stig">The Stig</a>) continues to
contribute help and support to our users via our
<a href="https://gitter.im/mu-editor/general">online discussion forum</a>. As a student
himself he knows how important it is to get the right sort of help, and
Zander is ever patient, polite and positive in his mentorship role. Thank you
Zander for making Mu’s online presence such a positive and collaborative
space.</li>
<li>Finally, the Pythonic force-of-nature that is
<a href="https://twitter.com/setnomt">Tiago Montes</a> has, through his magnificent work
on <a href="https://github.com/mu-editor/pup">PUP</a>, made packaging Mu a joy.
As those who know about packaging software will
tell you, this is an incredible achievement and means we can cut a newly
packaged release within minutes, rather than hours (as was before). Tiago’s
infectious postivity, enthusiasm and humour have sustained many of us over
the course of the recent efforts on Mu. Obrigado por um trabalho tão incrível
Tiago. :-)</li>
</ul>
<p><br /></p>
<p>Finally, what happened to the beta 1 release..?</p>
<p>It was essentially a dress
rehearsal and bug “shake down” that took place at the beginning of February. We
learned a lot (and fixed many bugs) as a result of that beta, but it wasn’t
ever ready for public view.</p>
<p>Many thanks to those who continue to offer support to Mu. Many thanks to those
who teach with Mu - you’re helping the engineers and developers of tomorrow
find their feet and flourish. Many thanks to those beginners who, despite how
intimidating it must feel, engage with us and help us to improve Mu ~ you are
especially welcome here.</p>Nicholas H.Tollervey