Coder Social home page Coder Social logo

wikistream's Introduction

wikistream

Wikistream is a Node webapp for helping visualize current editing activity in Wikipedia. The app sits in the wikimedia IRC chat rooms (where updates are published by the various Mediawiki instances), and makes them available on the Web in realtime. The code for listening to the IRC update stream was split out into a separate Node module called wikichanges.

Installation

These instructions assume you have Ubuntu. If you don't you'll need to figure out the equivalent instructions. It shouldn't be too complicated.

First, you need to get Node and dependencies:

sudo apt-get install nodejs
npm install

Next you''ll want to use and/or adjust the default configuration:

cp conf/config.json.example config.json

You may want to adjust the ircNick that is in the example to something unique, so that you will be able to join the channels without a collision. Also you can adjust the wikipedia language channels that are being monitored.

Then, start the webapp;

node app.js

wait 10-15 seconds for the app to join the irc channels, and then point your browser at:

http://localhost:3000/

For production deployments an upstart script and varnish config are included, which you should be able to install and use.

sudo cp conf/wikistream.conf /etc/init/wikistream.conf
sudo apt-get install varnish
sudo cp conf/default.vcl /etc/varnish/
sudo start wikistream

The icons were created by Delphine Ménard, and are separately available at:

Authors

License

  • CC0

wikistream's People

Contributors

edsu avatar geraki avatar lydiapintscher avatar mrdys avatar rottina avatar waldyrious avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wikistream's Issues

Add new new language

Hi, So many thanks for this awesome tools. I am not sure how hard it is to add new language/project on your tools. If you are available and can add new languages here, that will be awesome.

I am requesting to add you Bengali Wikipedia (bn) on your lookup list.

Upgrade jquery

The code is currently at version 1.6.1, from 2011. The current jQUery version is 1.11.1. Note that in the download page they recommend using jquery-migrate for versions prior to 1.9.

I am filling this specifically because The Google Chrome console shows this warning:

'webkitRequestAnimationFrame' is vendor-specific. Please use the standard 'requestAnimationFrame' instead. (jquery.min.js:18)

add other wikimedia properties

Jodi suggested that wikistream also monitor wikisource, wikiquote, etc. There will be some work to make sure that the IRC messages are similar I guess. It would be neat to be able to see images from the commons as they are uploaded.

express 2.3.x cannot be found

On clean checkout, npm install fails with:

npm install
npm ERR! Error: Not found: express@'>=2.3.0- <2.4.0-'
npm ERR! Valid install targets:
npm ERR! ["latest","0.14.0","0.14.1","1.0.0beta","1.0.0beta2","1.0.0rc","1.0.0rc2","1.0.0rc3","1.0.0rc4","1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","2.5.0","2.5.1"]
npm ERR! at installTargetsError (/opt/local/lib/node_modules/npm/lib/cache.js:410:10)
npm ERR! at /opt/local/lib/node_modules/npm/lib/cache.js:403:17
npm ERR! at saved (/opt/local/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:136:7)
npm ERR! at Object.cb [as oncomplete] (/opt/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:36:9)
npm ERR! Report this entire log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]
npm ERR!
npm ERR! System Darwin 10.8.0
npm ERR! command "node" "/opt/local/bin/npm" "install"
npm ERR! cwd /Users/veleno/workspace/wikistream
npm ERR! node -v v0.6.0
npm ERR! npm -v 1.0.104
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/veleno/workspace/wikistream/npm-debug.log
npm not ok

fix "fork me" banner's z-index

I'm not sure why, but the "fork me" banner displays behind the "slider" span, if the window width is small enough to make them overlap. This should ideally be fixed in the code that styles the "slider" span and its sub-elements, but an easy workaround is to add z-index:1 to the banner image's style.

Better layout for smaller screens

I find this works better for smaller screen (and wider ones shouldn't be affected):

  1. remove the padding-left:50px; from the <body> tag;
  2. move the width:55% rule from #updatePanel to #updates;
  3. add margin:0 auto; to #controls and #updates.

Additionally, you might want to remove the margin-left and margin-right rules from #updatePanel, since without a set width the auto value has no effect.

highlight reverts

I wonder if it's possible to see if an update is a revert, and somehow highlight it in the UI.

Change the P to pause to [space bar]

I guess I can add that here ;)

