Talk:Parsoid/Archive

Set up in web server?
My wiki is on the webserver running Linux 2.6. I've installed node by following ./configure --prefix=${HOME}/local/ make make install Now, I've downloaded Parsoid and copied into the wiki's extension directory: ${HOME}/public_html/testwiki/testwiki/extension/ And, I did cd Parsoid/js npm install Edit the localsettings.js as parsoidConfig.setInterwiki( 'testwiki', 'http://test.mydomain.com/testwiki/' ); and, run the Parsoid server like this: cd Parsoid/js node api/server.js And when I checked the webpage of http://test.mydomain.com:8000/testwiki, but the browser failed to open the page.

Is there anything I missed? Would someone guide me how to set up properly in a webserver, please? (I don't have root access since it is on the webserver.)

Multiple wikis
Can several Mediawiki installation use the same Parsoid server? --Amir E. Aharoni (talk) 18:35, 13 October 2012 (UTC)


 * Yes. The Parsoid takes a prefix when the requests come in to determine which wiki you're talking about. Jdforrester (WMF) (talk) 22:34, 15 October 2012 (UTC)


 * Hello Jdforrester, could you please elaborate. In my setup, one Ubuntu server and two wikis (ohne http and one https) this is not working or lets say I do not know how to set it up correctly. --SmartK (talk) 08:34, 6 September 2013 (UTC)

VPS needed?
I'm running the VisualEditor on a shared server that doesn't allow background services like Parsoid to run. Is there any option to connect to a server running elsewhere? A group parsoid server perhaps? Or will everyone with a MediaWiki site have to upgrade to a VPN?


 * Yes what? Everyone with a MediaWiki site has to upgrade to a VPS?


 * The "yes" wasn't a reply to that comment (indeed, it was written two months previously - have now added the "unsigned" templates). To answer the question, we're looking at building out support for HTML-only wikis that will let you edit with VisualEditor without being able to run Parsoid. Stay tuned! Jdforrester (WMF) (talk) 00:43, 17 July 2013 (UTC)

Gateway between NodeJS/PHP to provide MediaWiki hooks to handle third-party extensions?
Will it be possible to use the hooks from the code MediaWiki like SematicMediaWiki and processing properties Parsoid through a gateway PHP-NodeJS? Vit1251 (talk) 13:24, 19 March 2013 (UTC)

You plan to upgrade nodejs 0.9 and later?
You plan to upgrade nodejs 0.9 and later? Vit1251 (talk) 13:24, 19 March 2013 (UTC)
 * We now support nodejs 0.10. Cscott (talk) 14:43, 14 August 2013 (UTC)

How about using the Travis-CI test Parsoid on GitHUB?
How about using the Travis-CI test Parsoid on GitHUB? Vit1251 (talk) 13:24, 19 March 2013 (UTC)
 * We use the wikimedia foundation's repository, which uses Jenkins to do automatic integration testing. See Continuous integration/Jenkins. Cscott (talk) 14:45, 14 August 2013 (UTC)

You do not plan to switch completely to GitHUB and hide you repository?
Your repository is hard to see the changes and ask, and the user friendly interface and GitHUB availability issue tracker. Vit1251 (talk) 13:35, 19 March 2013 (UTC)
 * We use the wikimedia foundation's repository. See Gerrit for our code review tool and  is our gitblit installation for browsing source.  There are also github mirrors at .  We use Bugzilla for bug tracking.  See also bug 35497 which discusses ways to sync github and gerrit.  I'll look into enabling yuvi's tools for the parsoid repo. Cscott (talk) 14:52, 14 August 2013 (UTC)

Running Parsoid on a "private" wiki - AccessDeniedError
I have a private wiki in which the users have to log in to read the contents. I managed to install Parsoid (for the VisualEditor extension), but when I run the API server (node api/server.js), I get the following error message.

AccessDeniedError: Your wiki requires a logged-in account to access the API. Parsoid will not work for this wiki!

If I set $wgGroupPermissions['*']['read'] = true; it runs fine, but then the wiki is no longer private. I understand that mediawiki is designed to be "open", but for what I'm using it for, I need to make it private. Any idea?

Installing on a private wiki
If you wan't to install visual editor onto a private wiki

$local_ip = '127.0.0.1'; if ( $_SERVER['REMOTE_ADDR'] == $local_ip ) { $wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['edit'] = true; }else{ $wgGroupPermissions['*']['read'] = false;
 * 1) Disable reading by anonymous users

$wgWhitelistRead = array ("Special:Userlogin", "MediaWiki:Common.css", "MediaWiki:Common.js", "MediaWiki:Monobook.css", "MediaWiki:Monobook.js", "-");

$wgGroupPermissions['*']['edit'] = false; }
 * 1) Disable anonymous editing

