LinguaLibre
Weekly updates
Week 13
- Small bugfixes on the RecordWizard;
- Start a testing period of the RecordWizard:
- feedbacks can be made here: https://lite.framacalc.org/ligualibre2018;
- note that all records made during this period are stored on a development wiki and will be erased at the end of the test;
- Back to the skin:
- Switch from timeless to Foreground, which is also responsive but lighter, closer to the visual identity we want and easier to customize;
- Start to customize it to LinguaLibre's colors, and tweak the navigation bar.
Week 12
A big week to compensate for week 11. The RecordWizard has reached a first stable version at the end of this week. That will allow us next week to launch a first testing period on a small group.
- create a second generator, based on lists in a new List: namespace;
- deep reorganization of the step 2 and 3:
- We had before a Details step, which contained both the speaker's information and the record parameters; and a License step, which contained only a license agreement;
- This caused many issues, in term of UX (we had to disable some fields the time the user fills the previous ones), performance/code complexity (each interactions of the users needed to be tracked to update/disable some other fields) and code readability for the Details step (way too many elements in one class);
- This has changed to have a first Locutor step, which contains only the details about the speaker and his license agreement; and a Details step, which contains the record parameters. This organization is way more balanced, logical and easy to understand for the end user;
- Add an optional list randomizer;
- Add a license picker, using the standard Mediawiki:Licenses as a configuration page;
- implement the locutor profile and add a profile picker;
- consolidate the wikibase item saving process:
- manage secondary locutors;
- smart update if an item already exists (for the locutor and the records);
- factorization and cleaning of some wikibase API interactions;
- add a placeholder for the Tutorial step;
- Translate all messages into French;
- Format correctly output to Wikimedia Commons (file titles and descriptions);
- many small bug fixes during the whole week.
Week 11
Due to personal reason, the work this week was a little shortened, this has been corrected on week 12. But the work on the RecordWizard still continues:
- r&d on the internal structure and mechanisms of wikibase;
- continue and finish the work around data search in wikibase;
- a wikibase item is created for each locutor and record (but it will not update yet if it already exists);
- create some needed structural wikibase items.
Week 10
The work on the RecordWizard continues:
- enrich the word-list structure to be able to store word-related metadatas;
- add LocalSettings options to let sysadmin configure the RecordWizard, instead of using hardcoded values;
- start the connexion with the wikibase by pulling some datas;
- create a locutor profile structure and save it to the user preferences.
Week 9
The work on the RecordWizard continues:
- UI research and implementation tests for the Details step;
- Develop the concept of generator;
- Technical design:
- Generators are JS components intended to dynamically provide a list of words to record inside the RecordWizard;
- They should inherit the generic
mw.recordWizard.generator.Generator
class; - They can be registered from anywhere, including site-wide scripts like MediaWiki:Common.js or gadgets, by adding it to the
mw.recordWizard.generator
object; - Each one can ask for user inputs inside a dialog box.
- Implemented it inside the Details step;
- Create a first generator to show of capacities, Nearby items, which fetch words from wikidata items geographically around the user.
- Technical design:
Week 8
The work on the RecordWizard continues:
- Implement a controller and a ui to the studio step;
- Plug the UploadManager class and the new Upload2Commons extension to the studio;
- Improve the step managment;
- Improve the UX in particular through:
- an auto-scroll
- small voice amplitude graphs
- keyboard controllable actions (start/stop with the spacebar, move to the next/previous word with the arrows,...);
- Add a full warning and error handling;
- See the last 24 commits on the RecordWizard repository.
Week 7
- Start to develop the core of the RecordWizard:
- Create an UploadManager;
- Setup a step controller and a step ui parent class (inspired from what the UploadWizard does);
- Initialize 6 empty steps: tutorial, details, license, studio, confirm, thanks.
Week 6
- Develop another extension, Upload2Commons, to add a new module to the API, which allow a user to upload a local file to a remote wiki through OAuth:
- source code available on it's git repository;
- test it on the ApiSandbox;
- all remote uploads leave an entry in a dedicated log: Special:Log/remoteupload;
- see module documentation:
Doc from Special:ApiHelp/upload-to-commons |
---|
action=upload-to-commons(main | upload-to-commons)
Upload a local wiki file to a remote wiki using OAuth. The file must already be uploaded on the local wiki. Several methods are available:
Note that the filename, comment, tags, text and ignorewarnings parameters are the same than in action=upload. Parameters:
|
- add a feature in the oauthclient-php library: T186739
Week 5
- Many enhancements to LinguaRecorder:
- Add new export methods (Wav-encoded blob, client-download, <audio> element,...);
- Comment the code and document the whole library;
- Create a sandbox to easily demonstrate all the features;
- Test and add support to old browsers (Firefox 25+, Chrome 22+,... see the complete list here).
- Present LinguaLibre during the monthly Wikimedia Foundation metrics and activities meetings
Week 4
- Create a npm package for LinguaRecorder: https://www.npmjs.com/package/lingua-recorder
- Add debugging tools to Mediawiki.
- Add TimedMedia ans translation-related extensions.
- Manage permissions: allow only the users with the upload right to use the RecordWizard.
- Setup a basic recording studio.
Week 3
- Setup the server with a fresh primary MediaWiki installation to use as a development environment, accessible at https://v2.lingualibre.fr.
- Install the OAuthAuthentication extension to delegate the login to an other wiki. Here are the settings currently in use inside the LocalSettings.php file:
LocalSettings.php configuration |
---|
# Remove the default TemporaryPassword and LocalPassword authentication provider
# to let OAuth as the only authentication provider usable.
$wgAuthManagerAutoConfig['primaryauth'] = [];
# Activate the OAuthAuthentication extension
wfLoadExtension( 'OAuthAuthentication' );
$wgOAuthAuthenticationUrl = 'https://oauth.0x010c.fr/index.php?title=Special:OAuth';
$wgOAuthAuthenticationConsumerKey = '<consumer_key>';
$wgOAuthAuthenticationConsumerSecret = '<consumer_secret>';
$wgOAuthAuthenticationCanonicalUrl = 'https://oauth.0x010c.fr';
$wgOAuthAuthenticationRemoteName = 'OauthWiki';
$wgOAuthAuthenticationAllowLocalUsers = false;
$wgOAuthAuthenticationReplaceLoginLink = true;
|
- Setup a secondary MediaWiki installation to be used by the first one as a remote authentication provider (to replace Wikimedia Commons during the development phase), accessible at https://oauth.0x010c.fr.
- Install the Wikibase extension. Here is it's LocalSettings.php configuration:
LocalSettings.php configuration |
---|
# Activate the Wikibase Repository extension
$wgEnableWikibaseRepo = true;
$wgEnableWikibaseClient = false;
require_once "$IP/extensions/Wikibase/repo/Wikibase.php";
require_once "$IP/extensions/Wikibase/repo/ExampleSettings.php";
# Create a new namespace to host properties
define( 'WB_NS_PROPERTY', 102 );
define( 'WB_NS_PROPERTY_TALK', 103 );
$wgExtraNamespaces[WB_NS_PROPERTY] = 'Property';
$wgExtraNamespaces[WB_NS_PROPERTY_TALK] = 'Property_talk';
# Store the items in the main namespace, the properties in their newly created one
$wgWBRepoSettings['entityNamespaces']['item'] = NS_MAIN;
$wgWBRepoSettings['entityNamespaces']['property'] = WB_NS_PROPERTY;
# We don't need sitelinks
$wgWBRepoSettings['siteLinkGroups'] = array();
# see https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/docs/options.wiki
$wgWBRepoSettings['formatterUrlProperty'] = 'P20';
|
- Draft the datastructure and create the first property/items needed.
- Install the timeless skin.
- First commit to initialize the new RecordWizard extension.
- Split the recording studio out of the LinguaLibre repository, to it's own new repo, LinguaRecorder.