Hitting P on a keyboard to pause is difficult when you're for example, standing up in front of an audience and may have to look at your keyboard. Using the space bar as a pause "button" might make more sense. (Actually, both could wor). It's also a rather widely spread use of the space bar.

Wikistream pauses if one leaves the page

If you change the current tab or window, the Wikistream pauses and you don't see the edits done in this time. This is very annoying if you are someone who always switches between windows... I think it would be great if you there was an option, so the wikistream doesn't pause when leaving the page.

Mapping tool

Display geograhical blips on a map based on edits

error starting updates.js

I get this simply by 'node updetes.js':

node updates.js

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
at Function. (module.js:376:11)
at Object. (/Users/veleno/workspace/wikistream/node_modules/irc-js/lib/irc.js:15:8)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Object. (/Users/veleno/workspace/wikistream/updates.js:3:11)
at Module._compile (module.js:432:26)

Function deprecated, change "process.EventEmitter.prototype"

root@mayank-Vostro-460# cd wikistream
root@mayank-Vostro-460:~/wikistream# gedit node_modules/policyfile/lib/server.js

"gedit node_modules/policyfile/lib/server.js"

/New code,/
/**

  • Proxy the event listener requests to the created Net server
    */
    var EventEmitter = require('events');
    Object.keys(EventEmitter.prototype).forEach(function proxy (key){
    Server.prototype[key] = Server.prototype[key] || function () {
    if (this.socket) {
    this.socket[key].apply(this.socket, arguments);
    }

    return this;
    };
    });

/******* old code*************/
/**

  • Proxy the event listener requests to the created Net server
    */
    Object.keys(process.EventEmitter.prototype).forEach(function proxy (key){
    Server.prototype[key] = Server.prototype[key] || function () {
    if (this.socket) {
    this.socket[key].apply(this.socket, arguments);
    }

    return this;
    };
    });

right-to-left for fa, ur and he

A good suggestion to do right-to-left in the CSS:

Can you please put titles of articles in right-to-left languages (ar,
fa, ur, he) in TITLE? Thank you!

visited links color

Can you put the visited links (diff) in an other color (in green for example) ? I use WikiStream for RC patrols and this modification would be useful to me. Thank you.

Preserve filter selections on reload

The selections on the controls/filters are being preserved on the interface, but not reflected on the actual behavior of the app (try changing some of them and reloading the page). Preserving behavior would be ideal, but if it's hard to implement, resetting the interface controls would be a good idea for now, to keep consistency.

ps - I am not sure if specific browsers behave differently – I'm using Firefox 3.6 on Linux.

Future request: show stream of specific user

Would be great if user could point the stream to specific editor - would be useful for monitoring bots (instead of refreshing RC).

If it is hard to implement/bad idea/already possible with different tool, just tell :-)
Thank you.

category based streams

I got this feature suggestion from Daniel Mietchen, who is working in the Wikimedian in Residence for Open Science program:

Do you have any plans to add category support to Wikistream? I am particularly interested in having such a display for pages in Category:Science, its subcategories and, if possible, its counterparts in other languages.

It would be a great feature to have, but would currently require pinging the various wikipedia APIs for every update, which would generate a lot of traffic. A possibly better approach would be to update the mediawiki code to emit the article's categories when dumping the status message in IRC.

Net Gain/Loss

It'd be interesting to see if all of the commits either take away or add to wikipedia as a whole. Essentially this would be a running counter which would incremented based on the difference per commit.

Show timestamp

When filters make the stream slower, the timestamps would be interesting to keep things in perspective (e.g., five minutes feel like a very long time if you're staring into a screen, but several edits in five minutes are still an impressive rate of activity, especially for a site that offers nearly no social features)

daily stats

Since redis is being used perhaps some rolling daily stats could be kept, like by language, and users, and reverts, etc?

display commons images

If wikistream starts to monitor the commons it might be fun to display images from uploads somehow. Perhaps as a bing like background? Or a stream of thumbnails...

automatically size the queue

It would be neat if the size of the queue automatically fit on the screen. This would involve some work to make sure that the maximum number of entries in the queue somehow related to the screen size of the queue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.