--This code needs to be slightly, working on it.

Didn't work for me.. had to change it into this:

Removed: $local_ip = '127.0.0.1'; if ( $_SERVER['REMOTE_ADDR'] == "127.0.0.1" OR $_SERVER['REMOTE_ADDR'] == "public ip of the server" ) { Ricmik (talk) 13:05, 1 September 2013 (UTC)

Windows Server 2008 R2
Anyone knows how to get this running in Windows Server 2008 R2?

How can I config to allow Parsoid support multiple wiki?
One of our programmer stubbornly believe that one Parsoid could only support one wiki. I know he is wrong since Wikipedia and Wikia use this in many many wikis. I just don't know how to config. Does anyone know how to config?
 * See js/lib/mediawiki.ParsoidConfig.js in the source code, and js/api/localsettings.js.example. Basically you need to set up 'interwiki' prefixes for all your wikis. Cscott (talk) 15:27, 14 August 2013 (UTC)
 * Could someone maybe show us a sample of the config for this interwiki setup? Would be great!--SmartK (talk) 08:38, 6 September 2013 (UTC)

Error to install Parsoid on WAMP for Win-7x64...
Hello ! I'm French, sorry for my poor English... I Try to install Parsoid for MediaWiki on WAMP in Windows 7 x64 from this link: http://www.mediawiki.org/wiki/Parsoid#Getting_started

I launch the instal with: "npm install" into : D:\WEB\WAMP\WWW\Website\MyWiki\Extensions\Parsoid\js\

Then I get this final error at the line 281 of npm-debug.log=> ... 277 http 200 https://registry.npmjs.org/domino/1.0.8 278 silly registry.get cb [ 200, 278 silly registry.get  { vary: 'Accept', 278 silly registry.get    server: 'CouchDB/1.3.0 (Erlang OTP/R15B03)', 278 silly registry.get    etag: '"79B59T2JHOSGNNRDXW55UM8PK"', 278 silly registry.get    date: 'Fri, 14 Jun 2013 06:51:45 GMT', 278 silly registry.get    'content-type': 'application/json', 278 silly registry.get    'content-length': '3147' } ] 279 http 200 https://registry.npmjs.org/pegjs 280 silly registry.get cb [ 200, 280 silly registry.get  { vary: 'Accept', 280 silly registry.get    server: 'CouchDB/1.3.0 (Erlang OTP/R15B03)', 280 silly registry.get    etag: '"B1AA422IDG6T49O2B4HUMSAD2"', 280 silly registry.get    date: 'Fri, 14 Jun 2013 06:51:45 GMT', 280 silly registry.get    'content-type': 'application/json', 280 silly registry.get    'content-length': '19774' } ] 281 http GET https://registry.npmjs.org/events/-/events-0.5.0.tgz 282 error Error: No compatible version found: jshashes@'>=0.0.0- <1.0.0-' 282 error Valid install targets: 282 error ["1.0.2","1.0.3"] 282 error    at installTargetsError (C:\Program Files (x86)\nodejs\node_modules\npm\lib\cache.js:682:10) 282 error    at next (C:\Program Files (x86)\nodejs\node_modules\npm\lib\cache.js:661:17) 282 error    at C:\Program Files (x86)\nodejs\node_modules\npm\lib\cache.js:641:5 282 error    at saved (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\get.js:138:7) 282 error    at Object.oncomplete (fs.js:297:15) 283 error If you need help, you may report this log at: 283 error     283 error or email it to: 283 error     284 error System Windows_NT 6.1.7601 285 error command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" 286 error cwd D:\WEB\WAMP\WWW\Website\MyWiki\Extensions\Parsoid\js 287 error node -v v0.8.22 288 error npm -v 1.2.14 289 verbose exit [ 1, true ] [EOF]

Maybe that's because "Win7" instead of "Unix" ?? Thanks for any reply, or advise to install this Parsoid...

Godvicien (talk) 07:36, 14 June 2013 (UTC)
 * This should be fixed, we no longer depend on jshashes. Cscott (talk) 15:27, 14 August 2013 (UTC)

Grrrr Debian assumptions
It's bad enough that only Debian based Linux distros have "apt" command, and the installation instructions are flawed for all other Linux users, but it also totally ignores Windows/Apache Windows/IIS users.

So can we even use VisualEditor and Parsoid??? If not, then this REALLY needs to be made clear upfront. As I just wasted hours updating a server to use this, only to fall at this hurdle.


 * We've had reports of users installing it on Windows machines, but not sure if they were using local POSIX emulation/compatibility. Sorry for the confusion. Jdforrester (WMF) (talk) 15:55, 5 July 2013 (UTC)


 * We could use help from the community to support Windows installation. It *should* work.  If someone could write up good instructions, it would be very useful. No one on the dev team runs windows themselves. (Similarly for non-Debian/Ubuntu installs.) Cscott (talk) 14:42, 14 August 2013 (UTC)


 * I've installed parsoid on a Virtual ubuntu machine inside windows server. Bouncingmolar (talk) 16:11, 19 September 2013 (UTC)

Error downloading node
I'm having difficulty downloading the correct node version as per the instructions. When I try to get the legacy version, I get:

apt-get install nodejs nodejs-legacy npm E: Unable to locate package nodejs-legacy

And so I install the Chris Lea repository version, but then on install:

npm ERR! Not compatible with your version of node/npm: request@2.22.0 npm ERR! Required: ["node >= 0.8.0"] npm ERR! Actual:  {"npm":"1.1.4","node":"0.6.12"}

apt-get install nodejs npm nodejs is already the newest version. npm is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

Any help would be much appreciated!--Stuartbman (talk) 15:01, 21 July 2013 (UTC)
 * what system are you on? nodejs-legacy isn't strictly required, it just lets you type 'node' instead of 'nodejs' on the commandline. Cscott (talk) 15:27, 14 August 2013 (UTC)

TypeError: Cannot read property 'oldid' of undefined
Hello all :)

