To those who don't know me yet, hi! I'm Jack Phoenix, and I've been a MediaWiki developer since May 2008.
One of the major third-party users of the MediaWiki software is wikiHow ( http://www.wikihow.com/), a free how-to manual. In my opinion, wikiHow rocks! (No, I don't work for wikiHow and I never have.) However, wikiHow has one rather big problem. You can see it on their Special:Version. Yep... the site's running MediaWiki 1.12 (!), which is four years old. In software development, four years is an eternity. However, wikiHow's technical team is rather small and their codebase is full of custom extensions, patches and hacks -- as a result, they don't really have time for gigantic projects, such as upgrading the MediaWiki engine, let alone managing an open source project. Fortunately wikiHow publishes their source code at http://src.wikihow.comand a new dump will be generated each Monday.
Inspired by this, a fellow developer and a friend of mine, Lewis Cawte (User:Lcawte) created a Google Code repository for the project. You can see the project page at http://code.google.com/p/wikihow/ Basically, the goal of this cleanup project is to update, fix, tweak and patch wikiHow extensions and related things created by wikiHow and make them work on the most recent stable release of MediaWiki (which is currently 1.18.1). In addition to that, the project provides a web-based viewer to see diffs between these weekly code releases. Upon a code release, the older source code dump is deleted from src.wikihow.com and there's no way to see what changed between two releases, if you don't have both source code dumps and GNU diff or some other diffing utility available. We hope that in time, when the project is complete, wikiHow.com can switch to this codebase and abandon the one based on MediaWiki 1.12.
Right now we're managing the official code releases like this: *each Monday, when a release has been done, a new folder in tags directory is created (http://code.google.com/p/wikihow/source/detail?r=30), *the diff generated by "diff -ur older_release newest_release" is applied against the newly created tag ( http://code.google.com/p/wikihow/source/detail?r=31), *and eventually these changes are applied against trunk as needed ( http://code.google.com/p/wikihow/source/detail?r=39); right now this is very easy since most extensions haven't been cleaned up, but in time this will take more developer time, as the changes need to reviewed more carefully
We're inviting anyone interested in MediaWiki development, wikiHow or both to join the project! There's /a lot/ of things to do and right now there are only two people working on it (me and Lewis); it's going to take a while for us to fix everything and still something might slip by us, so we're hoping to have more eyeballs on the code.
The code repository is a SVN repo at http://wikihow.googlecode.com/svn/trunk/ and we're very liberal with commit access, just ask one of us for commit rights and you'll get 'em right away! (For those wondering why SVN and why Google Code, the answer is pretty simple: both of us are more familiar with SVN rather than any distributed version control system, and given that the Wikimedia Foundation is phasing out SVN in favour of git, we didn't want to use it to host this project.)
If you have any questions, please don't hesitate to ask!
On behalf of the wikiHow codebase cleanup project, Jack Phoenix & Lewis Cawte
On Wed, 04 Apr 2012 14:33:25 -0700, Jack Phoenix jack@countervandalism.net wrote:
To those who don't know me yet, hi! I'm Jack Phoenix, and I've been a MediaWiki developer since May 2008.
One of the major third-party users of the MediaWiki software is wikiHow ( http://www.wikihow.com/), a free how-to manual. In my opinion, wikiHow rocks! (No, I don't work for wikiHow and I never have.) However, wikiHow has one rather big problem. You can see it on their Special:Version. Yep... the site's running MediaWiki 1.12 (!), which is four years old. In software development, four years is an eternity. However, wikiHow's technical team is rather small and their codebase is full of custom extensions, patches and hacks -- as a result, they don't really have time for gigantic projects, such as upgrading the MediaWiki engine, let alone managing an open source project. Fortunately wikiHow publishes their source code at http://src.wikihow.comand a new dump will be generated each Monday.
Inspired by this, a fellow developer and a friend of mine, Lewis Cawte (User:Lcawte) created a Google Code repository for the project. You can see the project page at http://code.google.com/p/wikihow/ Basically, the goal of this cleanup project is to update, fix, tweak and patch wikiHow extensions and related things created by wikiHow and make them work on the most recent stable release of MediaWiki (which is currently 1.18.1). In addition to that, the project provides a web-based viewer to see diffs between these weekly code releases. Upon a code release, the older source code dump is deleted from src.wikihow.com and there's no way to see what changed between two releases, if you don't have both source code dumps and GNU diff or some other diffing utility available. We hope that in time, when the project is complete, wikiHow.com can switch to this codebase and abandon the one based on MediaWiki 1.12.
Right now we're managing the official code releases like this: *each Monday, when a release has been done, a new folder in tags directory is created (http://code.google.com/p/wikihow/source/detail?r=30), *the diff generated by "diff -ur older_release newest_release" is applied against the newly created tag ( http://code.google.com/p/wikihow/source/detail?r=31), *and eventually these changes are applied against trunk as needed ( http://code.google.com/p/wikihow/source/detail?r=39); right now this is very easy since most extensions haven't been cleaned up, but in time this will take more developer time, as the changes need to reviewed more carefully
We're inviting anyone interested in MediaWiki development, wikiHow or both to join the project! There's /a lot/ of things to do and right now there are only two people working on it (me and Lewis); it's going to take a while for us to fix everything and still something might slip by us, so we're hoping to have more eyeballs on the code.
The code repository is a SVN repo at http://wikihow.googlecode.com/svn/trunk/ and we're very liberal with commit access, just ask one of us for commit rights and you'll get 'em right away! (For those wondering why SVN and why Google Code, the answer is pretty simple: both of us are more familiar with SVN rather than any distributed version control system, and given that the Wikimedia Foundation is phasing out SVN in favour of git, we didn't want to use it to host this project.)
If you have any questions, please don't hesitate to ask!
On behalf of the wikiHow codebase cleanup project, Jack Phoenix & Lewis Cawte
You should really reconsider that decision to rely on svn to keep this project afloat. You don't have to subject yourself to this horrible workflow we have for core. But you should really consider using git. What you are trying to do is precisely the kind of thing that demands a non-linear vcs like git.
"*and eventually these changes are applied against trunk as needed (...); right now this is very easy since most extensions haven't been cleaned up, but in time this will take more developer time, as the changes need to reviewed more carefully" This is precisely what I'm talking about. You are dealing with 2, maybe even three trees all working in parallel. A WikiHow vendor branch, your tree, and maybe a MediaWiki vendor branch. That kind of thing works beautifully by taking one repo, pulling a git repo of WikiHow's code into it tracked as a branch like 'wikihow' or 'vendor'. And potentially pulling the core repo in (depending on how you structure the whole thing) as another branch. You then work committing wikihow's weekly updates as commits to the wikihow branch maintaining a clean tree of wikihow's codebase history. After a bit of setup to create a master branch with whatever you're working on and one commit with a wikihow commit as a parent into master you're ready. Whenever you feel like it you do a git merge from wikihow into your master branch pulling any code updates into your work. Unlike with svn git's GUIs will very helpfully show you the wikihow tree and your master tree. And show you the connections made where you took commits from wikihow and put them into master. And will also show you when there are updates to wikihow that have not been merged into your branch you're working on 1.18 stuff in.
I ran into two articles on git branches and mergies while searching around I might as well post: http://hades.name/blog/2010/01/22/git-your-friend-not-foe-vol-2-branches/ http://codicesoftware.blogspot.com/2011/09/merge-recursive-strategy.html https://en.wikipedia.org/wiki/Merge_%28revision_control%29#Types_of_Merges
The basic premise is that git intelligently works with the whole tree. Even if you're only merging a single change from wikihow it's still useful. Rather than a simple diff and patch a git merge works with a 3 way diff. Meaning you'll likely end up with fewer pointless merge conflicts later on.
I also think it makes more sense to store this in our git. Specailly now that it's a young project.
Everything with the same version system makes much more sense.
Also, I find the addition of MediaWiki 1.18.1 in r5 quite confusing. That's not what was.
I'd make a branch of wikiHow releases, another of patches to their base version (ie. how they evolved) and a new one of "improved version for wikiHow", which would be a merge of recent MediaWiki with their patches.
I'm not sure about the best way to handle their extensions, though. Maybe by replicating the same approach with a repository per extension.
Currently, diff -ur wikihow-src wikihow-read-only/wikiHow/ contains lots of unrelated changes. How is one expected to make sense of it?
Jack,
I think this is a phenomenal idea and I'm thrilled to have access to some of wikiHow's extension inventions. :) Let me know if I can be of assistance.
Let me know if you'd like to house some of this within the Extensions WikiProject on MW.org to document the activity on a WM wiki and also make it an activity of that wikiproject. https://www.mediawiki.org/wiki/Project:WikiProject_Extensions/Projects
-greg aka varnent
On Apr 4, 2012, at 5:33 PM, Jack Phoenix jack@countervandalism.net wrote:
To those who don't know me yet, hi! I'm Jack Phoenix, and I've been a MediaWiki developer since May 2008.
One of the major third-party users of the MediaWiki software is wikiHow ( http://www.wikihow.com/), a free how-to manual. In my opinion, wikiHow rocks! (No, I don't work for wikiHow and I never have.) However, wikiHow has one rather big problem. You can see it on their Special:Version. Yep... the site's running MediaWiki 1.12 (!), which is four years old. In software development, four years is an eternity. However, wikiHow's technical team is rather small and their codebase is full of custom extensions, patches and hacks -- as a result, they don't really have time for gigantic projects, such as upgrading the MediaWiki engine, let alone managing an open source project. Fortunately wikiHow publishes their source code at http://src.wikihow.comand a new dump will be generated each Monday.
Inspired by this, a fellow developer and a friend of mine, Lewis Cawte (User:Lcawte) created a Google Code repository for the project. You can see the project page at http://code.google.com/p/wikihow/ Basically, the goal of this cleanup project is to update, fix, tweak and patch wikiHow extensions and related things created by wikiHow and make them work on the most recent stable release of MediaWiki (which is currently 1.18.1). In addition to that, the project provides a web-based viewer to see diffs between these weekly code releases. Upon a code release, the older source code dump is deleted from src.wikihow.com and there's no way to see what changed between two releases, if you don't have both source code dumps and GNU diff or some other diffing utility available. We hope that in time, when the project is complete, wikiHow.com can switch to this codebase and abandon the one based on MediaWiki 1.12.
Right now we're managing the official code releases like this: *each Monday, when a release has been done, a new folder in tags directory is created (http://code.google.com/p/wikihow/source/detail?r=30), *the diff generated by "diff -ur older_release newest_release" is applied against the newly created tag ( http://code.google.com/p/wikihow/source/detail?r=31), *and eventually these changes are applied against trunk as needed ( http://code.google.com/p/wikihow/source/detail?r=39); right now this is very easy since most extensions haven't been cleaned up, but in time this will take more developer time, as the changes need to reviewed more carefully
We're inviting anyone interested in MediaWiki development, wikiHow or both to join the project! There's /a lot/ of things to do and right now there are only two people working on it (me and Lewis); it's going to take a while for us to fix everything and still something might slip by us, so we're hoping to have more eyeballs on the code.
The code repository is a SVN repo at http://wikihow.googlecode.com/svn/trunk/ and we're very liberal with commit access, just ask one of us for commit rights and you'll get 'em right away! (For those wondering why SVN and why Google Code, the answer is pretty simple: both of us are more familiar with SVN rather than any distributed version control system, and given that the Wikimedia Foundation is phasing out SVN in favour of git, we didn't want to use it to host this project.)
If you have any questions, please don't hesitate to ask!
On behalf of the wikiHow codebase cleanup project, Jack Phoenix & Lewis Cawte _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Sumana: we can revisit that once the project's complete. ;-)
Daniel: It's no secret that I'm not a big fan of git (let alone gerrit, which won't even _load_ when using IE9's default rendering mode), but you almost convinced me there. For now, I think we'll stick with SVN because it's what I and Lewis are familiar with; of course, I hope that the project matures so that one day I won't be needed at all.
Platonides: I don't deny what you're saying at all...but in all honesty I pretty much lost the passion for contributing code after the -- rather sudden -- transition to git, because it overcomplicated what was once a simple and working workflow. Yes, it's horribly selfish for me to say this, but then again, most MediaWiki developers are familiar with SVN and I want to be able to contribute, too.
I find the addition of MediaWiki 1.18.1 in r5 quite confusing
What's confusing about it? The official wikiHow codebase (as in the codebase powering wikihow.com) is based on 1.12 and we want to ditch it altogether and find better approaches than over 9000 core hacks, which is why we chose to use the most recent stable edition of MediaWiki, which is 1.18.1, as the basis for the new and improved wH codebase.
Currently, diff -ur wikihow-src wikihow-read-only/wikiHow/ contains lots
of unrelated changes.
How is one expected to make sense of it?
Are you trying to diff the official version(s) against ours? If so, that probably explains why you're seeing a lot of unrelated stuff. We're keeping official releases around so that people have an interface for viewing changes between (any) given weekly code releases. The changes we've made to wikiHow extensions, let alone the changes we _plan_ to make, are so big that diffs between the official releases and our versions are basically useless. Greg: Recruiting more people, participating in code review, testing code, and of course, writing code are just some of the ways to help out! I've tried to get some non-technical people interested (with very little success so far...) as there are plenty of tasks for newbies (such as updating indentation to use tabs instead of spaces and whatnot) to do, let alone for experienced programmers, such as yourself. Ping me or Lewis somewhere if you want commit access -- we'd be thrilled to have you onboard!
Having more info about the project on MW.org, especially in the context of WikiProject Extensions, would be splendid -- as people are likelier to read such more official (so to say) pages than my user subpages. ;-)
Thanks and regards, -- Jack Phoenix MediaWiki developer
Replies inline.
On Wed, Apr 4, 2012 at 11:33 PM, Jack Phoenix jack@countervandalism.netwrote:
To those who don't know me yet, hi! I'm Jack Phoenix, and I've been a MediaWiki developer since May 2008.
Hi Jack, nice to hear from you again :)
Yep... the site's running MediaWiki 1.12 (!), which is four years old. In software development, four years is an eternity.
"Just" 4 years? I thought it was older but you're right. 1.12 is from 2008 and it does seem an eternity ago.
Fortunately wikiHow publishes their source code at http://src.wikihow.comand a new dump will be generated each Monday.
For those wondering, the url is http://src.wikihow.com (without "and") and I'd like to add that this awesome service has been up for quite a while (it is not new), it's been up at least for a few years now, and doing great! However they are static (.zip) dumps of the wikihow source code. Although wikiHow does use SVN internally, the actual repo is not public.
(User:Lcawte) created a Google Code repository for the project. You can see the project page at http://code.google.com/p/wikihow/
Aside from the importing of the weekly dumps of the real source code, I'm not sure what is going on there or why there is a copy of MediaWiki 1.18 in there. If the goal is to basically re-construct wikiHow on a MediaWiki 1.18 base instead of 1.12 (without core hacks this time), then why the copy of MediaWiki? Just an idea but maybe only keep the following in the "new" repository, with instructions for users that are helping out to install MediaWiki core, and then checkout the repo and symlink and/or include them from the wikihow repo:
* ./extensions/* [all awesome wikihow-made extensions] * ./extensions/WikiHow/WikiHow.php [custom settings of wikihow sites] * ./skins/WikiHow
Maybe even on top of MediaWiki core "master" instead of the latest release so that if you need any additional hooks in MediaWiki core (which likely will be the case on several occasions), you (or someone else) can propose them and after they're reviewed/merged into core you can use them right away.
-- Krinkle
PS: Regarding git, if you're afraid of Gerrit but have no problem with using a third party for hosting (Google Code in this case), you could also try GitHub which tends to be a very friendly introduction to Git for most people I know. Especially the concept of "pull request" is very well thought trough there. And as a bonus, there is no dependency on GitHub since, contrary to SVN, everybody has the entire repository so you can work offline and maybe even one day host it elsewhere.
wikitech-l@lists.wikimedia.org