Абстрактна Вікіпедія/Оновлення/2020-06-30

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Updates/2021-06-30 and the translation is 48% complete.
Оновлення Абстрактної Вікіпедії Translate

Абстрактна Вікіпедія (список розсилки) Абстрактна Вікіпедія в ICR Абстрактна Вікіпедія в Телеграм Wikifunctions on Mastodon Абстрактна Вікіпедія у Твіттері Абстрактна Вікіпедія у Фейсбуці Абстрактна Вікіпедія на Ютубі Сторінка проекту Абстрактні Вікіпедії Translate

Фаза ε (епсилон) завершена.

Коли ми розпочали розробку сайту Вікіфункцій, ми поділили роботу з запуску Вікіфункцій на одинадцять фаз, названих першими одинадцятьма буквами грецького алфавіту.

  • With Phase α (alpha) completed, it became possible to create instances of the system-provided Types in the wiki.
  • With Phase β (beta), it became possible to create new Types on-wiki and to create instances of these Types.
  • With Phase γ (gamma), all the main Types of the pre-generic function model were available.
  • With Phase δ (delta). It became possible to evaluate built-in implementations.
  • Цього тижня ми завершили Фазу ε (епсилон).

Метою Фази ε було забезпечення можливості оцінки реалізацій, написаних авторами, на мові програмування.

Що це означає? Кожна функція у Вікіфункціях може мати декілька реалізацій. Існують три різні способи вираження реалізації:

  1. Як вбудована функція, написана командою розробників: це означає, що реалізація обробляється оцінювачем як чорний ящик.
  2. Як код на мові програмування, написаний користувачами Вікіфункцій: реалізація функції може бути надана будь-якою мовою програмування, яку підтримують Вікіфункції. Зрештою ми прагнемо підтримати велику кількість мов програмування, але почнемо з малого.
  3. Як поєднаня інших функцій: це означає, що користувачі можуть використовувати існуючі функції як будівельні блоки для реалізації нових можливостей.

На етапі ε ми розширили інфраструктуру для оцінки функцій, щоб дозволити запуск внесеного коду на додаток до вбудованої на фазі δ. Тепер ми підтримуємо дві мови програмування: JavaScript та Python. Ми плануємо додати більше мов програмування (найбільш знайома спільноті Вікімедіа, Lua) і ми задокументуємо процес запиту на підтримку додаткових мов програмування. Ми реалізували заплановану архітектуру:

Архітектурна модель верхнього рівня Вікіфункцій

We have now a system where the orchestrator receives the function call to be evaluated, gathers all necessary data from Wikifunctions and potential other resources, and then chooses the corresponding evaluators that can run the given programming language. Since this is contributor-created code, we are very careful about where and how to run the code, and which capabilities to give to the virtual machine that runs the code. For example, no network access and no persistence layer is allowed, in order to reduce the potential for security issues.

A security review and a separate performance review of our architecture and implementation are currently ongoing. Once we have dealt with the most pressing issues that are uncovered by the reviews, we plan to provide a demonstration system. This will probably be in the next Phase.

На наступному скріншоті показано, як реалізована функція “Concatenate”. A concatenate function takes two strings as its arguments and returns a single string consisting of the two input strings joined end-to-end. Наша реалізація використовує власний метод JavaScript concat, який надається об’єктом string JavaScript.

Знімок екрану реалізації в JavaScript

На наступному скріншоті показано функцію, що викликається з аргументами “Wiki” та “functions”, в результаті чого утворюється рядок “Wikifunctions”.

Знімок екрана виклику функції
Note: The pair is just the current response object. In the future we will probably have a custom type for it.


Зараз ми переходимо до Фази ζ (зета). Метою цього етапу буде дозволити реалізацію третього типу: поєднання функцій для створення нових можливостей. Це також буде першим етапом, який справді висвітлить переваги нашої системи для сприяння впровадженню неанглійських мов. Ми опублікували кілька прикладів складених реалізацій. The example implementation of common Boolean functions might be particularly instructive. Phase ζ is the last of the trilogy of Phases dealing with the different ways to create an implementation.

During this Phase and subsequent ones, we will also spend some time to reduce technical debt that we accumulated in rushed development during the last two phases in order to be ready for the security and performance reviews. We also expect to begin early changes based on our user research and design development, replacing the current bare-bones user experience.

Structurally, Phase ζ aims to be the turning point of the development towards Wikifunctions. It will set us up with a system that is powerful enough to allow for its own refactoring in order to support generic types and functions in Phase η (eta), and then to implement monitoring, UX, security, and documentation. All the core technical capabilities should be in place by then, and then we will need to add the necessary supporting systems that will allow us to launch Wikifunctions.


Last week saw the Arctic Knot conference, which was about the future of indigenous and underrepresented languages and their presence and use on the Wikimedia projects. I want to point to a few talks that are potentially particularly interesting to the Abstract Wikipedia and Wikifunctions community:

Thanks everyone for attending, presenting at, and organizing the event!

We close with a reminder that there is an invitation to attend for free the Grammatical Framework Summer School from 26 July to 6 August 2021.

The language committee has approved the creation of the Dagbani language Wikipedia. Dagbani is one of our focus languages, and has been the only one of the five that has been in Incubator. Congratulations to the Dagbani community!

Next week there will be no newsletter.