the newest Parsoid run on my server and parse all wiki text correctly. But if i want to save a page, the parsoid console output is this: /var/www/services/Parsoid/js/api/ParserService.js:635 var doc, oldid = req.body.oldid || null; ^ TypeError: Cannot read property 'oldid' of undefined at app.post.cb (/var/www/services/Parsoid/js/api/ParserService.js:635:28) at getParserServiceEnv (/var/www/services/Parsoid/js/api/ParserService.js:376:4) at MWParserEnvironment.getParserEnv (/var/www/services/Parsoid/js/lib/mediawiki.parser.environment.js:279:3) at setupWikiConfig (/var/www/services/Parsoid/js/lib/mediawiki.parser.environment.js:299:3) at ApiRequest._processListeners.processSome (/var/www/services/Parsoid/js/lib/mediawiki.ApiRequest.js:102:17) at process.startup.processNextTick.process._tickCallback (node.js:245:9) worker 2942 died (1), restarting. - worker(2947) loading... - worker(2947) ready The POST request from Wiki looks ok, Content type is "application/x-www-form-urlencoded; charset=UTF-8", the content of the request: summary:Testedit minor:1 format:json action:visualeditoredit page:Testpage oldid:6833 basetimestamp:20130730144824 starttimestamp:20130803151237 html:htmlcontent token:a6e377be0566413a23b9e2d52b18f115+\ Has anyone an idea what the error is? Thanks!


 * Had the same problem after resolving mine above, help would be really appreciated. --Stuartbman (talk) 13:22, 8 August 2013 (UTC)
 * Also have had the very same problem (identical trace). Solved it with switching to epress 3.x, as indicated in the article under "Install dependencies": "I had to manually change package.json for the express item from 2.5.x to 3.x in order to parsoid to work". After changing Parsoid/js/packacke.json in this way, do an "npm install" again. (When the server runs, you will get a lot of deprecation warnings, but it seems that these can be ignored.) --95.33.104.9 20:13, 11 August 2013 (UTC)


 * See bug 52840. It appears that this might be a 'connect' incompatibility.  We don't actually recommend using express 3.x yet, since it's not compatible with express 2.x and we don't use it in production or development. Cscott (talk) 15:27, 14 August 2013 (UTC)

Error contacting the Parsoid server
Hi, I've been trying all night to get the VisualEditor to work, but no luck.

I'm running MediaWiki 1.22alpha on Ubuntu Precise. The parsoid is working ok at http://wikineering.org:8000/, the wiki too at http://wikineering.org/mediawiki/, the api too at http://wikineering.org/mediawiki/api.php

The relevant configuration variables in  set as such: $wgVisualEditorParsoidURL = 'http://localhost:8000'; $wgVisualEditorParsoidPrefix = 'localhost'; And in, I have: parsoidConfig.setInterwiki( 'localhost', 'http://localhost/mediawiki/api.php' );

When I click on the "Edit" button, the VisualEditor loads. But when I hit "Save", I get a little "Error contacting the Parsoid server" error message right below the textarea for the edit summary. I've also tried with "wikineering" and "wikineering.org" instead of "localhost", and every combination I could come up with, but no luck. I downloaded the Lynx browser and checked that http://localhost:8000 and http://localhost/mediawiki/api.php are working. They are.

