The on-wiki version of this newsletter can be found here:
https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2022-08-09
--
We are pleased to invite you all to the Wikifunctions Beta
<https://wikifunctions.beta.wmflabs.org/wiki/Wikifunctions:Main_Page>!
We have been planning to set up a Wikifunctions Beta for a long time, but
we felt that our prototype was not yet stable enough for a public Beta.
With a concerted effort, our engineers together with the
Google.org fellows
have pushed to get the system to a stage that works well enough to warrant
a Beta release. So, without further ado, you can visit the Beta of
Wikifunctions at
wikifunctions.beta.wmflabs.org/wiki/Wikifunctions:Main_Page
.
*Thank you, Lucas!* We are thankful to Lucas Werkmeister
<https://meta.wikimedia.org/wiki/User:Lucas_Werkmeister>, who has been
running the test NotWikilambda
<https://notwikilambda.toolforge.org/wiki/Not_Wikilambda:Main_Page> instance
the whole time. Lucas has done an immeasurable service to the community,
and to the development team, by setting up a public instance of WikiLambda
early on, which allowed many to get an early feeling for our prototype.
Lucas’s service will always have a very special place in the history of
Wikifunctions, and not only because of NotWikilambda. We understand that
NotWikilambda is now going to be discontinued, having served us well. Lucas
is a living example of the best in our community.
*What is Wikifunctions?* Wikifunctions will be a new top-level project of
the Wikimedia Foundation, which we are currently developing. Wikifunctions
will be a place for everyone to collaboratively create and maintain a
library of code functions. The goal of Wikifunctions is to support the
Wikimedia projects and beyond, and to allow everyone to call and re-use
functions in the world's natural and programming languages. That is our
mission statement
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2021-04-08>.
Many of the core functionalities should be available for you right now.
Beta runs the newest version of the code, usually just a few minutes behind
development merges. This is also true for both the "WikiLambda" MediaWiki
code, and the orchestrator and evaluator back-end services, which execute
function calls for the users.
Note: All content in Beta may be deleted at any time, so don’t rely on Beta
having persistent content.
*What works?* What should you be able to do on the Wikifunctions Beta right
now? You should be able to
- Call functions and see the results of those function calls
- Create new and edit existing functions
- Create and edit implementations, in JavaScript or Python, and through
composition of other functions
- Create and edit testers
- Connect testers and implementations with the functions
- Create and edit types
- Create and edit instances of types
- Create functions for the user-defined types
All of these should work on any modern device, whether mobile or desktop,
and in different natural languages.
One thing that is currently a bit incomplete, and that will be improved, is
the workflow to create implementations in code for functions that are
taking or returning user-defined types. It is possible, but it might be a
bit difficult to write. We want to rewrite that part.
*What does not work?* Many things don’t work yet. Creating an
implementation or a tester is best done by creating a new object, and then
selecting “Implementation” or “Tester” as the type, and then selecting the
respective function. For connecting them, you would need to use the
“Fallback editor” that is visible once you are in edit mode on a function.
Other big missing pieces:
- Search. Currently, your best bet to find what’s already on the wiki
and to look through the existing pages is not by using the search, but
through the list of objects
<https://wikifunctions.beta.wmflabs.org/wiki/Special:ListZObjectsByType>.
The most useful lists here will likely be the list of functions
<https://wikifunctions.beta.wmflabs.org/wiki/Special:ListZObjectsByType/Z8>
and
the list of types
<https://wikifunctions.beta.wmflabs.org/wiki/Special:ListZObjectsByType/Z4>
.
- Language settings are not sticky. By adding the uselang parameter to a
URL you can see how a page looks in a different language, but once you
navigate to another page, the setting gets lost again. Log in to set your
display language to change it for good.
- User rights. This means that you can currently edit things that you
shouldn’t be able to. This means you can do edits which will break things
badly. Please don’t edit the core data model, or do things like add a third
Boolean value.
- Documentation. The place where we store documentation alongside each
Function etc. is not implemented yet. For now, as a work around, you can
add documentation on the respective Talk pages.
Besides these larger missing pieces, many smaller pieces are not right yet.
There's no recording of what functions are used, and so no listing of
popular functions. There's no documentation welcoming people to
Wikifunctions, or helping them know how to use the system. There's no
system to display the diff of an edit to a function. There are no
maintenance reports helping the community find functions that need fixing,
translating, or expanding. Feel free to report things that you're missing,
even though we are aware of many of those. We hope to make future
improvements much more tangible and visible from now on. We also wrote a
tutorial on using the Wikifunctions Beta
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Beta_tutorial>, noting
several current caveats and workarounds.
*Report issues and ideas.* What to do if you run into an issue or if you
have an idea for an improvement: either file a task
<https://phabricator.wikimedia.org/maniphest/task/edit/form/43/?tags=WikiLambda,Abstract_wikipedia>,
or check if there is a task and file one if not. You can also chat with us
on IRC #wikipedia-abstractconnect
<https://web.libera.chat/?channel=#wikipedia-abstract> or Telegram group
<https://t.me/Wikifunctions>, or on the Meta-wiki talk page
<https://meta.wikimedia.org/wiki/Talk:Abstract_Wikipedia>. We’ll try to
bring all tasks and ideas together on the Phabricator board
<https://phabricator.wikimedia.org/project/view/4876/>. We do not promise
to get to any of the bugs and ideas swiftly.
*Contribute code.* If you want to contribute to the code, that would be
more than welcome. There are so many clean-up tasks to be done, and now
with the Beta, these clean-ups and their effects should be much more
visible than before. Your code contributions will be very welcome. Either
find something you want to improve by using the Beta, or select one of our
tasks marked as fix-it
<https://phabricator.wikimedia.org/maniphest/?project=PHID-PROJ-2d3tcr43q2ipyqdw3e4m&statuses=open()&group=none&order=newest#R>.
These should be comparably easy and self-contained tasks.
Workstream updates (as of August 5, 2022)
Performance:
- Continued analyzing and fixing the performance slowness
- Ali Assaf wrote a document describing generic vs pre-generic function
types
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Generic_function_type>.
We mentioned this document in the latest weekly newsletter and asked for
the community feedback
NLG:
- Finalized the design document
<https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Template_Language_for_Wikifunctions>
describing
the template language
- Drafted initial proposal of the Abstract Representation
Meta-data:
- Refined CPU & memory reporting for Python & JavaScript execution
processes
- Resolved remaining error condition in tester pipeline
- Finished JavaScript code to deconstruct tester pipeline results and
completed wiring tester pipeline results into Vuex
Experience:
- Fixed Beta launch blocker when no arguments were shown on an
implementation
- Fixed wrong titles in non-function pages
- [DESIGN] Handed off Table component designs