Abstract Wikipedia/Updates/2022-08-09
◀ | Abstract Wikipedia Updates | ▶ |
We are pleased to invite you all to the Wikifunctions Beta!
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, who has been running the test NotWikilambda 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. 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. The most useful lists here will likely be the list of functions and the list of types.
- 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, 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, or check if there is a task and file one if not. You can also chat with us on IRC #wikipedia-abstractconnect or Telegram group, or on the Meta-wiki talk page. We’ll try to bring all tasks and ideas together on the Phabricator board. 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. These should be comparably easy and self-contained tasks.
Workstream updates (as of August 5, 2022)
editPerformance:
- Continued analyzing and fixing the performance slowness
- Ali Assaf wrote a document describing generic vs pre-generic function types. We mentioned this document in the latest weekly newsletter and asked for the community feedback
Natural Language Generation:
- Finalized the design document 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