Any ideas? Thanks in advance!


 * See above? Does that help? Cscott (talk) 14:40, 14 August 2013 (UTC)


 * Indeed, I saw it only a while ago, my bad. The issue has been reported as 52840.

Translating mathematics markup
Hello. In a discussion about the way Flow might handle mathematics markup here, I was told I don't think that anyone has said that HTML5+RDF storage precludes storage for mathematics work; that's something that the Parsoid team is working on. Is this something which is likely to be possible under Flow? It would be interesting to know how it is proposed to handle the translation and storage of $$...$$. There might be some interest, and even help, at en:WT:WPM. Spectral sequence (talk) 21:17, 18 August 2013 (UTC)
 * We are handling math just as any other tag extension. Attributes and extension content (latex in case of math) are exposed for editing. AFAIK the VisualEditor team is working both on a specialized math widget and generic tag extension editing that uses this.
 * Our current rendering uses the PHP default rendering (PNG images). We'd like to explore rendering to MathML with MathJax in the future (see bug 51698), but this won't affect the Latex-based editing interface at all. MathML-based editing would require a bidirectional conversion between MathML to Latex. -- Gabriel Wicke (GWicke) (talk) 19:19, 19 August 2013 (UTC)

vagrant
I tried to setup parsoid via vagrant. All I did is enabled the role. However if I try to click on that javascript edit box I get an error.

Error loading data from server:parsoidserver-http-request-error: MWHttpRequest error. Would you like to retry?

If I click yes the error occurs again and again. Do I need to configure something anything special?

Which Versions which Errors
It would be very nice to get detailed informations which 3rd party package-versions are used (node.js, D-BUS etc.). This would make it possible to follow with an optimized, dedicated system. For now I get the following output. Do I really have to install git too or is there a hint available? Actually I only want to install the extension, instead of a complete repository management system or dev- environment like Vagrant.

Debian 6:

npm WARN package.json mediawiki-parsoid@0.0.1 No repository field. [...] npm ERR! not found: git npm ERR! npm ERR! Failed using git. npm ERR! This is most likely not a problem with npm itself. npm ERR! Please check if you have git installed and in your PATH. [...] --Steviex2 (talk) 04:40, 14 September 2013 (UTC)
 * 1) npm install
 * Yes, I believe you need to install git at the moment. Better packaging is on our roadmap.  You might also look into the https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Parsoid/js/contrib.git repository, which should contain working versions of all the third-party npm modules used by Parsoid. Cscott (talk) 16:53, 17 September 2013 (UTC)

The mentioned directory "https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Parsoid/js/contrib.git" is obviously empty, or the link is incorrect. Is there a trick to retrieve this info? Even after a git clone I can't see it.

--Steviex2 (talk) 07:58, 19 September 2013 (UTC)--

Run parsoid over https?
I'm installing the Visual Editor and Parsoid on a dev wiki for the company I work for to test out the visual editor before it gets released with the stable mediawiki 1.22 later this year.

The production wiki is externally faceable, and we're running over https rather than http. Is this a problem with running the webservice, which runs over http and port 8000?

Is it as simple as reconfiguring iptables, a configuration change, or something that requires fundamentally alter the Parsoid code?

Thanks, Silversonic (talk) 17:30, 14 September 2013 (UTC)
 * Parsoid can run over localhost on port 8000 and http. That is, VisualEditor will talk to the parsoid server, but the communication need not leave the host machine. Cscott (talk) 16:51, 17 September 2013 (UTC)

Unless I am very much mistaken, this could NOT affect http to https redirections or? --Steviex2 (talk) 05:37, 21 September 2013 (UTC)

Error after updating Parsoid - cant start
Hi, im getting this error Im On Parsoid: commit d4350e6fa4c2a53bc51fdc2257a6b41a80909e9b Merge: 2f9f306 e2f1a2d Author: jenkins-bot  Date:  Wed Sep 18 00:54:36 2013 +0000

Merge "Add a test for DSR update bug."

Is it possible to run Parsoid on "localhost" only

 * Parsoid and VisualEditor are now working great on my private Ubuntu 12.04 Server. But now I noticed that node is listening on port 8000 also on the external IP. I would prefer for node to only listen on port 8000 internally, so to speak on localhost:8000. Can someone help? --SmartK (talk) 15:29, 19 September 2013 (UTC)

Is there currently a run-level script available for Debian 6?
...edit...

