O'Reilly offering a sale on Git books
Oct. 6th, 2012 12:12 amBrowse the list of eligible titles (or the wider O'Reilly catalog) and if you'd like a copy of the book or the videos, let me know: we'll buy you that plus another title. (Maybe a book on Perl, or Javascript, or jQuery, or UI design, or or or...) I'm trying to figure out a way with O'Reilly that will make it easier for us to pay for ebooks that are then delivered to your O'Reilly account, but in the meantime, we can either do it where you buy it through your O'Reilly account so you can have future access to it and we'll write you a reimbursement check, or I buy it through my O'Reilly account with the DW card and send the file to you. Or you can get the hard copy, of course, if you don't want an ebook version; it's up to you.
Either way: let us buy you stuff! People have been really hesitant to take us up on this, but I promise you, we really want to, and if you meet the criteria (5 patches in last 12 months, at least one in the past two months), we mean you even if you think you haven't done 'enough'.
Reminder: We've moved over to Git
Sep. 27th, 2012 04:48 pmWe just had our 101st pull request to the dw-free repository over on Github! Two of those were test pulls, but the others are all legit ;-)
The dw-nonfree repository, on the other hand, has only had 14 pull requests. Since we don't really want much here other than branding stuff, this is as it should be.
We'd like you to use your Dreamwidth username / email when committing. This makes it a lot easier for us to track who did what in the future. It also helps us match the author of the commit with who you are, and lets us confirm that we've received your CLA.
Edit your config (~/.gitconfig) and add this section:
[user]
name = USERNAME
email = USERNAME@dreamwidth.org
Then add your USERNAME@dreamwidth.org email to your Github account, so that the commits on Github will link to your identity on Github.
Please don't forget to tweak this setting on both your local computer and your Dreamhack if you do commits on both. Thank you!
If you're working on other projects, you can also just edit your author identity in just the Dreamwidth repositories (Thanks
Important: Update to "dwu"
Sep. 23rd, 2012 02:14 pmhttp://wiki.dwscoalition.org/wiki/index.php/Dev_Maintenance#dwu_-_Updating_the_repos
Please use the updated script.
If you have gotten yourself into a broken state, let me know and I can walk you through fixing it. There is some force pushing involved, sadly.
Release notes
Sep. 22nd, 2012 09:49 pmWe did our first release from git tonight. It went well, I will chalk that up to all of the hard work from folks like
fu and
exor674 (and others!) to make sure that everything was in place.
fu put together a nice "things we have to do" in
dw_staff, so that was very helpful.
Anyway, I wanted to document some things that are important to know for the period between releases. This probably won't apply to most of you, but just in case...
So, we are following the document about a successful git branching model. This is what git flow is based on and it's a really efficient model, so we're using it for doing our features and in this case, our release.
The release process was, in essence:
- Create a
release-1.11.0branch - Make final tweaks in this branch to get things ready for release
- Push this branch live
- Merge this branch back in to
developandmaster - Add a release tag with the version number on
master
This leaves our repository in this state:
developis still open, you can keep committing things to it (no code freeze, yay!)masterhas stable tags, so you can always roll back to tags here (easy production rolls!)release-1.11.0is open for doing fixes on the live release (easy fixing production, yay!)
The thing that is important to know, if you are going to be committing fixes that you intend to go live, is that you need to make your changes on the release-x.xx.x branch -- not on develop. Any code committed to develop will, because of its nature, have to wait until the next code push -- weeks away.
If you have stuff you need to get live sooner (fixes to things broken in the last code push or stability/important fixes), you need to adjust your workflow slightly. It's pretty easy though, and goes something like this:
git checkout -b release-1.11.0 dreamwidth/release-1.11.0
Now make your fixes, as per normal, and submit a pull request. As long as your current branch is the release branch, then you will be able to submit a pull request on the appropriate branch, and we can merge it in and push it out to the site quite easily.
As of several weeks ago, all commits to the Dreamwidth codebases have gone to our new repositories on Github:
There are a few relevant wiki documents that have been fully revised to account for this change:
- Moving your Dreamwidth installation to use Github -- these instructions will tell you how to move your current Dreamhack/dev environment over to a Github based installation
- Dev Maintenance -- this document tells you how to keep your Github Dreamwidth based installation (and your Dreamwidth forks) updated with the code from the Dreamwidth repositories
- Draft: Github development process -- This is the document in the least refined state, so keep in mind that it is in stronger need of suggestions and revisions. It goes through the very basics of Git workflow. This and Dev Maintenance might eventually end up merged into one document.
We are working on getting the rest of the wiki development documentation updated (see the dw_wiki post). Feel free to comment to this post with your questions/concerns about the move!
If you want to be part of the vanguard, take a gander at the Moving your Dreamwidth installation to use Github instructions. People following them are encouraged to log into the #dreamwidth-dev channel on IRC for real time assistance.
Git for Toddlers
Jul. 20th, 2012 04:52 pmGit for Ages Four and Up from OSDC!
This post is also a bit vague on some process bits that we haven't decided yet, so when we flip the switch and move to using Github for development wholesale, some of these bits will look a little different. I just wanted to demystify the process a little, since I know that I was feeling a little trepidatious about this (AUUUGH, CHANGE IS SCARY) until I got into the guts of it and started playing around and realized how much nicer this process is going to be!
So, this is a log of the playing around I did tonight. :)
( Watch me flail! Watch me figure it out! )
And thus ends my first forays into git! There's a bunch of other stuff we'll need to go over, such as what to do if somebody else has made changes to the master DW branch while you were working on your patch, but that's a little bit hard to explain with words (usually it requires diagrams, although one of the talks I attended today had
Introduction to git talk; Pro Git book
Jun. 14th, 2012 06:37 pmSo, if you have a spare two hours and would like to learn about git, here you go:
Introduction to Git - video
Introduction to Git - slides
There's also a book that many people have highly recommended, called Pro Git by Scott Chacon. It's available free of charge in many formats, licensed as CC-BY-SA-NC.
I definitely felt much more comfortable with the idea of what git is, how it works, and why it does what it does when I finished the session, so if you're feeling anxious about the migration to github (which is a service layered on top of git, the underlying software), definitely check it out.
I've been reading up on Git, trying to figure out how to document a process that works for everyone, and it just isn't working. All I know is how I want to do things, and I can only guess what would work best for everyone. So instead of my sitting here writing down guidelines, which might get set in stone even if they don't really work for you, let's actually talk about it, and then document the hell out of what we decide on.
Big bold critical disclaimer: If you are uncomfortable with really vague instructions and a process that might break at any point, just hang back and wait! This is the "We need people to try doing this so we know where the major stress points are" step.
Other disclaimer: We'll document what seems a reasonable way to do things to make it easier for anyone coming in, but that doesn't mean you need to stick to the script strictly. You can manage your code on your end however you'd like -- so long as you send that pull request!
Useful links:
-
github:help -- check out the beginner and intermediate sections, as well as further git resources. I don't think we'll need anything from the other sections, until we run into specific issues.
-
Git flow -- abstraction on top of Git to make the most common workflow more convenient
Workflow overview
May. 11th, 2012 09:17 amAfter a bunch of discussion, we've decided to move from Mercurial to Git. Mercurial and Git are different version control systems. If you're not sure what that is, they basically manage code and the history of how the code has changed.
One big reason for using Git is Github. Github is a service that hosts code, and provides web-based tools to manage commits and reviews. This will make it a lot easier to work collaboratively, and simplify the process of submitting patches. The changeover may be a bit of a pain, but we will work to make it as easy as possible!
We've also decided to simplify our development environment. Instead of having the $LJHOME directory contain a bunch of repositories that need to be synced and copied around -- no one has ever understood this setup without a lot of explaining and re-explaining -- we will just have one set of directories. This means we can get rid of cvsreport.pl, which is the script that does the syncing between the $LJHOME directory and the repositories within it.
Nothing will change yet, but I thought (and
denise agreed) it might be a good idea to post a very basic overview of how the process will be changing.
I'm still banging on the workflow; right now I'm just working with a couple of the more experienced devs so we can get a general idea of what needs to be done. We'll invite more people for a test run once to iron out the more fiddly bits once we have a list of steps to try.I expect we'll have to adjust again after people have tried it out for real.
Don't worry! Nothing is going to happen without a lot more in the way of information and tutorials and explanations, but here is a very high-level overview.
( diagrams and details within )(no subject)
May. 7th, 2012 07:19 pmAssumptions:
- pulling from the dev branch back to stable is roughly equivalent between Git and Mercurial, or is easy enough to work around on the committer side, so this is not shown here.
- we want to move away from asking for patches, to pull requests which include more context
- we need to concentrate on the branching workflow. We will encourage branching even for small bugfixes or feature development, to make it easy for devs to pick up a different bug once they have submitted a pull request for what they are currently working on.
This is particularly important because we get devs that happily submit their first patch, and then get frustrated trying to clean up their repo when working on their second. This may also be useful when we discover that tweaks need to be done on review. Instead of doing:
- clean up old/current work
- grab patch from zilla or a saved file and reapply
- do tweaks
- generate a new patch containing the original patch + changes requested
- clean up old/current work
- save current work on current branch
- switch to previous branch
- do tweaks
- submit pull request again, with the tweaks as a separate commit
- we're trying to analyze the core features to determine whether they can work the way we need them to, so we've left github and bitbucket out of the equation (except as ways to make the code public)
We might do:
Thus the emphasis on branching in this run through.
( mercurial workflow using bookmarks )
( Git workflow using git branches )
Summary of what we found:
- When using Mercurial bookmarks, we ran into an odd(?) issue where we lost track of where we were branching from (what would, in git, be the branch "master"). I'm assuming this is a bit of a workflow thing, and we can work around by creating the new bookmark upstream or master, so we could get back to the point in our repo before we started making any changes
- Same issue, but this time from the committer side? or, since we've merged at this point, and won't need to eep track of bookmarks, perhaps less of an issue?
- What am I doing when I pull then remove the bookmark? I ... managed to merge, right? That's what I did?
- Commit messages are now an issue. We standardized around a commit format containing the bug id, commit message, and patch author and enforced it by having the committer supply the commit message.
Now, we'll either need to enforce a strict policy on commit messages before accepting the commit, or have the committer amend the commit messages beforehand. Other options are to make the changelog hook smarter (detect things of the form "Bug #"?), use a "changelog_bot" for all commits. We might also want to look into having the committer sign off the commit.
*Finally* this might become a moot point, depending on what's available to us from github/bitbucket that will let us put stuff into the changelog community. - need to determine what happens if you try to amend someone's commit in Mercurial by running it through MQ in order to fit guidelines above *points up*. At a guess, we'd end up with a dangling commit that would need to be stripped out of the submitting dev's repo, because the changeset hashes would no longer match
- git index! oh git index. You might be a pain. The question is, are you a pain that can be hidden away?
- it's much easier grokking branches, IMO, than bookmarks, because there's never any risk of forgetting where "master" is.
- git lets me do a merge commit, in order make sure that the bug number is mentioned in a related commit. *Might* be a bit of a moot point if we end up doing a rebase instead of a merge
Git, Mercurial, github, bitbucket
Apr. 29th, 2012 02:40 pmI was talking to
I'd actually say there are three questions:
- Are there benefits to git over mercurial, and if so, are those benefits enough to outweigh the cost of switching to a new source control system?
- Would we like to move our source control management to a public, shared, FLOSS-friendly environment? If so, why? Do we think it would be more friendly to our current developers, do we think it would make it easier to bring in new developers, some combination of the two, or something else?
- If we want to move to a shared environment, do we feel that there is a strong reason that it should be Github? What are those reasons, if so? If we think git is worse than mercurial, but we do think there's a benefit to moving to Github, which reason should prevail?
Actually, we should probably add a fourth question, which is "would any of our needs be better served by using mercurial more in the fashion for which it was intended?"
Keep in mind when I write these questions that I use github for other projects and like it,and I have never used mercurial intensely enough to have strong feelings about it either way. Personally I fell in love with Perforce at an early date and find all other VCS systems to be it pale yet free imitations. But I do think that if we make a switch like this, these are the questions we need to answer.
April irc dev meeting log
Apr. 29th, 2012 03:30 amHere's the log, lightly redacted to remove discussion of personal and offtopic stuff (and to remove irc administrivia like joins and parts). We'll do this again in a few weeks!
( Meeting log )
jQuerify journals status
Mar. 21st, 2012 03:07 pmFor development, this means patches for old journal Javascript will no longer be accepted. If you see a bug open for old journal JS, it can be closed. (Don't do that if it's something that involves doing JS for the new JQuery version, though.)
( Extra info on: Why JQuery-izing? )
Developers in the Bay Area and Silicon Valley, you can create cool hacks with and on Wikipedia. Our first San Francisco hackathon is happening Jan. 20-22, and we'll be there teaching you about MediaWiki (our software), about our API and about our framework for JavaScript feature development. Learn to reuse Wikipedia content in your own apps, create new functionality for every Wikipedia user around the world, or just tailor your own experience.
We're going to create a registration form really soon but I wanted to tell you about this so you can put it on your calendar.
I figure you folks have better ideas for Wikipedia integration than I do (I didn't see any in Bugzilla but maybe they aren't there yet?). I know there's a WordPress plugin, PhotoCommons, that makes it easy for bloggers to browse Wikimedia Commons for freely licensed images to dress up their posts. Maybe replicating that functionality in Dreamwidth would be cool? I've added it to the Suggestions queue.
Of course you don't need to come to the event to work on MediaWiki or on integration with Wikimedia sites -- our site has an intro tutorial and we are on IRC at #mediawiki on FreeNode and so on. But if you came to the event, that would be cool too. Open data!
As you can imagine (Bob) this isn't very fun. Inevitably, we end up forgetting edge cases, which we only turn up after a user has run into the issue and reported it. (We probably have three or four outstanding bugs that have to do with how we haven't called the init function on this page, or after doing that action, and well it's a pain.)
So a thought: I propose we start using jQuery's .live() function in conjunction with a custom event. ( cut for examples and discussion of efficiency )
ETA:
It looks like .delegate() is a better alternative to .live() (thanks