Debian 6 Solution
Finally got it...could have been a little bit cleaner...I'm tired now :-)...


 * 1) ! /bin/sh
 * 2) /etc/init.d/pslparsoid
 * 3) BEGIN INIT INFO
 * 4) Provides:		pslparsoid
 * 5) Required-Start:	$remote_fs $syslog
 * 6) Required-Stop:	$remote_fs $syslog
 * 7) Should-Start:		$local_fs
 * 8) Should-Stop:		$local_fs
 * 9) Default-Start:	2 3 4 5
 * 10) Default-Stop:		0 1 6
 * 11) Short-Description:	Start Parsoid daemon
 * 12) Description:		Start up Parsoid, Debian run-level script by PSL GbR (draft)
 * 13) END INIT INFO

env VCAP_APP_PORT="8000" env NODE_PATH="/var/www/vhosts/xxx.vserver.de/httpdocs/extensions/Parsoid/js/node_modules"
 * 1) Some things that run always

case "$1" in start)    cd "/var/www/vhosts/xxx.vserver.de/httpdocs/extensions/Parsoid/js"    /usr/local/bin/node /var/www/vhosts/xxx.vserver.de/httpdocs/extensions/Parsoid/js/api/server.js >> nohup.out 2>&1 &    ;;  restart) echo "Stopping Parsoid..." echo "killall -9 node, could do more here..." killall -9 node ;; 'reload'|'force-reload')    echo "Could fail..."    cd "/var/www/vhosts/xxx.vserver.de/httpdocs/extensions/Parsoid/js"    /usr/local/bin/node /var/www/vhosts/xxx.vserver.de/httpdocs/extensions/Parsoid/js/api/server.js >> nohup.out 2>&1 &    ;;    stop) echo "Stopping Parsoid..." killall -9 node ;; *)    echo "Usage: /etc/init.d/pslparsoid {start|stop|restart|reload|force-reload}"    exit 1    ;; esac
 * 1) Carry out specific functions when asked to by the system

exit 0

...this works with often preinstalled Sysvinit too...

...any improvements???

Thx --Steviex2 (talk) 12:07, 20 September 2013 (UTC)

Anyone has it working for Gentoo?
I'm a beginner there... This is in my /etc/init.d/parsoid:

// edited to working but not nice solution, see below for the final solution.
 * 1) !/sbin/runscript
 * 2) /etc/init.d/parsoid

description="Start Parsoid extension for MediaWiki"

start {	ebegin "Starting Parsoid extension for MediaWiki" cd "/var/www/domain/wiki/extensions/Parsoid/js" nohup node api/server.js &

eend $? } But obviously it runs in the console which needs to remain logged in (edit: not anymore, but sometimes throws some messages there), not speaking of remote restart of the server...

Thanks! --89.190.50.45 09:01, 26 September 2013 (UTC)

First test the script on the console. Then make sure you define the right states for rebooting etc. That helped me a lot :-). --Steviex2 (talk) 06:24, 29 September 2013 (UTC)

It works in console, but the output is shown in the console as well -> when I put it into init on boot it "hangs" on the Parsoid output and doesn't boot up properly. I need to figure out how to make it output to some log/nowhere instead of console so other programs run after it, probably in the line "node api/server.js". Stressing out I'm a linux newbie :)

Thanks, --146.102.34.101 16:04, 2 October 2013 (UTC)

For this I use ">> nohup.out" (log into file). Or "2>&1 &" send to nowhere. --Steviex2 (talk) 20:40, 2 October 2013 (UTC)

Thanks, but didn't work for me. kind of worked, but the final and nice solution is here:

Working init script for Gentoo
/etc/init.d/parsoid-daemon:
 * 1) !/sbin/runscript
 * 2) /etc/init.d/parsoid-daemon

description="Start Parsoid extension for MediaWiki as daemon"

start {	ebegin "Starting Parsoid extension for MediaWiki as daemon"

start-stop-daemon \ --start \ --pidfile /var/run/parsoid.pid \ --make-pidfile \ --verbose \ --background \ --stdout /var/log/parsoid.log \ --stderr /var/log/parsoid-err.log \ --exec node -- /var/www/domain/wiki/extensions/Parsoid/js/api/server.js

eend $? } First edit the path to your server.js by your server's configuration. Then you may want to delete the stdout and stderr lines to disable logging - I think it's good only for debug use.

And ofc you need to make it default -.

Hope it helps others :) --89.190.50.45 21:06, 7 October 2013 (UTC)

Any working Task Manager Script for Windows Server
Does someone has it configured at run level on Windows Server?

Additional Configurations
Are there any additional configuration settings for parsoid available, which are currently not mentioned? I want to play with it.

--Steviex2 (talk) 09:15, 23 September 2013 (UTC)