http://wiki.dreamwidth.net/wiki/api.php?action=feedcontributions&user=Sophira&feedformat=atomDreamwidth Notes - User contributions [en]2024-03-28T09:47:59ZUser contributionsMediaWiki 1.23.0//wiki.dreamwidth.net/wiki/index.php/IRCIRC2021-06-04T12:56:33Z<p>Sophira: Updating IRC page to show details for Libera</p>
<hr />
<div>For up to date information on Dreamwidth project (development, volunteer, staff, and operations) chat, see [[Chat]]. The rest of the information on this page may be out of date, especially since we're using Discord at the moment. <br />
<br />
IRC stands for [https://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Libera IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Libera/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [[:Category:Development|development information]], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>irc.libera.chat</code>; [https://libera.chat/guides/connect more info on connecting to Libera]<br />
* The main channel is: <code>[irc://irc.libera.chat/dreamwidth #dreamwidth]</code><br />
* The developer mentoring channel is: <code>[irc://irc.libera.chat/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Libera does offer webchat:<br />
<br />
* <code>[https://web.libera.chat/#dreamwidth #dreamwidth]</code> <br />
* <code>[https://web.libera.chat/#dreamwidth-dev #dreamwidth-dev]</code><br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (irc.libera.chat) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Libera is using. (You can change it easily after you connect.) <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Libera-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify [USERNAME] [PASSWORD]<br />
/msg nickserv release [USERNAME]<br />
/nick [USERNAME]<br />
<br />
(Do not actually use the brackets, just put in your username or password.)<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@zorkian and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing [https://en.wikipedia.org/wiki/The_Game_(mind_game) The Game]<br />
* being owed a keyboard or monitor<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Almost anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>karzilla</dwstaff> (kareila), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (zorkian) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
*** a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* It's appreciated when people describe links they share, particularly: <br />
** if you think it's going to be NSFW (the definition of "Not Safe For Work" does vary from person to person)<br />
** blatant sexual content, nudity, profanity or other words that might trip a workplace nanny-filter<br />
** auto-playing audio or video<br />
** large pages<br />
** images that aren't already captioned, audio and video that aren't already transcribed<br />
** flashing, blinking, or animated images<br />
** if using a short-URL service (tinyurl, bit.ly, and the like)<br />
** known timesinks like TVTropes<br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest, or as part of a quote. <br />
* The #dreamwidth channels include people of all technical levels, from very experienced developers to complete neophytes, from advanced power users to complete neophytes, and sometimes the odd person who may not use Dreamwidth at all. In some cases, power users who have been around a while may know more about Dreamwidth's architecture than senior developers who have no experience with the Dreamwidth codebase. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
** Check your assumptions about the other person's technical level. Someone from a demographic group where software developers are rare may be that 1 in 5,000 (or however many); someone who has a generally solid understanding of the technical world may happen to have a gap in that specific spot. [http://xkcd.com/1053/ Even if "everybody knows it".] <br />
** Asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is usually appropriate. <br />
** Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. <br />
** When guiding someone through a process that may be unfamiliar to them, try to check in with them regularly to make sure that they're following along ok/you're still on the same page/if they might want a more advanced explanation. <br />
** Don't be rude or patronizing when explaining something. There's always potential for miscommunication, and technical explanations between mismatched skill levels can be especially delicate. <br />
***If you don't feel you can refrain from being rude and patronizing on purpose, you should bow out of the conversation. <br />
*** Statements like "RTFM" (Read the Fucking Manual) and sites like lmgtfy.com and its ilk are used condescendingly more often than not; try another phrasing or method. <br />
*** A "sorry, I phrased that badly" often helps when you didn't mean to be rude but it came across that way anyway. <br />
* Take care when expressing physical interaction. #dreamwidth is not a roleplay channel, and actions affecting other people can and will be interpreted similar to actual physical interaction. <br />
** Try "offers hugs" instead of "hugs", as that gives the other person the chance to accept or decline<br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
* Private messages: site staff (and quite a few others) are open to an initial query being sent without asking in channel first. Therefore, there is no channel rule saying you must ask before sending a PM. However: <br />
** Is it something for that person specifically, or is it something that other staff members/volunteers might be able to answer? (If so, you might want to ask in channel if anyone is around who has time to answer questions about that topic.) <br />
** Many people will idle in channel, so an immediate response is not guaranteed. <br />
** If a specific person tells you of their preferences for PMs, that overrides general rules. <br />
* Try to use the [[Escalation]] procedures if something goes wrong. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== Getting Help === <br />
If something goes wrong in IRC, get help by: <br />
<br />
* Asking for help in channel <br />
* Asking for help in an adjacent channel (hopefully with staff or delegates present) where the problem isn't currently happening<br />
* Sending a private message to someone with "staff" or "delegate" in their hostmask (note: everyone has to sleep sometime, and sometimes clients lose private messages; if you've had no response within a reasonable amount of time, try someone else). "Can we talk", etc., is rarely a useful initial message; "There's a problem with ___" or "The current discussion about ____ is disturbing and I feel it's off-topic" is much better. <br />
* If no #dreamwidth staff/delegates are around and there's an urgent problem, [https://libera.chat/about available Libera staff can be listed using the "/stats p" command].<br />
<br />
For Dreamwidth technical support: <br />
<br />
* Questions in #dreamwidth ("Can anybody help me figure out this setting?") are okay<br />
* The official Dreamwidth technical support area is [http://www.dreamwidth.org/support/ www.dreamwidth.org/support], and there is a [http://www.dreamwidth.org/support/faqbrowse?faqid=242 guide to using Dreamwidth technical support] if you're curious about the process<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, [[IRC/welcoming|welcoming]] place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [https://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or [https://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour (or whenever they notice it's been over 1 hour since the last announcement) is encouraged to announce a channel [[stretch break]]. These announcements sometimes [http://qdb.dreamwidth.net/dw/683 give rise to assorted silliness].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, languages and linguistics, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and theoretically zorkian. DWSpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
DWSpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> or <code>DWSpamBot: spam</code> makes DWSpamBot list the current contents of the queue. It sometimes pings out and fails to return. When this happens, a request to exor674 to bite spambot (after a reasonable time, like 20 minutes, has lapsed without it returning) will let them know it needs action. (Note that to work, that request needs to include the name "exor674"; something along the lines of <code>exor674, please bite spambot?</code> is suggested.)<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-kvetch ===<br />
Open access but officially unofficial. <br />
<br />
This channel replaces #dreamwidth-bitch, and combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics and religion, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Administrated by <dwstaff>karzilla</dwstaff> and monitored by kaberett. <br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Libera's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and zorkian. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy was a bot that notified the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
Bugsy is currently out to pasture while we get to grips with [[Github Issues]].<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-kvetch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dreamwidth.net/wiki/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with [[#Public Infobot Commands|one of the commands above]]. The symbol '''=''' can be used in place of '''is'''. <br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
* qdb<br />
* jargon<br />
* welcome<br />
* pep talk<br />
* [[IRC/Teleporter|teleporter]]<br />
* escalation<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose, or sometimes give you a more philosophical answer! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally'''<br />
<br />
will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
; '''Bit, shuffle: (comma-separated list with the last item optionally preceded by and)'''<br />
<br />
will make Bit return the list with the items randomly permuted (rearranged). The colon after "shuffle" is optional.<br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-kvetch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <delay> <thing>'''<br />
* '''Remind me at &lt;time> <zone> <thing>'''<br />
* '''Remind me again in <delay>'''<br />
* '''Remind me again at &lt;time> <zone>'''<br />
<br />
Reminderbot only understands numbers written as Arabic numerals, not as words. Reminderbot will understand 5, but not five.<br />
<br />
If used in #dreamwidth-kvetch, the shortcut "again" stands for the last thing either requested or reminded in the channel, even if by someone else. <br />
<br />
Shortcuts:<br />
<br />
Instead of '''in <delay>''' or '''at &lt;time> <zone>''', you can use:<br />
<br />
* '''soon''': after a random interval between 5 minutes and 2 hours.<br />
* '''later''': after a random interval between 1 and 24 hours.<br />
* '''much later''' (or '''muchlater'''): after a random interval between 12 hours and 7 days.<br />
<br />
Examples: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
* '''Remind me again at 5:30pm PDT'''<br />
* '''Remind me later Not everyone is an asshole.'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-ParseDate-2015.103/lib/Time/ParseDate.pm#DATE_FORMATS_RECOGNIZED - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown &lt;time&gt; &lt;timezone&gt;'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last public entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth and #dreamwidth-kvetch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
<br />
; '''feed that back to hell'''<br />
; /me '''feeds that back to hell'''<br />
: This feeds the last item hell spat back to hell, as one may expect. Instead of "that", you may also use "this", "these", "those", "it", and "them". The "feed" synonyms listed above also work for that variant.<br />
<br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-kvetch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
== Delegate IRC Commands ==<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: Development]]<br />
[[Category: Support]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/MemcacheMemcache2018-01-18T20:46:31Z<p>Sophira: Restarting the web server is important, I believe!</p>
<hr />
<div>Memcache is a system used by Dreamwidth to lessen the amount of database access needed, by temporarily storing frequently-accessed information in memory for quick access. It was developed by Brad Fitzpatrick and is used in many high-profile websites, including Slashdot, Wikipedia, and, of course, LiveJournal (for which it was developed). Dreamwidth Studios also uses this system.<br />
<br />
== Using Memcache on a Dreamhack ==<br />
<br />
To use memcache on a [[Dreamhacks|Dreamhack]], do the following:<br />
<br />
* Contact the owner of the Dreamhack box you're using for a port to use with the <code>memcached</code> program; this will either be Sophie or Afuna.<br />
* Use <code>screen</code> to run this command:<br />
<source lang="bash">memcached -m 8 -l 127.0.0.1 -p <port></source><br />
:...replacing ''&lt;port&gt;'' with the port number assigned to you in the previous step. If you need help with <code>screen</code>, feel free to contact Sophie. (A wiki page on this should be available in the future.)<br />
* Edit your <code>etc/config-local.pl</code> file and look for the line:<br />
<source lang="perl">#@MEMCACHE_SERVERS = ('hostname:port');</source><br />
:Change this to:<br />
<source lang="perl">@MEMCACHE_SERVERS = ('127.0.0.1:<port>');</source><br />
:again replacing ''&lt;port&gt;'' with the appropriate port number. (Make sure also that the line is uncommented by removing the # at the front.)<br />
* If your Apache server is currently running, restart it:<br />
<source lang="bash">stop-apache<br />
start-apache</source><br />
<br />
Your Dreamhack should now be set up for memcache.<br />
<br />
== Using Memcache on your own setup ==<br />
<br />
First, install the daemon:<br />
<br />
sudo apt-get install memcached<br />
<br />
You can run it in kind of a debug mode like this:<br />
<br />
memcached -vv -m 25 -l 127.0.0.1 -p 8080 <br />
<br />
Or in the background like this:<br />
<br />
memcached -d -m 25 -l 127.0.0.1 -p 8080 <br />
<br />
For more help on the options,<br />
<br />
memcached -h<br />
<br />
You'll also have to set up your installation to use it:<br />
<br />
vi etc/config-local.pl<br />
<br />
And edit the appropriate information:<br />
<br />
# MemCache information, if you have MemCache servers running<br />
@MEMCACHE_SERVERS = ('127.0.0.1:8080');<br />
$MEMCACHE_COMPRESS_THRESHOLD = 1_000; # bytes<br />
<br />
You will need to restart your web server in order for these changes to take effect.<br />
<br />
Note that the memcache server doesn't have to be on your web server; you can set it up and configure it with the IP of a different server.<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Git_How_ToGit How To2018-01-08T18:22:30Z<p>Sophira: All Dreamhacks have tab completion set up now!</p>
<hr />
<div>= Help =<br />
<br />
== How to get help with git commands ==<br />
<br />
* To get a list of most used commands:<br />
<br />
<syntaxhighlight lang="bash">git help</syntaxhighlight><br />
<br />
* To open the Git manual:<br />
<br />
<syntaxhighlight lang="bash">man git</syntaxhighlight><br />
<br />
* To see a summary of options for a specific command:<br />
<br />
<syntaxhighlight lang="bash">git COMMAND -h</syntaxhighlight><br />
<br />
* To open the manual page for a specific command:<br />
<br />
<syntaxhighlight lang="bash">git help COMMAND</syntaxhighlight> or<br />
<br />
<syntaxhighlight lang="bash">git COMMAND --help</syntaxhighlight> or<br />
<br />
<syntaxhighlight lang="bash">man git-COMMAND</syntaxhighlight><br />
<br />
* To exit code views: hit the 'q' key.<br />
<br />
<br />
== How to use auto-completion ==<br />
<br />
Hit the Tab key as you type to get suggestions. This works with commands and options.<br />
<br />
: N.B. Dreamhacks have this set up automatically: see the [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Pro Git book] on how to set it up otherwise.<br />
<br />
<br />
= The Basics =<br />
<br />
* To create a branch:<br />
<br />
<syntaxhighlight lang="bash">git branch BRANCH_NAME</syntaxhighlight><br />
<br />
* To switch to a branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME</syntaxhighlight><br />
<br />
* To switch to the last branch you were on:<br />
<br />
<syntaxhighlight lang="bash">git checkout -</syntaxhighlight><br />
<br />
* To create and switch to a branch at once:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME</syntaxhighlight><br />
<br />
* To create and switch to a branch stemming from another branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME OTHER_BRANCH</syntaxhighlight><br />
<br />
* To see unstaged code changes:<br />
<br />
<syntaxhighlight lang="bash">git diff</syntaxhighlight><br />
<br />
* To move changes to the staging area:<br />
<br />
<syntaxhighlight lang="bash">git add</syntaxhighlight><br />
<br />
* To commit changes:<br />
<br />
<syntaxhighlight lang="bash">git commit</syntaxhighlight><br />
<br />
* To add and commit changes at once:<br />
<br />
<syntaxhighlight lang="bash">git commit -a</syntaxhighlight><br />
<br />
* To push changes:<br />
<br />
<syntaxhighlight lang="bash">git push origin BRANCH_NAME</syntaxhighlight><br />
<br />
= Upstream Management =<br />
<br />
== How to update to the latest code == <br />
<br />
* To grab the latest changes to Dreamwidth's develop branch:<br />
<br />
<syntaxhighlight lang="bash">git fetch dreamwidth<br />
git checkout develop && git pull --ff-only dreamwidth develop:develop</syntaxhighlight><br />
<br />
* To push these changes to your fork on Github:<br />
<br />
<syntaxhighlight lang="bash">git push origin develop</syntaxhighlight><br />
<br />
Note: if you have uncommitted changes when you try to update, you'll get an error message similar to this:<br />
<br />
mw@memewidth:~/dw/src/jbackup$ git pull dreamwidth develop:develop<br />
...<br />
From https://github.com/dreamwidth/dw-free<br />
53294c1..19b8e73 develop -> develop<br />
error: Your local changes to 'src/jbackup/jbackup.pl' would be overwritten by merge. Aborting.<br />
Please, commit your changes or stash them before you can merge.<br />
<br />
You'll want to [[#How to stash your changes|stash your changes]] first, and then try to update again.<br />
<br />
= Staging Area Management =<br />
<br />
== How to see staged changes ==<br />
<br />
* To see staged code changes:<br />
<br />
<syntaxhighlight lang="bash">git diff --cached</syntaxhighlight> or<br />
<br />
<syntaxhighlight lang="bash">git diff --staged</syntaxhighlight><br />
<br />
* To see staged file changes:<br />
<br />
<syntaxhighlight lang="bash">git status -s</syntaxhighlight><br />
<br />
<br />
== How to stash your changes ==<br />
<br />
<strong>Note:</strong> first make sure you're on the right branch using <code>checkout</code>.<br />
<br />
* To put them away:<br />
<br />
<syntaxhighlight lang="bash">git stash</syntaxhighlight><br />
<br />
* To bring them back:<br />
<br />
<syntaxhighlight lang="bash">git stash pop</syntaxhighlight><br />
<br />
* To see the latest thing you've stashed:<br />
<br />
<syntaxhighlight lang="bash">git stash show</syntaxhighlight><br />
<br />
<br />
== How to undo staged changes ==<br />
<br />
* To unstage a file:<br />
<br />
<syntaxhighlight lang="bash">git reset HEAD FILE_PATH</syntaxhighlight><br />
<br />
<strong>Important:</strong> the file is still modified. It's just no longer part of your current staging area.<br />
<br />
* To get rid of the changes after unstaging:<br />
<br />
<syntaxhighlight lang="bash">git checkout -- FILE_PATH</syntaxhighlight><br />
<br />
<br />
== How to move and delete files ==<br />
<br />
* To move files:<br />
<br />
<syntaxhighlight lang="bash">git mv OLD_PATH NEW_PATH</syntaxhighlight><br />
<br />
* To delete files:<br />
<br />
<syntaxhighlight lang="bash">git rm FILE_PATH</syntaxhighlight><br />
<br />
<br />
= Commit Management =<br />
<br />
== How to see committed changes ==<br />
<br />
* To see latest commits on local branches:<br />
<br />
<syntaxhighlight lang="bash">git branch -v</syntaxhighlight><br />
<br />
* To see committed code changes (latest commit only):<br />
<br />
<syntaxhighlight lang="bash">git show</syntaxhighlight><br />
<br />
* To see past commits:<br />
<br />
<syntaxhighlight lang="bash">git log</syntaxhighlight><br />
<br />
* To see past commits one at a time:<br />
<br />
<syntaxhighlight lang="bash">git log -1</syntaxhighlight><br />
<br />
and so on.<br />
<br />
* To see commits for a certain file:<br />
<br />
<syntaxhighlight lang="bash">git whatchanged FILE</syntaxhighlight><br />
<br />
* To see what you've done locally in the last 30 days:<br />
<br />
<syntaxhighlight lang="bash">git reflog</syntaxhighlight><br />
<br />
<br />
== How to write a good commit message ==<br />
<br />
Git commit messages have a format that's rather peculiar to Git. We have a further convention of including the issue in the commit message as "Fixes #XXX" on its own line (please do include the #): this means the git-bot can close the source issue when the fix is merged. So, ideally your commit messages will look something like this: <br />
<pre><br />
short summary; total 50 chars or less<br />
<br />
After a blank line, give a long-form description of the changes.<br />
You can write a few sentences, several paragraphs, or an essay<br />
complete with theorems, premises, and supporting references --<br />
whatever is needed to clearly document the change.<br />
<br />
* bullet points also work<br />
<br />
* describe what the code does<br />
<br />
* if there's a tricky edge case or something weird about the code that's not immediately obvious,<br />
go into your reasoning<br />
<br />
* try to start each bullet point with a verb<br />
<br />
* use the present form of the verb: "do foo" not "does foo" or "did foo"<br />
<br />
* context is important. Remember that when this is viewed with git log, it will be at least<br />
one page load away from the issue (and all comments on the issue) and at least two page loads<br />
away from the pull request. Provide as much context as is necessary<br />
<br />
* comments like "I tested x, y, z" are good but more appropriate for the pull request<br />
(unless it's a particularly tricky edge case)<br />
<br />
Fixes #XXX.<br />
</pre><br />
<br />
The first line is used as a summary by tools like <code>git log --oneline</code>; if it is too long, the output of these tools will display oddly. <br />
<br />
[http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html Additional suggestions on writing commit messages].<br />
<br />
If you are making a commit that only needs a short explanation, you can use the -m option:<br />
<br />
git commit -m "This describes the change that I just made. Fixes #963"<br />
<br />
== How to amend your last commit ==<br />
<br />
<strong>Important:</strong> you can do this as long as nothing has been pushed.<br />
<br />
* To update a commit with some new changes:<br />
<br />
<syntaxhighlight lang="bash">git commit --amend</syntaxhighlight><br />
<br />
* To do so and reuse your last commit message:<br />
<br />
<syntaxhighlight lang="bash">git commit --amend -C HEAD</syntaxhighlight><br />
<br />
<br />
== How to undo committed changes ==<br />
<br />
<strong>Important:</strong> you can do this as long as nothing has been pushed. Also make sure there's a commit to go back to before you do this or you'll end up in [http://gitolite.com/concepts/detached-head.html detached HEAD] state, which is as bad as it sounds.<br />
<br />
* To reset everything to the previous commit:<br />
<br />
<syntaxhighlight lang="bash">git reset --hard</syntaxhighlight><br />
<br />
or:<br />
<br />
<syntaxhighlight lang="bash">git reset --hard HEAD~1</syntaxhighlight><br />
<br />
You can increment the number to go back to even earlier commits.<br />
<br />
<br />
== How to push commits to the release branch ==<br />
<br />
Emergency fixes for issues that pop up right after a code push go into the release branch for the code push instead of the main develop branch. That way, regular development of features can go on as usual while the push-related issues can be fixed and pushed live on the site ASAP.<br />
<br />
* First create a copy of the release branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout -t dreamwidth/release-X.X</syntaxhighlight><br />
<br />
:X-X is the number given to the release on the GitHub repo branch. Make sure it matches.<br />
<br />
* Create a branch based on the release branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout release-X.X -b BRANCH_NAME</syntaxhighlight><br />
<br />
* Follow the usual steps: edit, add, commit, push.<br />
<br />
* Select 'compare and review' then click on 'edit' to select the release branch as your base branch (you'll see all changes merged into the release branch otherwise). Send the request when you're done reviewing.<br />
<br />
<br />
== How to squash several commits into one ==<br />
<br />
If, for some reason, you'd like several commits to be just one, you can squash them. This is not reversible so proceed with caution.<br />
<br />
# Make sure everything is up-to-date.<br />
# Make sure you're on the correct branch using <code>git checkout</code>.<br />
# Load the interactive rebase interface using <syntaxhighlight lang="bash">git rebase -i develop</syntaxhighlight><br />
# The interface will show you all the successive commits on this branch, from the oldest at the top to the most recent at the bottom.<br />
<br />
From there you have several options:<br />
* If you want to be able to edit all commit messages or merge them in some fashion, edit the work 'pick' to the word 'squash' for the ones you want to squash into the previous commit. You'll be then shown all commit messages and you'll be able to edit them, comment the lines you want to hide, etc.<br />
* If you want to edit the commit message of your master commit but discard all the other ones, use 'reword' for your master commit then 'fixup' for the other ones.<br />
* If you want to keep your master message as-is and discard the rest, use 'pick' and 'fixup' instead.<br />
<br />
<br />
* Note that if you had already pushed some changes to GitHub, you will need to force a push to get it updated:<br />
<br />
<syntaxhighlight lang="bash">git push -f origin BRANCH_NAME</syntaxhighlight><br />
<br />
Also, [http://gitready.com/ git ready] has [http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html a nice guide to squashing commits] using the interactive rebaser (<tt>git rebase -i</tt>).<br />
<br />
* The interactive rebaser can also do many other nifty and powerful things. You can change commit messages, edit past commits, reorder commits, or discard individual commits entirely.<br />
<br />
<br />
== How to copy a commit from one branch to another ==<br />
<br />
<strong>Important:</strong> don't do this if your new branch isn't empty or if what you have will conflict with the new additions.<br />
<br />
* Create the new branch if it doesn't exist already.<br />
<br />
* On the old branch, find your commit hash using <code>git reflog</code>.<br />
<br />
* Switch to the new branch then use:<br />
<br />
<syntaxhighlight lang="bash">git cherry-pick HASH</syntaxhighlight><br />
<br />
== How to add/commit only part of a file ==<br />
<br />
There are times when you want to commit only ''some'' of the changes you've made to a file. Maybe you've fixed one thing, and are in the midst of fixing a second thing somewhere else in that file when you decide you want to commit the first change. <br />
<br />
You don't have to back out the work you've done on the second fix in order to commit the first change by itself. Use the interactive option of <tt>git add</tt>:<br />
<br />
<syntaxhighlight lang="bash"><br />
# consider all changed files for addition <br />
git add -i <br />
# consider only the files specified <br />
git add -i FILE [FILE2 FILE3 ...]<br />
</syntaxhighlight><br />
<br />
You'll be shown the current staging status of the file(s), and how many lines in each of them are staged (added) or unstaged (not added yet).<br />
<br />
twilight:~/temp rick$ git add -i<br />
staged unstaged path<br />
1: unchanged +9/-8 bar.pl<br />
2: unchanged +2/-1 foo.pl<br />
3: unchanged +2/-0 index.html<br />
<br />
*** Commands ***<br />
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked<br />
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp<br />
What now> <br />
<br />
There are a lot of commands, but you really only need very few of them. Too, there's help available in each menu -- you can enter ? at any prompt for help, in addition to any visible help options.<br />
<br />
* 1: shows you the current staging status, just like when <tt>git add -i</tt> started.<br />
* 2: stage (add) whole files<br />
* 3: unstage (un-add) whole files <br />
* 4: add a currently-untracked file<br />
* 5: stage individual chunks in a file bit-by-bit <br />
* 6: show the diff between what's been staged so far & the previous commit<br />
<br />
Number 5 (patch) is the biggest winner of all these, and usually why you're running the command at all. Select 5 and you'll be presented with a menu like this one:<br />
<br />
staged unstaged path<br />
1: unchanged +9/-8 [b]ar.pl<br />
2: unchanged +2/-1 [f]oo.pl<br />
3: unchanged +2/-0 [i]ndex.html<br />
Patch update>> <br />
<br />
Pick the file or files you want to part-stage by entering their number(s), then hitting enter. When you're done picking files, hit enter once more at the empty <tt>Patch Update&gt;&gt;</tt> prompt. The program will show you every change in the files you've selected, one at a time, and ask you if you want to add it, eg: <br />
<br />
diff --git a/index.html b/index.html<br />
index 32870ee..416e0bd 100644<br />
--- a/index.html<br />
+++ b/index.html<br />
@@ -8,6 +8,7 @@<br />
<br />
<br />
<link rel="stylesheet" type="text/css" href="./css/base.css" /><br />
+ <link rel="stylesheet" type="text/css" href="./css/frontpage.css" /><br />
<br />
<title>Welcome!</title><br />
</head><br />
Stage this hunk [y/n/a/d/e/?]? <br />
<br />
Hit y to add this change, n to not add it for now. There are many more options, like splitting a change in two or adding every change left in the file -- you can hit ? to see those.<br />
<br />
When you're done, you're taken back to the main menu. If you're finished, hit 7 to quit. If you want, you can then review everything you've added by giving the command <br />
<br />
<syntaxhighlight lang="bash">git diff --cached</syntaxhighlight><br />
<br />
<br />
= Branch Management =<br />
<br />
== How to see branches ==<br />
<br />
* To check which local branch you're on (noted with an asterisk):<br />
<br />
<syntaxhighlight lang="bash">git branch</syntaxhighlight><br />
<br />
* To see local and remote branches (including deleted ones):<br />
<br />
<syntaxhighlight lang="bash">git branch -a</syntaxhighlight><br />
<br />
* To see branches on a graph: go to your profile page on github.com, click dw-free or dw-nonfree then Graphs/Network. Hit Shift and the right arrow to go to the most current part of the graph.<br />
<br />
* To see merged branches:<br />
<br />
<syntaxhighlight lang="bash">git branch --merged</syntaxhighlight><br />
<br />
* To see unmerged branches:<br />
<br />
<syntaxhighlight lang="bash">git branch --no-merged</syntaxhighlight><br />
<br />
<strong>Note:</strong> you can also see merged and unmerged branches on GitHub. On your profile, click on the Repositories tab, select yours then click on Branches (and view merged branches).<br />
<br />
* To see where local branches stem off, which branch is also on GitHub and what is the latest commit on each branch and its abbreviated hash ref:<br />
<br />
<syntaxhighlight lang="bash">git log --all --abbrev-commit --decorate --oneline --simplify-by-decoration</syntaxhighlight><br />
<br />
Note that [https://www.kernel.org/pub/software/scm/git/docs/git-log.html git log has many options] letting you do wonderful things which might help you better.<br />
<br />
== How to create a new branch for feature development / bugfixes ==<br />
<br />
All code changes should happen in a branch, whether it's a huge long-running feature or a tiny bugfix.<br />
<br />
Before you create your branch, make sure your copy of develop is [[#How to update to the latest code|up-to-date]] (it will save you headaches later). Then create your branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout develop -b BRANCH_NAME-bug-XXX</syntaxhighlight><br />
<br />
Choose a descriptive branch name you can keep track of--in this example, it's the bug number being worked on, plus a couple of keywords so you're not relying solely on memorizing bug numbers. Remember you can use [[#How to use auto-completion|auto-completion]] to make it easier to switch to your branch later.<br />
<br />
In addition, you can also set up a script to [[#How to automatically insert the issue number into your commit message|automatically insert the issue number into your commit message]] based on your branch name.<br />
<br />
<br />
== How to rename and delete branches ==<br />
<br />
* To rename a local branch:<br />
<br />
<syntaxhighlight lang="bash">git branch -m OLD_NAME NEW_NAME</syntaxhighlight><br />
<br />
<strong>Important:</strong> if you had already pushed some changes to GitHub, this will create a new identical branch there. You will need to delete the old one using the method described below.<br />
<br />
* To delete a local branch or a merged branch:<br />
<br />
<syntaxhighlight lang="bash">git branch -d BRANCH_NAME</syntaxhighlight><br />
<br />
<strong>Important:</strong> the merge will only be detected if you've updated your code. Otherwise, you'll get an error saying the branch isn't fully merged.<br />
<br />
* To delete an unmerged branch:<br />
<br />
<syntaxhighlight lang="bash">git branch -D BRANCH_NAME</syntaxhighlight><br />
<br />
* To delete a branch on GitHub:<br />
<br />
<syntaxhighlight lang="bash">git push origin :BRANCH_NAME</syntaxhighlight><br />
<br />
<strong>Note:</strong> you can also do this directly on GitHub once your branch has been merged into develop. Just click on the pull request (from the Activity list on your profile for example), scroll down and it'll ask if you want to delete the branch.<br />
<br />
<br />
== How to pull the latest changes from develop into your branch ==<br />
<br />
<strong>Important:</strong> don't do this if your branch isn't empty or if what you have will conflict with the new additions.<br />
<br />
If it's been a while since you've worked on your bug, you may want to or need to bring your branch up to date with any changes that have happened in <tt>develop</tt> since you initially forked your branch.<br />
<br />
* To update your branch so it has all the new code which has been added to develop since you created it:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME<br />
git pull --rebase --ff-only dreamwidth develop</syntaxhighlight> <br />
<br />
* You can also do this with other branches such as the current release branch by checking out the release branch then pulling from <code>release-X.X</code> instead of <code>develop</code>.<br />
<br />
<tt>pull --rebase</tt> incorporates any new changes from develop into your branch, and it also reorganizes your changes so that changes in your branch appear to start from ''current'' develop, instead of where develop was when you initially started your branch. (Neat!) This can make it much easier to merge your branch into Dreamwidth's main develop branch.<br />
<br />
* If you had already pushed your branch to GitHub, you will need to force push your changes:<br />
<br />
<syntaxhighlight lang="bash">git push -f origin BRANCH_NAME</syntaxhighlight><br />
<br />
<br />
== How to change where your branch stems off ==<br />
<br />
<strong>Important:</strong> depending on where you put it what you have may conflict with what's already there. You'll then have to resolve conflicts manually or abort the rebase.<br />
<br />
* To change the point of origin of a branch:<br />
<br />
<syntaxhighlight lang="bash">git rebase --onto NEW_BASE OLD_BASE BRANCH_NAME</syntaxhighlight><br />
<br />
For example, if you want to move something from develop to a release branch you'd use:<br />
<br />
<syntaxhighlight lang="bash">git rebase --onto release-X.X develop BRANCH_NAME</syntaxhighlight><br />
<br />
== Resolving conflicts manually ==<br />
[[Git_How_To/Conflict_resolution|Rough chat log from #dreamwidth]]<br />
<br />
= Pull Request Management =<br />
<br />
== How to submit a pull request ==<br />
<br />
Go to your version of the repository (dw-free or dw-nonfree) that you want to send upstream. By default they should be at:<br />
<br />
* https://github.com/USERNAME/dw-free<br />
* https://github.com/USERNAME/dw-nonfree<br />
<br />
These repositories are separate, so if you have made changes to both of them, you will have to submit pull requests for both of them.<br />
<br />
Find your branch in the drop-down menu then click on Compare and Pull Request right above it. Check your request one last time then click on Send Pull Request. Make sure you've included the sentence "Fixes #XXX", where #XXX is the issue number in your commit message - Github does some magic behind the scenes which makes record-keeping/issue-tracking much easier!<br />
<br />
All pull requests are reviewed by a senior Dreamwidth developer before committing (or returning for further work). <br />
<br />
<br />
== How to update a pull request after it's been reviewed == <br />
Pull requests all go through review, and it is common to have multiple passes with suggestions to improve the functionality, tweak the interface, or improve the code. This means that you'll need to go back to the relevant branch and add new commits.<br />
<br />
* If you're not on the right branch, switch to the branch you want to work on<br />
<br />
* Make requested changes, commit<br />
<br />
* Push your changes live (the pull request will automatically update with your new commits)<br />
<br />
* Comment on the pull request so that the reviewer is aware that something has changed. Reviewers aren't notified of new commits, but are notified of new comments.<br />
<br />
<br />
== How to modify existing commits in a pull request == <br />
<br />
Sometimes the reviewer requests cleanup of existing commits -- situations where that may happen are if there are a lot of cleanup commits ("removed debug log"), or if there are suggested improvements to the commit message (referring to the issue number, clarity of message, etc).<br />
<br />
In that case, follow the instructions under [[#How to squash several commits into one]], which describes how to merge multiple commits together, and how to reword the messages of existing commits.<br />
<br />
<br />
= Git Configuration =<br />
<br />
== How to create custom keywords for your most-used commands ==<br />
<br />
* Tired of (mis)typing the same things over and over? You can create keywords for them. Open .gitconfig in your root folder. Add this at the bottom and edit as desired:<br />
<br />
<syntaxhighlight lang="bash">[alias]<br />
KEYWORD1= COMMAND1<br />
KEYWORD2= COMMAND2</syntaxhighlight><br />
<br />
: Warning! Make sure the keyword you're using isn't already a git command.<br />
<br />
* You can then use your keyword instead of typing the full command (e.g. <code>git c</code> instead of <code>git checkout -b</code>).<br />
<br />
<br />
== How to list your custom keywords ==<br />
<br />
Because who doesn't forget them? :)<br />
<br />
<syntaxhighlight lang="bash">git config --get-regexp alias</syntaxhighlight><br />
<br />
<br />
== How to configure git ==<br />
<br />
See [[Git settings]] for some of the most useful settings.<br />
<br />
<br />
== How to create a default commit message ==<br />
<br />
Easy peasy! In your root folder, create a file called <code>.gitmessage.txt</code> with whatever default message you wanna use then edit .gitconfig to use it:<br />
<br />
<syntaxhighlight lang="bash">git config --global commit.template $HOME/.gitmessage.txt</syntaxhighlight><br />
<br />
<br />
== How to automatically insert the issue number into your commit message==<br />
<br />
Important! This will only work if 'bug-XXX' where XXX is the issue number is in your branch name. This is meant as a way not to have to type it or paste it *again* in your commit messages.<br />
<br />
Go to ~/dw/.git/hooks/ and create a filed called <code>prepare-commit-msg</code>. [https://gist.github.com/afuna/ae9386b122d6a490eaf9 Paste this gist] made by the brilliant <dwuser>fu</dwuser> and save. Finally make it executable by running:<br />
<br />
<syntaxhighlight lang="bash">chmod u+x ~/dw/.git/hooks/prepare-commit-msg</syntaxhighlight><br />
<br />
: N.B. This can be used in conjunction with the default commit message mentioned in the previous section.<br />
<br />
<br />
= Troubleshooting =<br />
== Why am I getting 'Permission denied'? ==<br />
<br />
Before running any of the <tt>git</tt> commands on this page, you will need to ensure you are somewhere within the <tt>$LJHOME</tt> directory tree. On Dreamhacks, if you are not within this directory tree, you may receive errors like this:<br />
<br />
fatal: Unable to create '/dreamhack/.git/refs/heads/dj.lock': Permission denied<br />
<br />
This occurs because the Dreamhack machine uses its own git repository for its code too, and Git is thinking that you wanted to use this repository instead of your own personal repository. To fix this, simply change to the <tt>$LJHOME</tt> directory:<br />
<br />
<syntaxhighlight lang="bash">cd $LJHOME</syntaxhighlight><br />
<br />
The commands should now work without issue.<br />
<br />
== Untangling messes == <br />
If your account or branch is in some kind of unfortunate state that you do not know how to recover from: <br />
<br />
* try not to panic<br />
* try not to blame yourself -- this is a very common situation, especially while first getting used to git. <br />
* feel free to ask for help, particularly in <dwcomm>dw_dev_training</dwcomm> or, for real-time support, in [[IRC|#dreamwidth-dev]]; it can help to come prepared with a pastebin link of what's going on in your account, and explain what you're trying to do. <br />
<br />
<br />
= References =<br />
<br />
[http://stackoverflow.com/ Stack Overflow]: one of the best places to find out if there's a command for what you wanna do.<br />
<br />
[http://git-scm.com/docs Command Index]<br />
<br />
[[Category:Development]]<br />
[[Category:Getting Started]]<br />
[[Category:Git]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2017-10-16T21:50:54Z<p>Sophira: /* RWhEll bot */ Add /me variant.</p>
<hr />
<div>IRC stands for [https://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [[:Category:Development|development information]], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code> (link is to webchat interface)<br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel; link is to webchat interface)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code><br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (chat.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. (You can change it easily after you connect.) <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify [USERNAME] [PASSWORD]<br />
/msg nickserv release [USERNAME]<br />
/nick [USERNAME]<br />
<br />
(Do not actually use the brackets, just put in your username or password.)<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@zorkian and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing [https://en.wikipedia.org/wiki/The_Game_(mind_game) The Game]<br />
* being owed a keyboard or monitor<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Almost anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>karzilla</dwstaff> (kareila), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (zorkian) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
*** a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* It's appreciated when people describe links they share, particularly: <br />
** if you think it's going to be NSFW (the definition of "Not Safe For Work" does vary from person to person)<br />
** blatant sexual content, nudity, profanity or other words that might trip a workplace nanny-filter<br />
** auto-playing audio or video<br />
** large pages<br />
** images that aren't already captioned, audio and video that aren't already transcribed<br />
** flashing, blinking, or animated images<br />
** if using a short-URL service (tinyurl, bit.ly, and the like)<br />
** known timesinks like TVTropes<br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest, or as part of a quote. <br />
* The #dreamwidth channels include people of all technical levels, from very experienced developers to complete neophytes, from advanced power users to complete neophytes, and sometimes the odd person who may not use Dreamwidth at all. In some cases, power users who have been around a while may know more about Dreamwidth's architecture than senior developers who have no experience with the Dreamwidth codebase. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
** Check your assumptions about the other person's technical level. Someone from a demographic group where software developers are rare may be that 1 in 5,000 (or however many); someone who has a generally solid understanding of the technical world may happen to have a gap in that specific spot. [http://xkcd.com/1053/ Even if "everybody knows it".] <br />
** Asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is usually appropriate. <br />
** Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. <br />
** When guiding someone through a process that may be unfamiliar to them, try to check in with them regularly to make sure that they're following along ok/you're still on the same page/if they might want a more advanced explanation. <br />
** Don't be rude or patronizing when explaining something. There's always potential for miscommunication, and technical explanations between mismatched skill levels can be especially delicate. <br />
***If you don't feel you can refrain from being rude and patronizing on purpose, you should bow out of the conversation. <br />
*** Statements like "RTFM" (Read the Fucking Manual) and sites like lmgtfy.com and its ilk are used condescendingly more often than not; try another phrasing or method. <br />
*** A "sorry, I phrased that badly" often helps when you didn't mean to be rude but it came across that way anyway. <br />
* Take care when expressing physical interaction. #dreamwidth is not a roleplay channel, and actions affecting other people can and will be interpreted similar to actual physical interaction. <br />
** Try "offers hugs" instead of "hugs", as that gives the other person the chance to accept or decline<br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
* Private messages: site staff (and quite a few others) are open to an initial query being sent without asking in channel first. Therefore, there is no channel rule saying you must ask before sending a PM. However: <br />
** Is it something for that person specifically, or is it something that other staff members/volunteers might be able to answer? (If so, you might want to ask in channel if anyone is around who has time to answer questions about that topic.) <br />
** Many people will idle in channel, so an immediate response is not guaranteed. <br />
** If a specific person tells you of their preferences for PMs, that overrides general rules. <br />
* Try to use the [[Escalation]] procedures if something goes wrong. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== Getting Help === <br />
If something goes wrong in IRC, get help by: <br />
<br />
* Asking for help in channel <br />
* Asking for help in an adjacent channel (hopefully with staff or delegates present) where the problem isn't currently happening<br />
* Sending a private message to someone with "staff" or "delegate" in their hostmask (note: everyone has to sleep sometime, and sometimes clients lose private messages; if you've had no response within a reasonable amount of time, try someone else). "Can we talk", etc., is rarely a useful initial message; "There's a problem with ___" or "The current discussion about ____ is disturbing and I feel it's off-topic" is much better. <br />
* If no #dreamwidth staff/delegates are around and there's an urgent problem, [http://freenode.net/faq.shtml#helpfromstaff Freenode staff are +v in the #freenode channel]<br />
<br />
For Dreamwidth technical support: <br />
<br />
* Questions in #dreamwidth ("Can anybody help me figure out this setting?") are okay<br />
* The official Dreamwidth technical support area is [http://www.dreamwidth.org/support/ www.dreamwidth.org/support], and there is a [http://www.dreamwidth.org/support/faqbrowse?faqid=242 guide to using Dreamwidth technical support] if you're curious about the process<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, [[IRC/welcoming|welcoming]] place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [https://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or [https://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour (or whenever they notice it's been over 1 hour since the last announcement) is encouraged to announce a channel [[stretch break]]. These announcements sometimes [http://qdb.dreamwidth.net/dw/683 give rise to assorted silliness].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and theoretically zorkian. DWSpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
DWSpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> or <code>DWSpamBot: spam</code> makes DWSpamBot list the current contents of the queue. It sometimes pings out and fails to return. When this happens, a request to exor674 to bite spambot (after a reasonable time, like 20 minutes, has lapsed without it returning) will let them know it needs action. (Note that to work, that request needs to include the name "exor674"; something along the lines of <code>exor674, please bite spambot?</code> is suggested.)<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-kvetch ===<br />
Open access but officially unofficial. <br />
<br />
This channel replaces #dreamwidth-bitch, and combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics and religion, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Administrated by <dwstaff>karzilla</dwstaff> and monitored by kaberett. <br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and zorkian. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy was a bot that notified the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
Bugsy is currently out to pasture while we get to grips with [[Github Issues]].<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-kvetch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dreamwidth.net/wiki/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with [[#Public Infobot Commands|one of the commands above]]. The symbol '''=''' can be used in place of '''is'''. <br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
* qdb<br />
* jargon<br />
* welcome<br />
* pep talk<br />
* [[IRC/Teleporter|teleporter]]<br />
* escalation<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally'''<br />
<br />
will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-kvetch (and legacy #dreamwidth-bitch).<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <delay> <thing>'''<br />
* '''Remind me at &lt;time> <zone> <thing>'''<br />
* '''Remind me again in <delay>'''<br />
* '''Remind me again at &lt;time> <zone>'''<br />
<br />
Reminderbot only understands numbers written as Arabic numerals, not as words. Reminderbot will understand 5, but not five.<br />
<br />
If used in #dreamwidth-kvetch, the shortcut "again" stands for the last thing either requested or reminded in the channel, even if by someone else. <br />
<br />
Shortcuts:<br />
<br />
Instead of '''in <delay>''' or '''at &lt;time> <zone>''', you can use:<br />
<br />
* '''soon''': after a random interval between 5 minutes and 2 hours.<br />
* '''later''': after a random interval between 1 and 24 hours.<br />
* '''much later''' (or '''muchlater'''): after a random interval between 12 hours and 7 days.<br />
<br />
Examples: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
* '''Remind me again at 5:30pm PDT'''<br />
* '''Remind me later Not everyone is a fucking asshole.'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-ParseDate-2015.103/lib/Time/ParseDate.pm#DATE_FORMATS_RECOGNIZED - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth and #dreamwidth-kvetch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
<br />
; '''feed that back to hell'''<br />
; /me '''feeds that back to hell'''<br />
: This feeds the last item hell spat back to hell, as one may expect. Instead of "that", you may also use "this", "these" and "those". The "feed" synonyms listed above also work for that variant.<br />
<br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-kvetch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
== Delegate IRC Commands ==<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: Development]]<br />
[[Category: Support]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Random_Word_HellRandom Word Hell2017-04-19T17:48:50Z<p>Sophira: /* Current iteration of hEll */ If people liked the Hell quotes on this page, they'll probably like the QDB.</p>
<hr />
<div>Random Word Hell is an [[IRC]] bot in #dreamwidth. <br />
<br />
=History=<br />
Reproduced from www.kekkai.org/blog/2001_07_01_archive.shtml (now missing): <br />
<br />
posted by Prometheus Bounce [12:49] :: [ link this ]<br />
another silly technomancy feature<br />
<br />
Okay. This one requires some background.<br />
<br />
You see, Arielle has a condition that we call Arielleitis. It's a strange sort of condition that results, basically, in Arielle occasionally totally and completely leaving words out of sentences. She does it verbally, and she particularly does it in writing. The most frequent victim of Arielleitis is the conjugation of the verb "to be", which results in some funny sentences. Arielle is remarkably good-natured about this affliction, and participates in self-mockery with roughly the same frequency with which we mock her.<br />
<br />
A year or so ago, when Arielle was attempting to learn the basics of MOO programming, she created an object called "Random Word Hell", which would do two things: you could feed a word to Hell, and you could make Hell spit a word back up. Her theory was that all the words she dropped out of sentences had to go somewhere. She forgot about the object for a while, as did we, until a week or so ago she hauled it out of forgotten memory and dropped it in the MOO room we most often hang out in.<br />
<br />
This, of course, resulted in a great amount of fun. It is immensely satisfying to type, say, "feed stupid fangirls to hell".<br />
<br />
However, Hell is picky, and occasionally self-aware, and far too sentient for its own good. It also refuses to keep a few things we feed it. Like [Person We Don't Like], That Fucker Giuliani, and Windows ME. All of whom deserve a good bout of time in Hell.<br />
<br />
We present to you a smattering of Fun With Random Word Hell.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs the stock market!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels this stupid headache.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs baby pr0n!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels lick lick lick lick lick lick.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Fatima!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels empty b33r bottle shards.<br />
A sudden roar sounds from the depths of Random Word HELL as it expels biting Whitney's face.<br />
Bart says, "I think I'm insulted."<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs barbarian!<br />
Random Word HELL sneaks out a scaly hand and grabs peacock!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels all the little gay boys.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs chocobos!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels shoujo anime.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Worf!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels RAGE.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs little boys!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels prepubescent lesbianism.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Ashlea's cock!<br />
Mikage exclaims, "That's not what you said last night!"<br />
Ashlea d'oh!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels goons.<br />
Ashlea asserts, "Wow!"<br />
Mikage relates, "Woah."<br />
Ashlea remarks, "Apparently, I come goons."<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Japaneses!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels the stock market.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Whitney's brain!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Rupert's shitty connecton.<br />
Whitney states, "Well, that explains it."<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs ph00d!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels standing outside a broken phone booth with money in my hand.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs assless battle shorts!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels /your/ underpants.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs goats!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels assless battle shorts.<br />
Alanna says, "RONI! HOW MANY TIMES have I told you not to let the goats eat the battle shorts?"<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs naked Whitney!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Patrick Stewart's testicles.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs spam!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels ph00d.<br />
Alanna says, "No, no, no. Spam is NOT ph00d."<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs a sleepy kitty!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Ashlea's cock.<br />
<br />
Whitney tries to adjust the tracking on Realplayer.<br />
Whitney exclaims, "By hitting it!"<br />
Random Word HELL sneaks out a scaly hand and grabs Realplyaer!<br />
Whitney ...<br />
Random Word HELL sneaks out a scaly hand and grabs Realplayer!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels the pose that says 'this man needs a blowjob'.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Technomancy!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels gallery.<br />
Alanna says, "No, no, no, we don't draw."<br />
Random Word HELL sneaks out a scaly hand and grabs a lack of artistic talent!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels oversharing, fifteen beer penalty, your cooler.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs more goats!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Technomancy.<br />
Mikage ....<br />
Whitney asserts, "Damn straight!"<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs mas cabras!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels chocobos.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs part of a well-balanced breakfast!<br />
Whitney is in a very heated argument over the word tang. This is great.<br />
A sudden roar sounds from the depths of Random Word HELL as it expels gerunds.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs weird-tasting coffee!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels battle aura.<br />
Ashlea ...<br />
Ashlea remarks, "Well, /that's/ no good."<br />
Whitney interjects, "Don't drink anything that has a battle aura."<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs morning!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels buttsex.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs Geocities!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels the baby Jesus, crying because of your lies.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs a duck!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Buddha.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs loads of email backlog!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels random and intermittent profundity.<br />
<br />
Whitney comments, "Two monkey enter hell. One monkey leave."<br />
Random Word HELL sneaks out a scaly hand and grabs one monkey!<br />
Random Word HELL sneaks out a scaly hand and grabs two monkey!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels morning.<br />
Whitney damn!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Windows ME.<br />
Alanna sighs.<br />
Whitney noooo.<br />
Random Word HELL sneaks out a scaly hand and grabs Windows ME!<br />
<br />
Satsuki eyes the typist. "Write my story."<br />
Alanna says, "Bite me."<br />
Whitney yipe!<br />
Satsuki sighs.<br />
Alanna says, "Help."<br />
Random Word HELL sneaks out a scaly hand and grabs Satsuki!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels loads of email backlog.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs D!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels Arielle.<br />
Whitney ....<br />
Arielle !!<br />
Alanna .....!<br />
Whitney asserts, "I have powers!"<br />
Alanna says, "Occasionally, that thing scares me."<br />
Whitney declares, "Let's see if it works the other way!"<br />
Random Word HELL sneaks out a scaly hand and grabs Arielle!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels gilr.<br />
Whitney ....no.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs an occasional tendency to be startlingly sentient and self-aware!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels [Person We Don't Like]'s self-important whining.<br />
<br />
Random Word HELL sneaks out a scaly hand and grabs stupid fangirls!<br />
Arielle poings!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels [PWDL].<br />
Alanna ...<br />
Arielle !!<br />
Random Word HELL sneaks out a scaly hand and grabs [PWDL]!<br />
A sudden roar sounds from the depths of Random Word HELL as it expels a baby monkey.<br />
<br />
=Current iteration of hEll=<br />
The current iteration of Random Word hEll, which currently lives in #dreamwidth and #dreamwidth-kvetch, is coded and maintained by <dwuser>sophie</dwuser>. A collection of its greatest hits can be found by [http://qdb.dreamwidth.net/search?for=RWHell searching the QDB for "RWHell"].<br />
<br />
For more jargon and silliness, please see [[Common Jargon]].<br />
<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2017-04-19T17:37:18Z<p>Sophira: Adding anchor to the "date formats recognised" link for the reminderbot.</p>
<hr />
<div>IRC stands for [https://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [[:Category:Development|development information]], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code> (link is to webchat interface)<br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel; link is to webchat interface)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code><br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (chat.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. (You can change it easily after you connect.) <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@zorkian and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing [https://en.wikipedia.org/wiki/The_Game_(mind_game) The Game]<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Almost anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>karzilla</dwstaff> (kareila), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (zorkian) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
*** a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* It's appreciated when people describe links they share, particularly: <br />
** if you think it's going to be NSFW (the definition of "Not Safe For Work" does vary from person to person)<br />
** blatant sexual content, nudity, profanity or other words that might trip a workplace nanny-filter<br />
** auto-playing audio or video<br />
** large pages<br />
** images that aren't already captioned, audio and video that aren't already transcribed<br />
** flashing, blinking, or animated images<br />
** if using a short-URL service (tinyurl, bit.ly, and the like)<br />
** known timesinks like TVTropes<br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest, or as part of a quote. <br />
* The #dreamwidth channels include people of all technical levels, from very experienced developers to complete neophytes, from advanced power users to complete neophytes, and sometimes the odd person who may not use Dreamwidth at all. In some cases, power users who have been around a while may know more about Dreamwidth's architecture than senior developers who have no experience with the Dreamwidth codebase. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
** Check your assumptions about the other person's technical level. Someone from a demographic group where software developers are rare may be that 1 in 5,000 (or however many); someone who has a generally solid understanding of the technical world may happen to have a gap in that specific spot. [http://xkcd.com/1053/ Even if "everybody knows it".] <br />
** Asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is usually appropriate. <br />
** Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. <br />
** When guiding someone through a process that may be unfamiliar to them, try to check in with them regularly to make sure that they're following along ok/you're still on the same page/if they might want a more advanced explanation. <br />
** Don't be rude or patronizing when explaining something. There's always potential for miscommunication, and technical explanations between mismatched skill levels can be especially delicate. <br />
***If you don't feel you can refrain from being rude and patronizing on purpose, you should bow out of the conversation. <br />
*** Statements like "RTFM" (Read the Fucking Manual) and sites like lmgtfy.com and its ilk are used condescendingly more often than not; try another phrasing or method. <br />
*** A "sorry, I phrased that badly" often helps when you didn't mean to be rude but it came across that way anyway. <br />
* Take care when expressing physical interaction. #dreamwidth is not a roleplay channel, and actions affecting other people can and will be interpreted similar to actual physical interaction. <br />
** Try "offers hugs" instead of "hugs", as that gives the other person the chance to accept or decline<br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
* Private messages: site staff (and quite a few others) are open to an initial query being sent without asking in channel first. Therefore, there is no channel rule saying you must ask before sending a PM. However: <br />
** Is it something for that person specifically, or is it something that other staff members/volunteers might be able to answer? (If so, you might want to ask in channel if anyone is around who has time to answer questions about that topic.) <br />
** Many people will idle in channel, so an immediate response is not guaranteed. <br />
** If a specific person tells you of their preferences for PMs, that overrides general rules. <br />
* Try to use the [[Escalation]] procedures if something goes wrong. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== Getting Help === <br />
If something goes wrong in IRC, get help by: <br />
<br />
* Asking for help in channel <br />
* Asking for help in an adjacent channel (hopefully with staff or delegates present) where the problem isn't currently happening<br />
* Sending a private message to someone with "staff" or "delegate" in their hostmask (note: everyone has to sleep sometime, and sometimes clients lose private messages; if you've had no response within a reasonable amount of time, try someone else). "Can we talk", etc., is rarely a useful initial message; "There's a problem with ___" or "The current discussion about ____ is disturbing and I feel it's off-topic" is much better. <br />
* If no #dreamwidth staff/delegates are around and there's an urgent problem, [http://freenode.net/faq.shtml#helpfromstaff Freenode staff are +v in the #freenode channel]<br />
<br />
For Dreamwidth technical support: <br />
<br />
* Questions in #dreamwidth ("Can anybody help me figure out this setting?") are okay<br />
* The official Dreamwidth technical support area is [http://www.dreamwidth.org/support/ www.dreamwidth.org/support], and there is a [http://www.dreamwidth.org/support/faqbrowse?faqid=242 guide to using Dreamwidth technical support] if you're curious about the process<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, [[IRC/welcoming|welcoming]] place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [https://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or [https://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour (or whenever they notice it's been over 1 hour since the last announcement) is encouraged to announce a channel [[stretch break]]. These announcements sometimes [http://qdb.dreamwidth.net/dw/683 give rise to assorted silliness].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and theoretically zorkian. DWSpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
DWSpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> or <code>DWSpamBot: spam</code> makes DWSpamBot list the current contents of the queue. It sometimes pings out and fails to return. When this happens, a request to exor674 to bite spambot (after a reasonable time, like 20 minutes, has lapsed without it returning) will let them know it needs action. (Note that to work, that request needs to include the name "exor674"; something along the lines of <code>exor674, please bite spambot?</code> is suggested.)<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-kvetch ===<br />
Open access but officially unofficial. <br />
<br />
This channel replaces #dreamwidth-bitch, and combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics and religion, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Administrated by <dwstaff>karzilla</dwstaff> and monitored by kaberett. <br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and zorkian. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy was a bot that notified the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
Bugsy is currently out to pasture while we get to grips with [[Github Issues]].<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-kvetch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dreamwidth.net/wiki/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with [[#Public Infobot Commands|one of the commands above]]. The symbol '''=''' can be used in place of '''is'''. <br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
* qdb<br />
* jargon<br />
* welcome<br />
* pep talk<br />
* [[IRC/Teleporter|teleporter]]<br />
* escalation<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally'''<br />
<br />
will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-kvetch (and legacy #dreamwidth-bitch).<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <delay> <thing>'''<br />
* '''Remind me at &lt;time> <zone> <thing>'''<br />
* '''Remind me again in <delay>'''<br />
* '''Remind me again at &lt;time> <zone>'''<br />
<br />
Reminderbot only understands numbers written as Arabic numerals, not as words. Reminderbot will understand 5, but not five.<br />
<br />
If used in #dreamwidth-kvetch, the shortcut "again" stands for the last thing either requested or reminded in the channel, even if by someone else. <br />
<br />
Shortcuts:<br />
<br />
Instead of '''in <delay>''' or '''at &lt;time> <zone>''', you can use:<br />
<br />
* '''soon''': after a random interval between 5 minutes and 2 hours.<br />
* '''later''': after a random interval between 1 and 24 hours.<br />
* '''much later''' (or '''muchlater'''): after a random interval between 12 hours and 7 days.<br />
<br />
Examples: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
* '''Remind me again at 5:30pm PDT'''<br />
* '''Remind me later Not everyone is a fucking asshole.'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-ParseDate-2015.103/lib/Time/ParseDate.pm#DATE_FORMATS_RECOGNIZED - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth and #dreamwidth-kvetch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-kvetch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
== Delegate IRC Commands ==<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: Development]]<br />
[[Category: Support]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2017-04-04T05:07:08Z<p>Sophira: Updates to scratch installation process for new Ubuntus</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 16.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to <dwuser>dw_dev</dwuser>. Also look at [[Production Setup: Webserver]].<br />
<br />
== Command convention ==<br />
<br />
In this walkthrough, commands to be run as a regular user are prefixed with <tt>$</tt>. Commands to be run as the super-user are prefixed with <tt>#</tt>. If you are not the super-user, you can run single commands like this:<br />
<br />
$ sudo <command goes here><br />
<br />
Alternately, you can spawn a super-user shell using:<br />
<br />
$ sudo -i<br />
# <command goes here><br />
<br />
When done with the super-user shell, exit the shell via:<br />
<br />
# exit<br />
<br />
== Configuring the OS and environment==<br />
<br />
=== Bringing the system up to date ===<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system:<br />
<br />
# apt-get update<br />
# apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
# apt-get install man<br />
<br />
=== Installing necessary packages ===<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
# apt-get install git apache2 apache2-bin apache2-data apache2-utils \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl libdatetime-perl \<br />
libcache-memcached-perl libhash-multivalue-perl libgd-gd2-perl \<br />
libhtml-template-perl libwww-perl libmime-lite-perl \<br />
liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl libfile-find-rule-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl libtheschwartz-perl \<br />
libfile-type-perl libjson-perl ruby libdbd-mysql-perl libdanga-socket-perl \<br />
libio-aio-perl libsys-syscall-perl liblog-log4perl-perl libtext-markdown-perl \<br />
libimage-exiftool-perl libnet-oauth-perl libnet-smtps-perl libxmlrpc-lite-perl<br />
<br />
This will download about 113MB of files and use around 545MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
# apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
# dpkg-reconfigure postfix<br />
<br />
=== Configure Apache 2 ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. <em>Note</em>: if you ran the above command to install Apache, then you need to run these commands to switch to the pre-fork model:<br />
<br />
# a2dismod mpm_event<br />
# a2enmod mpm_prefork<br />
# service apache2 restart<br />
<br />
=== Install Perl modules with CPAN ===<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has <tt>make</tt> at the correct location. Run <br />
<br />
# which make<br />
/usr/bin/make<br />
<br />
then compare the results with running:<br />
<br />
# cpan <br />
...<br />
Would you like to configure as much as possible automatically? [yes] <PRESS ENTER><br />
...<br />
cpan[1]> o conf make<br />
make [/usr/bin/make]<br />
...<br />
cpan[2]> exit<br />
<br />
The value printed should match that from the <tt>which make</tt> command you previously ran.<br />
<br />
To install the perl libraries, first set up CPAN:<br />
<br />
# cpan Bundle::CPAN<br />
<br />
When prompted, press Enter to exit tests. Then, run the following command to install the rest of the necessary libraries:<br />
<br />
# cpan GTop Digest::SHA1 Unicode::CheckUTF8 MogileFS::Client \<br />
TheSchwartz::Worker::SendEmail LWP::UserAgent::Paranoid \<br />
Mozilla::CA List::Util IP::Country::Fast Paws::S3 Net::DNS<br />
<br />
(Net::DNS is required to be installed via CPAN because the version included with current versions of Ubuntu is 0.81, which is too old for LWP::UserAgent::Paranoid to work properly.)<br />
<br />
Note that the MogileFS::Client is required even if you are not configuring MogileFS.<br />
<br />
=== Set Timezone to UTC ===<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
# dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
=== Configuring MySQL/MariaDB ===<br />
<br />
Newer versions of MySQL and/or MariaDB have imposed stricter requirements than the current Dreamwidth SQL definitions can comply with. These restrictions must be relaxed, or the initial database population scripts will fail.<br />
<br />
To do this, run the following 4 commands:<br />
<br />
$ sudo -i<br />
# <nowiki>echo "sql_mode = ''" >> /etc/mysql/mysql.conf.d/mysqld.cnf</nowiki><br />
# service mysql restart<br />
# exit<br />
<br />
=== Setting up the DW user account ===<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
# adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
# usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
# adduser dw<br />
# usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
# su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file <tt>.profile</tt>. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
First, clone a copy of the repository onto your machine:<br />
<br />
$ cd ~/<br />
$ git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
$ cd $LJHOME<br />
<br />
Now, let's make it aware of the dreamwidth repository so we can grab updates later:<br />
<br />
$ git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
$ git fetch dreamwidth<br />
<br />
Finally, let's set up to sync up with the main repository's develop branch:<br />
<br />
$ git branch -u dreamwidth/develop develop<br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files.}}<br />
<br />
$ cd $LJHOME/ext<br />
$ git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
$ cd dw-nonfree<br />
$ git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
$ git fetch dreamwidth<br />
$ git branch -u dreamwidth/develop develop<br />
$ cd ../..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
$ mysql -u root -p <br />
<br />
These MySQL commands will create your development database:<br />
<br />
mysql> create database dw;<br />
mysql> grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost'''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like. '''NB:''' this is 'dw'@'localhost', not 'dw@localhost' - either cut and paste, or type carefully!<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
mysql> create database dw_schwartz;<br />
mysql> grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists.)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
mysql> quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now.<br />
<br />
Copy over your config files, and tell them to take priority over config files in any of the repos:<br />
<br />
$ cd $LJHOME<br />
$ mkdir -p ext/local/etc<br />
$ echo "highest" > ext/local/.dir_scope<br />
$ cp etc/config-local.pl ext/local/etc/config-local.pl<br />
$ vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course, instead of vim. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Below the 'CHANGE THIS' section (unless this is already present somewhere), add:<br />
<br />
$STATDOCS = "$HOME/build/static"<br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
$ cd $LJHOME<br />
$ cp etc/config-private.pl ext/local/etc/config-private.pl<br />
$ chmod go-rwx ext/local/etc/config-private.pl<br />
$ vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
Near the bottom of the file is the line you will need to change to tell your server which domain to use.<br />
<br />
package DW::PRIVATE;<br />
<br />
$DOMAIN = "ljsite.com";<br />
<br />
<div style="padding:1em; background-color:#fee;">'''A note about $DOMAIN:''' If you are running a local server for development purposes and don't need or want a hostname, you may be tempted to just set $DOMAIN to localhost, but the server won't function correctly without a domain name. One possible workaround for this is to set it to a nonexistent domain (the default ljsite.com is fine) and add a line in your <code>/etc/hosts</code> file that resolves that domain name to your localhost IP (either <tt>127.0.0.1</tt> or <tt>::1</tt>.) Another workaround is to [http://wiki.dreamwidth.net/wiki/index.php/Subdomain_setup#Local_development_via_dnsmasq install and configure dnsmasq].</div><br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
$ cd $LJHOME<br />
$ cp etc/config.pl ext/local/etc/config.pl<br />
$ vim ext/local/etc/config.pl<br />
<br />
Note that from here on, when any documentation says to edit <tt>etc/config*</tt>, you'll likely want to edit <tt>ext/local/etc/config-*</tt> instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
$ cd $LJHOME<br />
$ bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$ $LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$ $LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$ $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$ $LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
$ mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$ $LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$ $LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Compile Foundation stylesheets and static files ==<br />
<br />
Follow the [[SCSS]] instructions for installing compass and sass:<br />
<br />
$ gem install sass --version 3.2.19 <br />
$ gem install compass --version 0.12.2<br />
<br />
Then compile the stylesheets and static files for dw-free:<br />
<br />
$ $LJHOME/bin/build-static.sh<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Follow the instructions below for your version of Apache, and make sure to do <code> service apache2 restart</code> when you are done for your config changes to take effect.<br />
<br />
=== Apache 2.4 configuration ===<br />
<br />
This is the configuration you need for Ubuntu 16.04 and newer.<br />
<br />
Add the contents of [https://gist.github.com/kareila/9b1f62cfe4eab2a8bb70 this config file] (name it something like <code>dw.conf</code>), change the hostname, port, and directory if necessary and add to <code>/etc/apache2/sites-available</code>.<br />
<br />
Create the apache log directory referenced in the configuration file:<br />
<br />
$ mkdir /home/dw/apache_logs<br />
<br />
To activate the site run:<br />
<br />
$ sudo a2ensite dw<br />
<br />
(Replacing dw with whatever you named your config file before the .conf bit)<br />
<br />
Then disable the default site:<br />
<br />
$ sudo a2dissite 000-default<br />
<br />
And activate the Perl Requests and Perl modules:<br />
<br />
$ sudo a2enmod apreq2<br />
$ sudo a2enmod perl<br />
<br />
Finally, restart apache:<br />
<br />
$ sudo service apache2 restart<br />
<br />
Some errors may come up here, if they do, don't be disheartened! In nearly all cases Apache provides enough information to fix these.<br />
<br />
=== Apache 2.2 configuration ===<br />
<br />
Below is the Apache 2.2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" (which you may need to create) in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
# a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
# a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
You'll then need to restart apache.<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[MogileFS setup]]<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Editor:_TextWranglerEditor: TextWrangler2017-04-04T04:47:30Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>== Using TextWrangler to edit files over FTP/SFTP ==<br />
<br />
First, from the File menu select <tt>Open from FTP/SFTP Server...</tt><br />
<br />
Then, put in the information for the Dreamhack (or other server) you are hosting on. For dreamhacks, the server name is <tt>ssh-hack.dreamwidth.net</tt> and the username is your hack username, always in the form of dh-USERNAME, and you should know your password.<br />
<br />
Then, you'll be able to browse and find whatever file you want to edit like normal.<br />
<br />
[[Category: Editors]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Newbie_Guide:_Getting_Started_on_WindowsNewbie Guide: Getting Started on Windows2017-04-04T04:47:12Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>{{Note|text=Feel free to correct, expand, do anything which could make this better and clearer. ^_^}}<br />
<br />
{{Note|text=If you have a different OS you may still find this helpful. While you may not need to install and set up any software the rest is pretty much universal.}}<br />
<br />
= Contributor Licensing Agreement =<br />
<br />
The very first thing you need to do is [[Contributor_Licensing_Agreement|read and sign a Contributor Licensing Agreement]] and mail it to Denise. If you don't agree with its terms Dreamwidth won't be able to accept your code; if you've submitted code but Denise doesn't have your CLA your code can't be used. So read it, think it over, sign it, mail it then wait until you're told it's been received. Now you can get started.<br />
<br />
<br />
= What do you need and why? =<br />
<br />
Because you're on Windows, you have to use quite a number of tools to access and manage things so this part might seem a little daunting. The good news is that 1) you're used to being flexible and resourceful, right? 2) once you've got everything set up things will be much simpler and intuitive.<br />
<br />
So what do you need?<br />
<br />
# You need a github.com account to be able to fetch and copy the Dreamwith code, find issues to work on, and publish your code so it can be integrated to Dreamwidth. This is both where all the Dreamwidth code comes from and where your own code will end up but you won't do much work on the site itself.<br />
# You need a Dreamhack to see what your changes will do on the site for real. Think of a Dreamhack as an online mirror of the Dreamwidth site which you can do whatever you want with.<br />
# You need PuTTY to connect github.com to your Dreamhack, to connect your Dreamhack to github.com, and manage your work. Think of PuTTY as your command center.<br />
# You need WinSCP to visualize your Dreamhack files and be able to open them in a text editor. Think of WinSCP as a Dreamhack Explorer.<br />
# You need a text editor to edit your files.<br />
<br />
== Create an account on GitHub ==<br />
<br />
Go to [https://github.com/ GitHub] and create your account.<br />
<br />
<br />
== On your GitHub account ==<br />
<br />
You need to fork the Dreamwidth code onto your own account. Forking is like cloning and branching. It will copy the code and also label your copy as being a branch (a fork) of the original Dreamwidth code so that everybody knows the two are connected.<br />
<br />
Dreamwidth is divided into two parts: an open-source part called 'dw-free', and a private part called 'dw-nonfree'. The private part is composed of elements which are specific to dreamwidth.org and can't be used on other sites (e.g. the logo) and external elements Dreamwidth is allowed to use on its own site but can't redistribute to other sites. <br />
<br />
* To fork the free part go to https://github.com/dreamwidth/dw-free and click on Fork on the upper right corner.<br />
<br />
* To fork the nonfree part go to to https://github.com/dreamwidth/dw-nonfree and do the same.<br />
<br />
<br />
== Get a Dreamhack ==<br />
<br />
Apply for a Dreamhack by [http://hack.dreamwidth.net/apply.shtml filling this form]. You can pick anything as your username. The email address you choose is used to send you important info and alerts.<br />
: N.B. Some users like having a separate address for their dev work but it's entirely up to you!<br />
<br />
Once you're done, you should get an email with your login username and a password. Don't lose it.<br />
<br />
<br />
== Install PuTTY ==<br />
<br />
* Download it at [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] and install it.<br />
<br />
* Run PuTTY. In the configuration window, enter "ssh-hack.dreamwidth.net" for the host name. Go to Connection/Data and enter the username/login given to you in the welcome e-mail. It should be something like dh-username.<br />
<br />
* Click on Open. If you get a pop-up message about a key, click Yes.<br />
<br />
* Enter the password given to you in the welcome email when asked. Note that characters aren't displayed and the cursor doesn't move. It's normal.<br />
<br />
* Change your password by typing:<br />
<syntaxhighlight lang="bash">passwd</syntaxhighlight><br />
<br />
* Your default Dreamhack account is called 'system'. Set its password with this command:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/make_system.pl</syntaxhighlight><br />
<br />
<br />
== Install WinSCP ==<br />
<br />
* Install it at [http://winscp.net/eng/download.php]. During the installation, you may be asked about the mode you prefer: Commander and Explorer. Commander works like an FTP client: a partitioned window with your computer files on one side and the Dreamhack files on the other. Explorer works like Windows Explorer and only displays your Dreamhack files. Either mode is fine. Pick what you're most used to.<br />
<br />
* Use "ssh-hack.dreamwidth.net" for the host name. Enter your username and the password you typed when you did <code>passwd</code> on PuTTY. Click on Save then on Login.<br />
<br />
<br />
== Get a good text editor ==<br />
<br />
While you can use Notepad, I recommend [http://notepad-plus-plus.org/download/ Notepad++] instead. It's free, simple and will make editing much easier.<br />
<br />
<br />
= Set things up =<br />
<br />
== Further configuration steps ==<br />
<br />
These are not mandatory but will certainly make your life easier.<br />
<br />
=== Change some git settings ===<br />
<br />
In PuTTY, I suggest going through [[Git_settings#Recommended_settings|all the steps mentioned in this section]].<br />
<br />
<br />
=== Give special abilities to your system account ===<br />
<br />
* Log in to your Dreamhack (http://www.USERNAME.hack.dreamwidth.net/) using system and your password for this account.<br />
<br />
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/priv/ http://www.USERNAME.hack.dreamwidth.net/admin/priv/]. Click on 'payments' type 'system' in the User field then click on 'Make Changes'. The system account now has the ability (called 'privilege' or 'priv') to give paid time to any account.<br />
<br />
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/pay http://www.USERNAME.hack.dreamwidth.net/admin/pay]. Type 'system' in the Edit user field and click on Go. Make your account a seed one.<br />
<br />
<br />
=== Get rid of invite codes ===<br />
<br />
* In WinSCP, go to <code>/dw/ext/local/etc/</code>, and double-click on <code>config.pl</code>. Find <code>$USE_ACCT_CODES = 1;</code> and change 1 to <code>0</code>. Save your file.<br />
<br />
* If you're concerned about spam, you may want to create a promo code instead. Go to http://www.USERNAME.hack.dreamwidth.net/admin/invites/promo?state=active and click on 'Create New'. Enter a code name and a number (you can edit the number later if you're about to run out of invites).<br />
<br />
<br />
=== Customize PuTTY and Notepad++ ===<br />
<br />
See these articles for details: [[SSH_Client:_PuTTY| PuTTY]], [[Editor:_Notepad_plus_plus | Notepad++]].<br />
<br />
<br />
= Update your code =<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
Code is committed by developers all the time. You must always update your repositories before you do anything else.<br />
<br />
* Go to [[Dev_Maintenance#dwu_-_Updating_the_repos | this article]] and follow the instructions given there.<br />
<br />
* Make sure to check for updates as the script occasionally changes.<br />
<br />
: N.B. To create a new file open WinSCP, right click into the correct folder (<code>/bin</code> here) then click on New/File.<br />
<br />
<br />
= Make changes to your Dreamhack =<br />
<br />
== Find and claim issues ==<br />
<br />
<strong>--> on github.com</strong><br />
<br />
Issues are listed at https://github.com/dreamwidth/dw-free/issues and https://github.com/dreamwidth/dw-nonfree/issues. You can use the search bar at the top to browse labels.<br />
Once you've found something you like comment on the issue to 'claim' it.<br />
<br />
== Create a branch stemming from develop ==<br />
<br />
Important: in PuTTY, you can get explanations about bash commands using <code>help COMMAND</code> (e.g. <code>help cd</code>) and any git commands using <code>git COMMAND -h</code> (e.g <code>git pull -h</code>).<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* Pick the correct repository:<br />
** if you want to work in dw-free you need to be in <code>~/dw$</code>. If you're not type <code>cd $LJHOME</code>.<br />
** if you want to work in dw-nonfree you need to be in <code>~/dw/ext/dw-nonfree$</code>. If you're not type <code>cd $LJHOME/ext/dw-nonfree</code><br />
<br />
* Then make sure you're in the develop branch using the <code>checkout</code> command:<br />
<br />
<syntaxhighlight lang="bash">git checkout develop</syntaxhighlight><br />
<br />
* Now you can create a new branch specifically dedicated to the issue you want to work on:<br />
<br />
<syntaxhighlight lang="bash">git branch BRANCH_NAME</syntaxhighlight><br />
<br />
: N.B. Use the issue number and a short description as your branch name: <code>bug #xxx/short-description</code><br />
<br />
* Switch to your new branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME</syntaxhighlight><br />
<br />
* And that's it. Now you can start coding!<br />
<br />
== Work, work, work ==<br />
<br />
<strong>--> in WinSCP and your text editor</strong><br />
<br />
* In WinSCP right click to edit the file you want to work on.<br />
<br />
* Remember that the free part of the code is in <code>~/dw/*</code> while the non-free part is in <code>~/dw/ext/dw-nonfree/*</code>.<br />
<br />
* Site pages are either [[BML|.bml]] or [[TT|.tt]] files. You can find them in <code>~dw/htdocs/</code> and <code>~dw/views/</code>. They may use .pm modules and widgets, found in <code>~dw/cgi-bin/LJ/</code> and <code>~dw/cgi-bin/DW/</code>.<br />
<br />
* Text strings are in <code>~dw/htdocs/xxx.bml.text</code>, <code>~dw/views/xxx.tt.text</code>) or <code>~dw/bin/upgrading/en.dat</code>.<br />
<br />
* For more specific searches, see [[Dev_Finding_Things|this article]] on how to use <code>rgrep</code> and <code>find</code>.<br />
<br />
<br />
== Test your changes ==<br />
<br />
<strong>--> on your Dreamhack</strong><br />
<br />
Go to your Dreamhack and test. Edit the files again in WinSCP if more changes are needed. Go through these steps again to test your new changes.<br />
<br />
: N.B. In some rare instances, your changes won't go live instantly on your hack and you may need to [[Dev_Maintenance#Update_your_database|update your database first]].<br />
<br />
<br />
== Mark your changes as ready to be committed ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
Before being committed, work is moved to the index or staging area. Think of it as the "Ready? Steady?" before the "Go!". At this point nothing is definite and you can easily change things.<br />
<br />
* To add the changes you've made on a specific file:<br />
<br />
<syntaxhighlight lang="bash">git add FILE_NAME</syntaxhighlight><br />
<br />
* To add all files which have been edited or deleted at once:<br />
<br />
<syntaxhighlight lang="bash">git add -u</syntaxhighlight><br />
<br />
* To add all files which have been added, deleted or edited at once:<br />
<br />
<syntaxhighlight lang="bash">git add .</syntaxhighlight><br />
<br />
* If you realize you need to do some more work, edit the files again and use <code>add</code> when you're done. It's that simple.<br />
<br />
<br />
== Commit your changes ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* If you think you're done with your work at this point you can commit your changes:<br />
<br />
<syntaxhighlight lang="bash">git commit</syntaxhighlight><br />
<br />
* This will open the nano editor so you can type a commit message. Unfortunately, nano isn't very easy to type into (you can't use the number pad for instance) so I advise you to type your commit message in your text editor then paste it in nano (right click in PuTTY to paste).<br />
<br />
* Here's an example of commit message:<br />
<br />
<code>Bug #123. Short subject<br />
<br />
Fixes #123.<br />
<br />
Patch description<br />
<br />
Description can go on several short lines.</code><br />
<br />
* Hit Ctrl+X, 'y' then Enter to save your message.<br />
<br />
* If you you need to do some more work later you can update your commit:<br />
<br />
<syntaxhighlight lang="bash">git commit --amend</syntaxhighlight><br />
<br />
: N.B. You can also do this if you need to edit your commit message.<br />
<br />
* If you want to pace yourself or be easily able to go back to a certain point in your work you can do successive commits instead of one big final one.<br />
<br />
= Publish your code =<br />
<br />
== Push your code to your github.com repository ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
You should only push your changes to your develop branch on github.com once you're happy with your patch as things are a bit harder to change at this point. Once you've finished your work use the <code>push</code> command and the branch name:<br />
<br />
<syntaxhighlight lang="bash">git push origin BRANCH_NAME</syntaxhighlight><br />
<br />
<br />
== Request your code to be pulled into the original Dreamwidth repository ==<br />
<br />
<strong>--> on github.com</strong><br />
<br />
Go to your profile page on GitHub. Select the Public Activity tab. Spot the line where it says you've created a new branch. Click on the branch name then on Compare and Pull Request. Once you've checked things over, click on Send Pull Request on the right side.<br />
Finally, comment on the pull request to say it 'fixes #xxx' where #xxx is the issue number.<br />
<br />
: N.B. If there's an unusual delay between the moment you pushed your branch and the moment it appears on GitHub, [https://status.github.com/ check the status page].<br />
<br />
<br />
== What now? ==<br />
<br />
<strong>--> on github.com</strong><br />
<br />
* You'll get a notification once your pull request has been merged into the original develop branch, and the issue will be closed if no more work is needed.<br />
<br />
* On your profile your request will be marked as merged.<br />
<br />
* That's it! You're done. Congratulations!<br />
<br />
<br />
= Help! =<br />
<br />
If something's wrong you can always ask for help at <dwcomm>dw_dev_training</dwcomm> or on the #dreamwidth-dev [[:Category:IRC|IRC]] channel.<br />
<br />
<br />
= Reading / References =<br />
<br />
To understand things better, I suggest reading [http://guides.github.com/overviews/flow/ the GitHub Workflow guide from github.com], relevant sections of [http://rogerdudler.github.com/git-guide/index.html Git - The Simple Guide], watching part of <em>Git for Ages 4 and Up</em> ([http://www.youtube.com/watch?v=1ffBJ4sVUb4 Watch on YouTube] or [http://mirror.internode.on.net/pub/linux.conf.au/2013/mp4/Git_For_Ages_4_And_Up.mp4 Download]), and reading the first three chapters of [http://git-scm.com/book Pro Git].<br />
<br />
For lots of useful commands, see [[Git How To]].<br />
<br />
Other useful references:<br />
<br />
* [[Moving_your_Dreamwidth_installation_to_use_Github|Moving to GitHub]]<br />
* [[Dev_Maintenance|Development Maintenance]]<br />
* [http://ss64.com/bash/ Bash commands]<br />
* [[Git_Getting_Started|Git: Getting Started]]<br />
* [http://git-scm.com/book Pro Git]<br />
* [http://git-scm.com/book/commands Pro Git - Index of Commands]<br />
* [http://git-scm.com/docs Git Reference]<br />
<br />
[[Category:Dreamhack]]<br />
[[Category:Development]]<br />
[[Category:Getting Started]]<br />
[[Category:Git]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamhack_Getting_StartedDreamhack Getting Started2017-04-04T04:46:36Z<p>Sophira: Updating SSH hostname/host keys for Dreamhacks.</p>
<hr />
<div>The [http://hack.dreamwidth.net Dreamhack] service is a hosted development sandbox environment where you can do Dreamwidth development without having to have your own server. Dreamhack accounts are available free of charge for anyone who's interested in working on the Dreamwidth code.<br />
<br />
When you get your Dreamhack account first created, most of the setup will be done for you. There are still a bunch of things you should do at first to make sure that your development environment is properly set up for you to work on, though. This guide is a walkthrough of all the steps you should take (in order) when you first log into your Dreamhack account. <br />
<br />
You should also read [[Beginning dev checklist]] for more background information; if you are on Windows, [[Newbie Guide: Getting Started on Windows]] might be useful. If you wind up in difficulty, take a look at [[Dreamhack Troubleshooting]].<br />
<br />
= Get a SSH client =<br />
<br />
To connect to your Dreamhack and work on things, you'll need a program that will do SSH, or "secure shell". It lets you connect to the Dreamhack server and work with the files, which you can't do through your browser. If you're running Windows, download [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. If you're on a Mac or a Linux distribution, you won't need a separate program; the Terminal (Applications/Utilities/Terminal on the Mac) will let you connect. If you're on a Mac, you can also [[Connecting_to_the_Dreamhack_server_with_Cyberduck | use Cyberduck]].<br />
<br />
= Connect to your Dreamhack =<br />
<br />
Once you have an SSH client, you can connect to Dreamhack. In PuTTY, put "ssh-hack.dreamwidth.net" for the server, and use the username and password you were given in your welcome email. In Terminal, type:<br />
<br />
<source lang="bash">ssh dh-username@ssh-hack.dreamwidth.net</source><br />
<br />
If this is the first time you've connected to the server, your SSH client will inform you that it hasn't seen this host before, and ask you to verify the fingerprint of the host key. For '''ssh-hack.dreamwidth.net''', this fingerprint will show one of the following, depending on your SSH client:<br />
<br />
* <tt>SHA256:TAtO07wp/zu1L4lIoYPnJh9pficQUcBsl9aqZiEM6UE</tt><br />
* <tt>SHA256:jU9iFXflDW/FMRAFDaR0HMZ3zwsNxBa333A4Pl7ys1w</tt><br />
* <tt>73:10:37:bc:47:4b:24:dc:50:5f:7e:af:f7:b4:a0:b6</tt><br />
* <tt>29:18:e9:63:c5:b5:79:5c:bd:d6:3b:63:ce:7a:83:85</tt><br />
<br />
Compare the fingerprint to what you see above, and if one of the above fingerprints match, click (or type) "Yes" to connect. If you do ''not'' see the fingerprint listed above, please contact Sophira on [[IRC]] or by email.<br />
<br />
= Change your password =<br />
<br />
Change your password to something you can remember. Type:<br />
<br />
<source lang="bash">passwd</source><br />
<br />
and follow the prompts.<br />
<br />
= Set the system password =<br />
<br />
Your Dreamhack installation has a user named 'system', which has all the admin privs and owns all the system styles. The system account is the first account on the server. You need to set a password so you can log into it. Type:<br />
<br />
<source lang="bash">$LJHOME/bin/upgrading/make_system.pl</source><br />
<br />
Pick something you'll remember. (If you ever forget the system password, though, you can just run make_system.pl again and re-set it.)<br />
<br />
= Get acquainted with the command line =<br />
<br />
If you haven't used a command line before, it can be a strange experience. You may want to check out the [[Command line tutorial]] before carrying on, as it explains a few of the concepts that we'll be using in the sections below.<br />
<br />
= Edit the config files =<br />
<br />
You'll need to edit a few config files to make for easier development. Do the following:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w etc/config.pl</source><br />
<br />
(The "nano" text editor is probably the best one for new developers. If you're more experienced, or want to try something a little more powerful, check out the list of editors at the [[Configuring editors]] page.)<br />
<br />
You'll need to use the arrow keys to scroll through the file when using nano, because it won't respond to the mouse.<br />
<br />
Take a look for the following line:<br />
<br />
<source lang="bash">$USE_ACCT_CODES = 1;</source><br />
<br />
This line governs whether invite codes are used. If the value is 1, then new accounts will need invites before they can be created. If the value is 0, then anybody can create an account. You can edit this value, if you like.<br />
<br />
When you're done, press Ctrl-X to exit nano. It'll ask you if you want to save - press Y. It'll then ask you where you want to save the file. At this point, just press RETURN; you already told nano where to save it when you launched it, and pressing RETURN tells nano just to use that. You'll then find yourself back at the command line.<br />
<br />
You should also edit your <tt>$LJHOME/ext/local/etc/config-local.pl</tt> file for some other local settings:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w ext/local/etc/config-local.pl</source><br />
<br />
Values you may want to change and/or set:<br />
<br />
<source lang="bash">$SITENAME = "Some LiveJournal Site";<br />
$SITENAMESHORT = "YourSite";<br />
$SITENAMEABBREV = "YS";<br />
# these are all used in various places throughout the site</source><br />
<br />
Remember to save and exit when you're done.<br />
<br />
= Start Apache =<br />
<br />
Once all of this is done, you're ready to start Apache. Type:<br />
<br />
<source lang="bash">start-apache</source><br />
<br />
Your Dreamhack will now appear at http://www.yourusername.hack.dreamwidth.net.<br />
<br />
= Update your code regularly =<br />
<br />
Before you do any development work, it's a good idea to update your code to the most recent version. See [[Dev Maintenance]] for instructions.<br />
<br />
= Get familiar with version control =<br />
<br />
Browse through [[Git How To]] and get familiar with how things work -- bookmark it so you can refer back to each section as needed.<br />
<br />
= Hack away! =<br />
<br />
You can now start hacking! For more information, check out the [[:Category: Development]] category, especially the [[Beginning dev checklist]], [[Dev Getting Started]], and [[Programming Guidelines]] pages. If you run into problems, the [irc://irc.freenode.net/dreamwidth-dev #dreamwidth-dev] [[IRC]] channel and the <dwcomm>dw_dev_training</dwcomm> community are good places to go for help. <br />
<br />
A quick and easy way to populate your Dreamhack with lots of users is to run Sophie's [[Script:_create-users]].<br />
<br />
We're looking forward to seeing your first patch!<br />
<br />
= Stop Apache =<br />
<br />
At the end of a Dreamhack session, remember to <code>stop-apache</code> so that the Dreamhack machine isn't running too many web servers that aren't being used.<br />
<br />
= A note about workers =<br />
<br />
Some features run asynchronously. That means they don't happen immediately when they are fired off. Instead, they get queued up to run later via [[Workers]], at pre-programmed periods of time.<br />
<br />
Features that run asynchronously via workers are either:<br />
* process heavy, such as search and notifications, or<br />
* require communication with remote sites we don't control, such as crossposts and imports.<br />
<br />
If you aren't working on these features, then you don't need to worry about workers.<br />
<br />
If you are working on these features, there are two different kinds of workers: [[TheSchwartz]] and [[Gearman]]. If you need them, recent Dreamhacks are already set up to let you use TheSchwartz (and Gearman?). If your Dreamhack is very old you can set up the TheSchwartz database using:<br />
<br />
<source lang="bash">$LJHOME/bin/ljdb < /usr/share/doc/libtheschwartz-perl/schema.sql</source><br />
<br />
then restarting Apache.<br />
<br />
[[Category:Development]]<br />
[[Category:Dreamhack]]<br />
[[Category:Getting Started]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Mounting_server_directories_under_LinuxMounting server directories under Linux2017-04-04T04:44:53Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>Mostly taken straight from the [[Mounting_server_directories_on_your_Mac_through_SSHFS_with_MacFUSE|Mac equivalent page]].<br />
<br />
This will let you mount a directory on your computer so you can transparently browse, edit, and save files on a server. Basically, it makes the files on the server a part of your filesystem while you are connected. Opening and saving things will be slower than native files, but not too horrible if you have a decent internet connection speed. You also probably wouldn't want to run any scripts from these directories natively, either, as they are unlikely to work properly. These instructions are for Ubuntu, but should be easily translatable.<br />
<br />
==Install sshfs==<br />
<br />
<source lang="bash">sudo apt-get install sshfs</source><br />
<br />
or whatever your equivalent method is - you can use any command-line or GUI package manager.<br />
<br />
==Mounting==<br />
<br />
Make a local directory to mount to:<br />
<br />
<source lang="bash">mkdir dw</source><br />
<br />
(This only needs to be done the first time; the directory will be there even when sshfs is not in use, although it will be empty.)<br />
<br />
Then mount your Dreamhack to that directory:<br />
<br />
<source lang="bash">sshfs dh-user@ssh-hack.dreamwidth.net: dw -oauto_cache,reconnect</source><br />
<br />
You will need to '''replace "dh-user" with your actual Dreamhack username''', of course. This should prompt for your password. Once you have successfully connected, you should be able to access the files through the directory you mounted to, as if they were on your own computer (...but slower).<br />
<br />
==Disconnecting==<br />
<br />
To disconnect, you can use the command:<br />
<br />
<source lang="bash">fusermount -u dw</source><br />
<br />
[[Category: Development]]<br />
[[Category: Linux]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Editor:_BBEditEditor: BBEdit2017-04-04T04:44:36Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>[[Category:Editors]]<br />
<br />
[http://www.barebones.com/products/bbedit/ BBEdit] is a text editor for the Mac that also allows you to work on a remote server instead of on a local copy of the file. It includes context-sensitive highlighting, and also includes a very powerful set of one-touch HTML authoring tools (without being WYSIWYG like Dreamweaver or FrontPage). <br />
<br />
Pretty much its only downside is that it's <em>not</em> free software or shareware; it costs $125 for an individual license, and $49 if you are a student or faculty at an approved educational institution. If you can afford it, though, it's widely considered to be <em>the</em> best text editor for the Mac.<br />
<br />
* To set proper proper line endings: Go to the Preferences panel. Pick "Text Files: Saving" (you'll have to scroll for it). For "Default Line Breaks", select "Unix".<br />
<br />
* To connect to your Dreamhack, use File->Open from FTP/SFTP Server (or clover-shift-O). In the Open dialog, put <pre>ssh-hack.dreamwidth.net</pre> for the server, and make sure the "SFTP" box is checked. Put in your username and password and hit Connect. You can then open a file, edit it locally, and when you hit clover-S to save, it will save to your Dreamhack.<br />
<br />
* To save a new file to your Dreamhack, use File->Save to FTP/SFTP Server (or clover-shift-S). You can then pick the right location.<br />
<br />
* To save a file that you've created and saved locally to your Dreamhack, use File->Save a copy to FTP/SFTP Server.</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Beginning_dev_checklistBeginning dev checklist2017-04-04T04:44:20Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>{{Cleanup|text=Most of this should go into bullet points in [[Dev Getting Started]] or [[Dreamhack getting started]], and then this page can be blanked and redirected.}}<br />
<br />
<br />
== Working with a development environment ==<br />
<br />
<br />
=== Working with Unix ===<br />
<br />
The Dreamwidth code runs under Unix (specifically, Ubuntu Linux). If you've never used Unix before, you might want to read over [http://www.ee.surrey.ac.uk/Teaching/Unix/ a tutorial] on how to approach the system, how to use the command line, how to create files, delete files, move files, and other useful things. For the rest of this list, I'll assume you're familiar with the basics of directory structures. In particular, you use the symbol ~ to represent your home directory: the top-level directory that everything else goes in.<br />
<br />
=== The location of $LJHOME ===<br />
<br />
Some instructions on the wiki will mention $LJHOME (must be all caps). This is where your Dreamwidth code can be found. You can type it as-is; there's no need to replace it with anything else.<br />
<br />
On a Dreamhack, $LJHOME points to the <code>~/dw</code> directory. Thus, <code>cd $LJHOME/etc</code> (for example) is the same as <code>cd ~/dw/etc</code>, and will change your directory to ~/dw/etc.<br />
<br />
=== Accessing your files ===<br />
<br />
Once you have a development environment, you'll need to access the files on them (in order to change them). This involves downloading a program that will do SSH, or "secure shell". It lets you connect to the other site (in this case your dev server) and work with the files, which you can't do through your browser. If you're running Windows, download [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. If you're on a Mac or a Linux distribution, you won't need a separate program; the Terminal (Applications/Utilities/Terminal on the Mac) will let you connect.<br />
<br />
Use your SSH system to go to <code>ssh-hack.dreamwidth.net</code>. Enter the username and password provided in your Dreamhack setup email.<br />
<br />
===Set the system user password===<br />
<br />
Your Dreamhack installation has a user named 'system', which has all the admin privs and owns all the system styles. The system account is the first account on the server. You need to set a password so you can log into it. Type:<br />
<br />
<source lang="bash">$LJHOME/bin/upgrading/make_system.pl</source><br />
<br />
Pick something you'll remember. (If you ever forget the system password, though, you can just run make_system.pl again and re-set it.)<br />
<br />
===Set up for test users===<br />
<br />
You are probably going to want to create test users on your Dreamhack. By default your Dreamhack installation will ask for invite codes. You can generate your own invite codes on your Dreamhack, or disable this. Instructions on disabling this are [[#Allow users to register without invite codes | included further down]]. <br />
<br />
You are likely to want at least two test accounts, for example so one can subscribe to inbox/email notifications of entries posted by another. You can create test accounts as you find you need them.<br />
<br />
== Start programming ==<br />
<br />
=== Editors ===<br />
<br />
Once you've done all that, you're ready to start programming! You're going to need to use an editor: something that will let you edit the files you're working with. There are two ways you can do this:<br />
<br />
* You can download the files from your Dreamhack to your local machine, edit them, and then re-upload them.<br />
* You can edit them directly on the Dreamhack itself.<br />
<br />
If you want to edit them on the Dreamhack, you're going to need to learn one of the several Unix editors that are installed on the system. The question of <em>which</em> editor you should be using is going to be personal preference, and the "editor war" is a hotly-debated topic.<br />
<br />
For an absolute beginner, the best editor to use is probably <code>nano</code>, an open-source version of the "pico" editor. it doesn't have everything, but it is very, <em>very</em> quickly learnable. (Other editors in the server include <code>emacs</code>, <code>vim</code>, and <code>joe</code>, but <code>nano</code> is the easiest. "pico" isn't installed on the server; if you try to use it, it'll run nano instead.)<br />
<br />
=== Working with nano ===<br />
<br />
One thing you absolutely do need to keep in mind, though, is that by default nano will word-wrap the file that you're working on, and when it does this, it quietly adds *real* linebreaks to the file. This can cause trouble with generating patches, and because it looks like it's just a display word-wrap, rather than an actual word-wrap, it can take you a while to diagnose it. To prevent this from happening, when you call nano, do it with the -w flag, which will turn off auto-linebreaking for that session:<br />
<br />
<source lang="bash">nano -w filename</source><br />
<br />
You may want to make this a default by editing the nano config file:<br />
<br />
<source lang="bash">echo 'set nowrap' >> ~/.nanorc</source><br />
<br />
=== Allow users to register without invite codes ===<br />
<br />
{{Note|text=Maybe should reorganize this so this is closer up to the first setups?}}<br />
<br />
A useful first edit is to turn invite codes off in etc/config.pl, to make it quicker to set up dummy accounts for playing around. Type:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w etc/config.pl</source><br />
<br />
This will open the config file in nano. Have a skim through, as there are lots of useful options here. To turn invite codes off, scroll down to $USE_ACCT_CODES = 1 and change it to 0. To save this, use Ctrl-O and then Enter, and exit using Ctrl-X. <br />
<br />
Once you've done that, restart your hack by typing "stop-apache", then "start-apache". (Every time you change a file that ends in .pm or .pl, it's a good idea to restart Apache again to make sure the modules reload.)<br />
<br />
You can then go to http://www.yourname.hack.dreamwidth.net/ (replacing 'yourname' with the name you chose when applying for a Dreamhack) and start playing. The front page of your hack will now give you a message about being able to join without an invite code for a week, and offer a link to do so. You can ignore the "This week only" part - that's just the text that was initially used on the regular site when we first turned off invite codes.<br />
<br />
=== Or, create a promo code ===<br />
<br />
If you don't want to turn off invite codes entirely, to prevent spam account registration, you can make a "promo code" that will let you create users whenever you want, without having to generate invite codes directly.<br />
<br />
First, go to http://www.yourname.hack.dreamwidth.net/admin/priv (while logged in as the system user or another user with admin:*) and grant yourself the 'payments' priv. Then, go to http://www.yourname.hack.dreamwidth.net/admin/invites/promo. Select "Create New", check the "Active" box, and input a code (letters/numbers only; case-sensitive) and a number of accounts the code will work to create. Once you hit save, the promo code will be activated and will work the same way as an invite code will.<br />
<br />
=== Layout of the code directory ===<br />
<br />
All of the code is contained in the $LJHOME directory. On Dreamhacks, this is in: <tt>~/dw</tt>. When you make changes to the code in this directory and restart the server, your changes will show up. <br />
<br />
You can see what changes you have made by doing <code>git diff</code>: the output shows all local changes to the branch you're in since the last commit.<br />
<br />
You can revert an the original committed version of the code by [INSERT GIT INSTRUCTIONS]<br />
<br />
=== Finding what you're looking for in the code ===<br />
<br />
The code is a little ... sprawling. Finding what you're looking to change can be pretty hard. Fortunately, we have some instructions at [[Dev Finding Things]].<br />
<br />
( ...insert more about where to look for things, common use areas, how to use rgrep for fun and profit, etc ) <br />
<br />
( ...insert more about how to recover from a disaster, aka What Happens When You Break It )<br />
<br />
=== Getting back to a clean slate ===<br />
Sometimes when you're investigating an issue, you'll end up with a bunch of debug code hanging around in random files. To see all your changes, run:<br />
<br />
git status<br />
<br />
<br />
To revert all of your changes and get back to a clean slate, run:<br />
<br />
git checkout .<br />
<br />
To revert only the changes in specific files or directories, run:<br />
<br />
git checkout dir/subdir dir/file.txt<br />
<br />
<br />
<br />
[[Category: Development]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Connecting_to_the_Dreamhack_server_with_CyberduckConnecting to the Dreamhack server with Cyberduck2017-04-04T04:43:56Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Dreamhack]]<br />
<br />
(This assumes you’ve already logged in VIA terminal and changed your password, and set up your dreamhack environment.)<br />
<br />
Choose '''‘New Bookmark’''' under the menu. <br />
<br />
Under the first drop down menu, select '''sftp (SSH File Transfer Protocol)<br />
'''<br />
<br />
Give your bookmark a nickname, so you know it is for Dream-hacks.<br />
<br />
Under Server: ssh-hack.dreamwidth.net<br />
<br />
Under Username: dh-''USERNAME''<br />
<br />
<br />
Password: ''YOUR PASSWORD''<br />
<br />
<br />
Close your new book mark, and connect, give your password when it asks. :)<br />
<br />
<br />
[http://cyberduck.ch/ Cyberduck] is Mac only.</div>Sophira//wiki.dreamwidth.net/wiki/index.php/SSH_Client:_PuTTYSSH Client: PuTTY2017-04-04T04:43:41Z<p>Sophira: Updating SSH hostname for Dreamhacks.</p>
<hr />
<div>[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free Telnet and SSH ("Secure Shell") client for Windows and Linux. While Mac and Linux users have an integrated SSH program, Windows users don't and can use PuTTY to access and manage their [[Dreamhacks]].<br />
<br />
= PuTTY Configuration =<br />
<br />
* Host name is "ssh-hack.dreamwidth.net" and goes into Session.<br />
* SSH username is the dh-username given to you in your welcome email and goes into Connection/Data.<br />
<br />
= Appearance Settings =<br />
<br />
* To change the size of the window, go to Window.<br />
* To change the size of the text go to Window/Appearance.<br />
* To change the foreground and background colors go to Window/Colors.<br />
<br />
= Right-click Setting =<br />
<br />
* To restore Windows's usual right-click function, go to Window/Selection/Control use of the mouse.<br />
<br />
= Saving Settings =<br />
<br />
* Go to Session, select Default Settings and click on Save once you've changed any desired setting. Don't forget to do this every time you change anything.<br />
<br />
[[Category:Dreamhack]]<br />
[[Category:Getting Started]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2016-11-24T01:40:49Z<p>Sophira: Added "much later" as a reminderbot feature!</p>
<hr />
<div>IRC stands for [https://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [[:Category:Development|development information]], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code> (link is to webchat interface)<br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel; link is to webchat interface)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code><br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (chat.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. (You can change it easily after you connect.) <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@zorkian and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing [https://en.wikipedia.org/wiki/The_Game_(mind_game) The Game]<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Almost anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>karzilla</dwstaff> (kareila), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (zorkian) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
*** a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* It's appreciated when people describe links they share, particularly: <br />
** if you think it's going to be NSFW (the definition of "Not Safe For Work" does vary from person to person)<br />
** blatant sexual content, nudity, profanity or other words that might trip a workplace nanny-filter<br />
** auto-playing audio or video<br />
** large pages<br />
** images that aren't already captioned, audio and video that aren't already transcribed<br />
** flashing, blinking, or animated images<br />
** if using a short-URL service (tinyurl, bit.ly, and the like)<br />
** known timesinks like TVTropes<br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest, or as part of a quote. <br />
* The #dreamwidth channels include people of all technical levels, from very experienced developers to complete neophytes, from advanced power users to complete neophytes, and sometimes the odd person who may not use Dreamwidth at all. In some cases, power users who have been around a while may know more about Dreamwidth's architecture than senior developers who have no experience with the Dreamwidth codebase. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
** Check your assumptions about the other person's technical level. Someone from a demographic group where software developers are rare may be that 1 in 5,000 (or however many); someone who has a generally solid understanding of the technical world may happen to have a gap in that specific spot. [http://xkcd.com/1053/ Even if "everybody knows it".] <br />
** Asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is usually appropriate. <br />
** Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. <br />
** When guiding someone through a process that may be unfamiliar to them, try to check in with them regularly to make sure that they're following along ok/you're still on the same page/if they might want a more advanced explanation. <br />
** Don't be rude or patronizing when explaining something. There's always potential for miscommunication, and technical explanations between mismatched skill levels can be especially delicate. <br />
***If you don't feel you can refrain from being rude and patronizing on purpose, you should bow out of the conversation. <br />
*** Statements like "RTFM" (Read the Fucking Manual) and sites like lmgtfy.com and its ilk are used condescendingly more often than not; try another phrasing or method. <br />
*** A "sorry, I phrased that badly" often helps when you didn't mean to be rude but it came across that way anyway. <br />
* Take care when expressing physical interaction. #dreamwidth is not a roleplay channel, and actions affecting other people can and will be interpreted similar to actual physical interaction. <br />
** Try "offers hugs" instead of "hugs", as that gives the other person the chance to accept or decline<br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
* Private messages: site staff (and quite a few others) are open to an initial query being sent without asking in channel first. Therefore, there is no channel rule saying you must ask before sending a PM. However: <br />
** Is it something for that person specifically, or is it something that other staff members/volunteers might be able to answer? (If so, you might want to ask in channel if anyone is around who has time to answer questions about that topic.) <br />
** Many people will idle in channel, so an immediate response is not guaranteed. <br />
** If a specific person tells you of their preferences for PMs, that overrides general rules. <br />
* Try to use the [[Escalation]] procedures if something goes wrong. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== Getting Help === <br />
If something goes wrong in IRC, get help by: <br />
<br />
* Asking for help in channel <br />
* Asking for help in an adjacent channel (hopefully with staff or delegates present) where the problem isn't currently happening<br />
* Sending a private message to someone with "staff" or "delegate" in their hostmask (note: everyone has to sleep sometime, and sometimes clients lose private messages; if you've had no response within a reasonable amount of time, try someone else). "Can we talk", etc., is rarely a useful initial message; "There's a problem with ___" or "The current discussion about ____ is disturbing and I feel it's off-topic" is much better. <br />
* If no #dreamwidth staff/delegates are around and there's an urgent problem, [http://freenode.net/faq.shtml#helpfromstaff Freenode staff are +v in the #freenode channel]<br />
<br />
For Dreamwidth technical support: <br />
<br />
* Questions in #dreamwidth ("Can anybody help me figure out this setting?") are okay<br />
* The official Dreamwidth technical support area is [http://www.dreamwidth.org/support/ www.dreamwidth.org/support], and there is a [http://www.dreamwidth.org/support/faqbrowse?faqid=242 guide to using Dreamwidth technical support] if you're curious about the process<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, [[IRC/welcoming|welcoming]] place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [https://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or [https://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour (or whenever they notice it's been over 1 hour since the last announcement) is encouraged to announce a channel [[stretch break]]. These announcements sometimes [http://qdb.dreamwidth.net/dw/683 give rise to assorted silliness].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and theoretically zorkian. DWSpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
DWSpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> or <code>DWSpamBot: spam</code> makes DWSpamBot list the current contents of the queue. It sometimes pings out and fails to return. When this happens, a request to exor674 to bite spambot (after a reasonable time, like 20 minutes, has lapsed without it returning) will let them know it needs action. (Note that to work, that request needs to include the name "exor674"; something along the lines of <code>exor674, please bite spambot?</code> is suggested.)<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-bitch ===<br />
Open access but officially unofficial. <br />
<br />
This channel combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics and religion, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Administrated by <dwstaff>karzilla</dwstaff> and monitored by kaberett. <br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and zorkian. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy was a bot that notified the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
Bugsy is currently out to pasture while we get to grips with [[Github Issues]].<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-bitch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dreamwidth.net/wiki/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with [[#Public Infobot Commands|one of the commands above]]. The symbol '''=''' can be used in place of '''is'''. <br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
* qdb<br />
* jargon<br />
* welcome<br />
* pep talk<br />
* [[IRC/Teleporter|teleporter]]<br />
* escalation<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally'''<br />
<br />
will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-bitch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <delay> <thing>'''<br />
* '''Remind me at &lt;time> <zone> <thing>'''<br />
* '''Remind me again in <delay>'''<br />
* '''Remind me again at &lt;time> <zone>'''<br />
<br />
Reminderbot only understands numbers written as Arabic numerals, not as words. Reminderbot will understand 5, but not five. <br />
<br />
Shortcuts:<br />
<br />
Instead of '''in <delay>''' or '''at &lt;time> <zone>''', you can use:<br />
<br />
* '''soon''': after a random interval between 5 minutes and 2 hours.<br />
* '''later''': after a random interval between 1 and 24 hours.<br />
* '''much later''' (or '''muchlater'''): after a random interval between 12 hours and 7 days.<br />
<br />
Examples: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
* '''Remind me again at 5:30pm PDT'''<br />
* '''Remind me later Not everyone is a fucking asshole.'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-ParseDate-2015.103/lib/Time/ParseDate.pm - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth, #dreamwidth-bitch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-bitch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
== Delegate IRC Commands ==<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: Development]]<br />
[[Category: Support]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2016-11-24T00:55:35Z<p>Sophira: Updating reminderbot parser link.</p>
<hr />
<div>IRC stands for [https://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [[:Category:Development|development information]], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code> (link is to webchat interface)<br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel; link is to webchat interface)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code><br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (chat.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. (You can change it easily after you connect.) <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@zorkian and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing [https://en.wikipedia.org/wiki/The_Game_(mind_game) The Game]<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Almost anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>karzilla</dwstaff> (kareila), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (zorkian) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
*** a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* It's appreciated when people describe links they share, particularly: <br />
** if you think it's going to be NSFW (the definition of "Not Safe For Work" does vary from person to person)<br />
** blatant sexual content, nudity, profanity or other words that might trip a workplace nanny-filter<br />
** auto-playing audio or video<br />
** large pages<br />
** images that aren't already captioned, audio and video that aren't already transcribed<br />
** flashing, blinking, or animated images<br />
** if using a short-URL service (tinyurl, bit.ly, and the like)<br />
** known timesinks like TVTropes<br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest, or as part of a quote. <br />
* The #dreamwidth channels include people of all technical levels, from very experienced developers to complete neophytes, from advanced power users to complete neophytes, and sometimes the odd person who may not use Dreamwidth at all. In some cases, power users who have been around a while may know more about Dreamwidth's architecture than senior developers who have no experience with the Dreamwidth codebase. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
** Check your assumptions about the other person's technical level. Someone from a demographic group where software developers are rare may be that 1 in 5,000 (or however many); someone who has a generally solid understanding of the technical world may happen to have a gap in that specific spot. [http://xkcd.com/1053/ Even if "everybody knows it".] <br />
** Asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is usually appropriate. <br />
** Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. <br />
** When guiding someone through a process that may be unfamiliar to them, try to check in with them regularly to make sure that they're following along ok/you're still on the same page/if they might want a more advanced explanation. <br />
** Don't be rude or patronizing when explaining something. There's always potential for miscommunication, and technical explanations between mismatched skill levels can be especially delicate. <br />
***If you don't feel you can refrain from being rude and patronizing on purpose, you should bow out of the conversation. <br />
*** Statements like "RTFM" (Read the Fucking Manual) and sites like lmgtfy.com and its ilk are used condescendingly more often than not; try another phrasing or method. <br />
*** A "sorry, I phrased that badly" often helps when you didn't mean to be rude but it came across that way anyway. <br />
* Take care when expressing physical interaction. #dreamwidth is not a roleplay channel, and actions affecting other people can and will be interpreted similar to actual physical interaction. <br />
** Try "offers hugs" instead of "hugs", as that gives the other person the chance to accept or decline<br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
* Private messages: site staff (and quite a few others) are open to an initial query being sent without asking in channel first. Therefore, there is no channel rule saying you must ask before sending a PM. However: <br />
** Is it something for that person specifically, or is it something that other staff members/volunteers might be able to answer? (If so, you might want to ask in channel if anyone is around who has time to answer questions about that topic.) <br />
** Many people will idle in channel, so an immediate response is not guaranteed. <br />
** If a specific person tells you of their preferences for PMs, that overrides general rules. <br />
* Try to use the [[Escalation]] procedures if something goes wrong. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== Getting Help === <br />
If something goes wrong in IRC, get help by: <br />
<br />
* Asking for help in channel <br />
* Asking for help in an adjacent channel (hopefully with staff or delegates present) where the problem isn't currently happening<br />
* Sending a private message to someone with "staff" or "delegate" in their hostmask (note: everyone has to sleep sometime, and sometimes clients lose private messages; if you've had no response within a reasonable amount of time, try someone else). "Can we talk", etc., is rarely a useful initial message; "There's a problem with ___" or "The current discussion about ____ is disturbing and I feel it's off-topic" is much better. <br />
* If no #dreamwidth staff/delegates are around and there's an urgent problem, [http://freenode.net/faq.shtml#helpfromstaff Freenode staff are +v in the #freenode channel]<br />
<br />
For Dreamwidth technical support: <br />
<br />
* Questions in #dreamwidth ("Can anybody help me figure out this setting?") are okay<br />
* The official Dreamwidth technical support area is [http://www.dreamwidth.org/support/ www.dreamwidth.org/support], and there is a [http://www.dreamwidth.org/support/faqbrowse?faqid=242 guide to using Dreamwidth technical support] if you're curious about the process<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, [[IRC/welcoming|welcoming]] place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [https://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or [https://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour (or whenever they notice it's been over 1 hour since the last announcement) is encouraged to announce a channel [[stretch break]]. These announcements sometimes [http://qdb.dreamwidth.net/dw/683 give rise to assorted silliness].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and theoretically zorkian. DWSpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
DWSpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> or <code>DWSpamBot: spam</code> makes DWSpamBot list the current contents of the queue. It sometimes pings out and fails to return. When this happens, a request to exor674 to bite spambot (after a reasonable time, like 20 minutes, has lapsed without it returning) will let them know it needs action. (Note that to work, that request needs to include the name "exor674"; something along the lines of <code>exor674, please bite spambot?</code> is suggested.)<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-bitch ===<br />
Open access but officially unofficial. <br />
<br />
This channel combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics and religion, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Administrated by <dwstaff>karzilla</dwstaff> and monitored by kaberett. <br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and zorkian. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy was a bot that notified the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
Bugsy is currently out to pasture while we get to grips with [[Github Issues]].<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-bitch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dreamwidth.net/wiki/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with [[#Public Infobot Commands|one of the commands above]]. The symbol '''=''' can be used in place of '''is'''. <br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
* qdb<br />
* jargon<br />
* welcome<br />
* pep talk<br />
* [[IRC/Teleporter|teleporter]]<br />
* escalation<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally'''<br />
<br />
will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-bitch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <delay> <thing>'''<br />
* '''Remind me at &lt;time> <zone> <thing>'''<br />
* '''Remind me again in <delay>'''<br />
* '''Remind me again at &lt;time> <zone>'''<br />
<br />
Reminderbot only understands numbers written as Arabic numerals, not as words. Reminderbot will understand 5, but not five. <br />
<br />
Shortcuts:<br />
<br />
Instead of '''in <delay>''' or '''at &lt;time> <zone>''', you can use:<br />
<br />
* '''soon''': after a random interval between 5 minutes and 2 hours.<br />
* '''later''': after a random interval between 1 and 24 hours.<br />
<br />
Examples: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
* '''Remind me again at 5:30pm PDT'''<br />
* '''Remind me later Not everyone is a fucking asshole.'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-ParseDate-2015.103/lib/Time/ParseDate.pm - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth, #dreamwidth-bitch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-bitch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
== Delegate IRC Commands ==<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: Development]]<br />
[[Category: Support]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamhack_Getting_StartedDreamhack Getting Started2016-09-21T20:34:52Z<p>Sophira: /* Connect to your Dreamhack */ Adding information on the SSH host key.</p>
<hr />
<div>The [http://hack.dreamwidth.net Dreamhack] service is a hosted development sandbox environment where you can do Dreamwidth development without having to have your own server. Dreamhack accounts are available free of charge for anyone who's interested in working on the Dreamwidth code.<br />
<br />
When you get your Dreamhack account first created, most of the setup will be done for you. There are still a bunch of things you should do at first to make sure that your development environment is properly set up for you to work on, though. This guide is a walkthrough of all the steps you should take (in order) when you first log into your Dreamhack account. <br />
<br />
You should also read [[Beginning dev checklist]] for more background information; if you are on Windows, [[Newbie Guide: Getting Started on Windows]] might be useful. If you wind up in difficulty, take a look at [[Dreamhack Troubleshooting]].<br />
<br />
= Get a SSH client =<br />
<br />
To connect to your Dreamhack and work on things, you'll need a program that will do SSH, or "secure shell". It lets you connect to the Dreamhack server and work with the files, which you can't do through your browser. If you're running Windows, download [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. If you're on a Mac or a Linux distribution, you won't need a separate program; the Terminal (Applications/Utilities/Terminal on the Mac) will let you connect. If you're on a Mac, you can also [[Connecting_to_the_Dreamhack_server_with_Cyberduck | use Cyberduck]].<br />
<br />
= Connect to your Dreamhack =<br />
<br />
Once you have an SSH client, you can connect to Dreamhack. In PuTTY, put "hack.dreamwidth.net" for the server, and use the username and password you were given in your welcome email. In Terminal, type:<br />
<br />
<source lang="bash">ssh dh-username@hack.dreamwidth.net</source><br />
<br />
If this is the first time you've connected to the server, your SSH client will inform you that it hasn't seen this host before, and ask you to verify the fingerprint of the host key. For '''hack.dreamwidth.net''', this fingerprint will show one of the following, depending on your SSH client:<br />
<br />
* <tt>ed:e2:9d:86:4b:8e:a5:a9:ed:12:fc:ed:16:73:bd:c7</tt><br />
* <tt>SHA256:diM7UFFFywhe5bJHuam1svTSuXEuVN1kmaDyT6Yjri0</tt><br />
<br />
Compare the fingerprint to what you see above, and if one of the above fingerprints match, click (or type) "Yes" to connect. If you do ''not'' see the fingerprint listed above, please contact Sophira on [[IRC]] or by email.<br />
<br />
= Change your password =<br />
<br />
Change your password to something you can remember. Type:<br />
<br />
<source lang="bash">passwd</source><br />
<br />
and follow the prompts.<br />
<br />
= Set the system password =<br />
<br />
Your Dreamhack installation has a user named 'system', which has all the admin privs and owns all the system styles. The system account is the first account on the server. You need to set a password so you can log into it. Type:<br />
<br />
<source lang="bash">$LJHOME/bin/upgrading/make_system.pl</source><br />
<br />
Pick something you'll remember. (If you ever forget the system password, though, you can just run make_system.pl again and re-set it.)<br />
<br />
= Get acquainted with the command line =<br />
<br />
If you haven't used a command line before, it can be a strange experience. You may want to check out the [[Command line tutorial]] before carrying on, as it explains a few of the concepts that we'll be using in the sections below.<br />
<br />
= Edit the config files =<br />
<br />
You'll need to edit a few config files to make for easier development. Do the following:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w etc/config.pl</source><br />
<br />
(The "nano" text editor is probably the best one for new developers. If you're more experienced, or want to try something a little more powerful, check out the list of editors at the [[Configuring editors]] page.)<br />
<br />
You'll need to use the arrow keys to scroll through the file when using nano, because it won't respond to the mouse.<br />
<br />
Take a look for the following line:<br />
<br />
<source lang="bash">$USE_ACCT_CODES = 1;</source><br />
<br />
This line governs whether invite codes are used. If the value is 1, then new accounts will need invites before they can be created. If the value is 0, then anybody can create an account. You can edit this value, if you like.<br />
<br />
When you're done, press Ctrl-X to exit nano. It'll ask you if you want to save - press Y. It'll then ask you where you want to save the file. At this point, just press RETURN; you already told nano where to save it when you launched it, and pressing RETURN tells nano just to use that. You'll then find yourself back at the command line.<br />
<br />
You should also edit your <tt>$LJHOME/ext/local/etc/config-local.pl</tt> file for some other local settings:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w ext/local/etc/config-local.pl</source><br />
<br />
Values you may want to change and/or set:<br />
<br />
<source lang="bash">$SITENAME = "Some LiveJournal Site";<br />
$SITENAMESHORT = "YourSite";<br />
$SITENAMEABBREV = "YS";<br />
# these are all used in various places throughout the site</source><br />
<br />
Remember to save and exit when you're done.<br />
<br />
= Start Apache =<br />
<br />
Once all of this is done, you're ready to start Apache. Type:<br />
<br />
<source lang="bash">start-apache</source><br />
<br />
Your Dreamhack will now appear at http://www.yourusername.hack.dreamwidth.net.<br />
<br />
= Update your code regularly =<br />
<br />
Before you do any development work, it's a good idea to update your code to the most recent version. See [[Dev Maintenance]] for instructions.<br />
<br />
= Get familiar with version control =<br />
<br />
Browse through [[Git How To]] and get familiar with how things work -- bookmark it so you can refer back to each section as needed.<br />
<br />
= Hack away! =<br />
<br />
You can now start hacking! For more information, check out the [[:Category: Development]] category, especially the [[Beginning dev checklist]], [[Dev Getting Started]], and [[Programming Guidelines]] pages. If you run into problems, the [irc://irc.freenode.net/dreamwidth-dev #dreamwidth-dev] [[IRC]] channel and the <dwcomm>dw_dev_training</dwcomm> community are good places to go for help. <br />
<br />
A quick and easy way to populate your Dreamhack with lots of users is to run Sophie's [[Script:_create-users]].<br />
<br />
We're looking forward to seeing your first patch!<br />
<br />
= Stop Apache =<br />
<br />
At the end of a Dreamhack session, remember to <code>stop-apache</code> so that the Dreamhack machine isn't running too many web servers that aren't being used.<br />
<br />
= A note about workers =<br />
<br />
Some features run asynchronously. That means they don't happen immediately when they are fired off. Instead, they get queued up to run later via [[Workers]], at pre-programmed periods of time.<br />
<br />
Features that run asynchronously via workers are either:<br />
* process heavy, such as search and notifications, or<br />
* require communication with remote sites we don't control, such as crossposts and imports.<br />
<br />
If you aren't working on these features, then you don't need to worry about workers.<br />
<br />
If you are working on these features, there are two different kinds of workers: [[TheSchwartz]] and [[Gearman]]. If you need them, recent Dreamhacks are already set up to let you use TheSchwartz (and Gearman?). If your Dreamhack is very old you can set up the TheSchwartz database using:<br />
<br />
<source lang="bash">$LJHOME/bin/ljdb < /usr/share/doc/libtheschwartz-perl/schema.sql</source><br />
<br />
then restarting Apache.<br />
<br />
[[Category:Development]]<br />
[[Category:Dreamhack]]<br />
[[Category:Getting Started]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_TimelineDreamwidth Timeline2016-08-22T16:27:49Z<p>Sophira: /* April 2010 */ Why yes, I do have a more exact date! I didn't see this until just now, or I'd have answered it sooner.</p>
<hr />
<div>{{Expand|text=This should be a timeline of DW's conception. Should probably also include LJ actions as well that drove DW's formation.}}<br />
<br />
A more complete history of LJ can be found on [[Wikipedia:Timeline of LiveJournal]].<br />
<br />
= LJ History =<br />
<br />
== 1999 ==<br />
<br />
* 1999-03 -- <ljuser>brad</ljuser> starts LJ<br />
<br />
== 2001 ==<br />
<br />
* 2001-03-24 -- Brad announces [http://news.livejournal.com/35752.html LJ is open source]<br />
* 2001-05 -- LJ clone [http://www.deadjournal.com/ DeadJournal] is started<br />
* 2001-11 -- LJ clone [http://www.insanejournal.com/ InsaneJournal] is started<br />
<br />
== 2003 ==<br />
<br />
* 2003-02-05 -- <ljuser>bradfitz</ljuser> [http://news.livejournal.com/63413.html announces strict by-day rate limiting on entries (to curb a spammer influx)]. <br />
* 2003-02-05 -- Over the next few days, users react to the user impact of strict rate limiting of entries (including entries to communities), with over 2000 comments on the first news post and 1,000-some on the second. <br />
* 2003-02-07 -- <ljuser>bradfitz</ljuser> [http://news.livejournal.com/63413.html?thread=4137141#t4137141 says] "I would never advertise on LJ. That's so 1994."<br />
* 2003-03 -- LJ clone [http://www.journalfen.net/ JournalFen] is started<br />
* This is also the year that fandom_wank is TOSed from LiveJournal, TOSed from Blurty, and ends up at JournalFen.<br />
<br />
== 2004 ==<br />
<br />
* 2004-01 -- Mark Smith hired by LiveJournal as a developer: http://news.livejournal.com/75899.html<br />
<br />
== 2005 ==<br />
<br />
* 2005-01-05 -- [http://news.livejournal.com/82926.html Big news... Six Apart and LiveJournal!] -- Six Apart purchases LiveJournal<br />
<br />
== 2006 ==<br />
<br />
* 2006-04-18 -- [http://news.livejournal.com/91919.html Introducing a new account level] -- The introduction of Sponsored+, later to become Plus. This account level includes advertisements. <br />
* May/June -- Breastfeeding strike<br />
* 2006-09-26 -- [http://community.livejournal.com/lj_biz/237534.html Sponsored Content] -- Sponsored accounts and features come into being<br />
* 2006-10-18 -- [http://news.livejournal.com/94469.html LJ and SUP] -- Six Apart turns over the Russian side of LJ to SUP<br />
<br />
== 2007 ==<br />
<br />
* 2007-05-29 -- Strikethrough, Phase I<br />
* 2007-06-21 -- <ljlink href="http://synecdochic.livejournal.com/139024.html">Hypothetically, let's say that you had a chance to sit down with the person who's going to be the future buck-stops-here decision-maker for LJ.</ljlink> <br />
* 2007-07-15 -- <ljlink href="http://synecdochic.livejournal.com/145026.html">the internet is serious business</ljlink> -- <ljuser>synecdochic</ljuser> announces she is quitting employment at LJ and her last day is July 27th.<br />
* 2007-08-02 -- Strikethrough, Phase II<br />
* 2007-08 -- LJ Clone Scribblet is born<br />
* 2007-12-12 -- [http://www.sixapart.com/blog/2007/12/six_apart_annou.html Six Apart Announces New Home for LiveJournal] -- Sale to SUP<br />
* 2007-12-07ish -- GreatestJournal diaspora starts. GJ users are told to start migrating to another site.<br />
* 2007-12-19 -- Jason Shellen joins LiveJournal as VP of Product Development: http://blog.shellen.com/2007/12/im-joining-livejournal-as-vp-of-product.asp<br />
<br />
== Early 2008 ==<br />
<br />
* 2008-01 -- Mark goes to work for Mozilla http://blog.mozilla.com/mark/2008/01/<br />
<br />
= Pre-Dreamwidth -- ie, Hypothetical Journal =<br />
<br />
== March 2008 ==<br />
<br />
* 2008-03-12 -- [http://news.livejournal.com/106731.html?thread=68451051#t68451051 The 100th Day] -- Removal of Basic option for new accounts created. See also <ljlink href="http://synecdochic.livejournal.com/203464.html">I feel very, very, very fucking sorry for certain people today.</ljlink>.<br />
* 2008-03, 15-17 -- Interest blocking from the Top 100 list discovered and then removed.<br />
* 2008-03-21 -- [http://synecdochic.livejournal.com/205203.html totally hypothetical no really i swear] -- Poll gauging people's interest in a hypothetical journalling service.<br />
* 2008-03-26 -- Jason Shellen leaves LiveJournal http://twitter.com/shellen/statuses/777452202<br />
<br />
== April 2008 ==<br />
<br />
* 2008-04-02 -- <ljuser>tupshin</ljuser>'s journal created. <br />
* 2008-04-06 -- First 4 Dreamwidth accounts created. http://www.dreamwidth.org/stats/stats.txt<br />
* 2008-04-07 -- <ljuser>twocorpses</ljuser> [http://community.livejournal.com/scribblit/16789.html hands the Scribblit journal service over to Kit, keeping rights to the Scribblit name herself.]<br />
* 2008-04-08 -- <ljuser>popefelix</ljuser> [http://community.livejournal.com/scribblit/17046.html takes over administration of the site formerly known as Scribblit]. <br />
* 2008-04-19 -- [http://www.inksome.com/users/staff_kit/5795.html The Site Formerly Known as Scribblit changes] to [http://www.inksome.com/ Inksome]<br />
<br />
== May 2008 ==<br />
<br />
* 2008-05 -- Inksome opens to public paid accounts<br />
* 2008-05-02 -- New LiveJournal dev manager <ljuser>tupshin</ljuser> introduces himself in his journal: http://tupshin.livejournal.com/1298.html<br />
<br />
= Dreamwidth Development =<br />
<br />
== June 2008 ==<br />
<br />
* 2008-06-11 -- [http://synecdochic.livejournal.com/226141.html Announcing Dreamwidth Studios. Coming Summer 2008.] -- The announcement of DW's conception. <br />
* 2008-06-16 -- [http://synecdochic.livejournal.com/228004.html Poll: Mood Themes] -- Poll about mood themes.<br />
* 2008-06-13 -- [http://synecdochic.livejournal.com/227127.html S2 Styles Poll.] -- Poll about S2 layouts.<br />
* 2008-06-24 -- [http://synecdochic.livejournal.com/230481.html straw poll #19384] -- Poll about top-level menu items in the LJ scheme.<br />
<br />
== July 2008 ==<br />
<br />
* 2008-07-02 -- [http://synecdochic.livejournal.com/233088.html Dreamwidth needs mood themes!] -- a public call for people to design mood themes.<br />
* 2008-07-30 -- [http://synecdochic.livejournal.com/243180.html I keep forgetting!] and [http://synecdochic.livejournal.com/243536.html this] -- DW is open for volunteer development.<br />
<br />
== August 2008 == <br />
<br />
* 2008-08-08 -- [http://qdb.dreamwidth.net/dw/1 First quote in #dw IRC QDB] -- A quotes database for Dreamwidth's IRC channels is opened on qdb.zhzh.org, and the first quote appears. (QDB is later moved.)<br />
<br />
== December 2008 ==<br />
* 2008-12-01 -- Mark starts at Google: http://xb95.dreamwidth.org/624464.html<br />
<br />
== January 2009 ==<br />
<br />
* 2009-01-06 -- [http://community.livejournal.com/no_lj_ads/83519.html The Grim Purge] -- LJ lays off half of the San Francisco office employees, including the entire design team. Dreamwidth kicks into high gear: <br />
** [http://xb95.dreamwidth.org/627418.html Rest In Peace] (<dwuser>xb95</dwuser>)<br />
** <ljlink href="http://synecdochic.livejournal.com/302379.html">FYI</ljlink>.<br />
* 2009-01-07 -- GreatestJournal dies completely, after having limped along in zombie form for the past six months.<br />
<br />
= Dreamwidth Begins =<br />
==2009==<br />
=== February 2009 ===<br />
<br />
* 2009-02-14 -- [http://lists.dwscoalition.org/pipermail/dw-progress/2009-February/000011.html Closed beta launch]. Accounts are given to the beta testers and testing begins.<br />
* 2009-02-16 -- [http://dw-news.dreamwidth.org/506.html dw-progress: 16 February 2009] <dwcomm>dw-news</dwcomm> comes into use.<br />
* 2009-02-28 -- scans_daily TOSed from LiveJournal<br />
<br />
=== March 2009 ===<br />
<br />
* 2009-03-09 -- [http://dw-news.dreamwidth.org/1449.html Progress Report: 9 March 2009] -- First code tour (list of resolved bugs)<br />
* 2009-03-16 -- [http://dw-news.dreamwidth.org/1711.html Progress Report: March 16, 2009] -- Mention of "code bootcamp" (#dw_kindergarten) <br />
* 2009-03-23 -- [http://dw-news.dreamwidth.org/1811.html Progress Report: 23 March 2009] -- core2 style system backend released. <br />
* 2009-03-26 -- [http://dw-news.dreamwidth.org/2173.html Open Beta Launch Date Set] -- Date of 2009-04-30 (evening, EST) set for open beta; two-phase seed account sale announced. <br />
* 2009-03-30 -- [http://dw-news.dreamwidth.org/2421.html Progress Report: 30 March 2009]<br />
<br />
=== April 2009 === <br />
<br />
* 2009-04-07 -- http://dw-news.dreamwidth.org/2666.html<br />
* 2009-04-08 -- http://dw-news.dreamwidth.org/2826.html<br />
* 2009-04-14 -- LJ Support IRC moves to its own server: http://community.livejournal.com/irctownhall/8069.html<br />
(lots of missing stuff goes here)<br />
* 2009-04-30 -- Open beta launch.<br />
<br />
(lots of missing stuff goes here)<br />
<br />
=== May 2009 ===<br />
* 2009-05-01 - peak of 54663 new accounts created in one day (includes OpenID from journal imports). http://www.dreamwidth.org/stats/stats.txt <br />
* 2009-05-07 - A total of 175,846 accounts were created in the first week of open beta. <br />
* Mark and Janine married; ceremony performed by Denise<br />
* 2009-05-31 - A total of 258,616 accounts were created in the first month of open beta, including the accounts from the first week (includes OpenID from journal imports). <br />
(lots of missing stuff goes here)<br />
<br />
=== June 2009 ===<br />
<br />
=== July 2009 ===<br />
<br />
=== August 2009 ===<br />
<br />
=== September 2009 === <br />
* 2009-09-28 - dw-news (regular update): http://dw-news.dreamwidth.org/11791.html<br />
<br />
=== October 2009 === <br />
* 2009-10-05 -- dw-news: denise and sarah engaged; mark working full-time for Dreamwidth; : http://dw-news.dreamwidth.org/12240.html<br />
* 2009-10-12 -- dw-news: from last code push: autocrosspost not just from site & sticky entries; search feedback: http://dw-news.dreamwidth.org/12509.html<br />
* 2009-10-14 -- dw-news: positive feedback loop between crossposter and importer (now fixed): http://dw-news.dreamwidth.org/12724.html<br />
* 2009-10-19 -- dw-news: site search released in last code push: http://dw-news.dreamwidth.org/12895.html<br />
* 2009-10-22 -- <ljuser>tupshin</ljuser>'s departure from LiveJournal staff announced to LiveJournal Support: http://community.livejournal.com/lj_support/795054.html<br />
* 2009-10-23 -- scans_daily [http://asylums.insanejournal.com/scans_daily/1126436.html broaches the possibility of moving to Dreamwidth to their members].<br />
* 2009-10-26 -- dw_news: From Sunday's code push: new-member welcome entry for comms & all-activity subscriptions for community admins; paid account discount to end Nov 1; feedback solicited about invite codes; farewell to Tupshin: http://dw-news.dreamwidth.org/13069.html<br />
<br />
=== November 2009 ===<br />
* 2009-11-02 -- dw-news update: 1500 resolved bugs; icon limits increased; post-by-email to all users; latest page created; Mark tries NaNoWriMo; posting in dw_codesharing opened to non-members: http://dw-news.dreamwidth.org/13432.html <br />
:New icon limits<br />
:Free accounts: 15 icons<br />
:Paid acounts: 100 icons<br />
:Premium paid/Seed accounts: 250 icons<br />
* 2009-11-09 -- dw_news update: http://dw-news.dreamwidth.org/13683.html<br />
* 2009-11-14 -- IJ scans_daily [http://asylums.insanejournal.com/scans_daily/1231927.html closed and moved to Dreamwidth]. <br />
* 2009-11-16 -- dw_news update: AO3.org in open beta; new accounts to use Skittlish Dreams blue: http://dw-news.dreamwidth.org/13864.html<br />
* 2009-11-23 -- dw_news update: update time button for entry posting for next code push; 40 suggestions implemented (25% of suggestions taken into bugzilla); http://dw-news.dreamwidth.org/14312.html<br />
* 2009-11-30 -- dw_news update: denise's first appearance in a published anthology; admin-only security & icon tag renames for next code push; high not-spam reports; actually 49 suggestions implemented (30%): http://dw-news.dreamwidth.org/14528.html<br />
<br />
=== December 2009 ===<br />
* 2009-12-07 -- <dwcomm>dw_news</dwcomm> update: holiday 6+2 month sale pre-announced; live in last code push: icon keyword renaming, admin-only community entries, active entries module: http://dw-news.dreamwidth.org/14833.html<br />
* 2009-12-15 -- dw_news update: Holiday promotion live; NZ and AU visits announced; deleted account purges planned; live in last code push: edit reason for comments: http://dw-news.dreamwidth.org/14987.html<br />
* 2009-12-21 -- dw_news update: live in last code push: [http://www.dreamwidth.org/?usescheme=gradation-vertical-local Gradation Vertical sitescheme]: http://dw-news.dreamwidth.org/15300.html<br />
* 2009-12-29 -- dw_news update: http://dw-news.dreamwidth.org/15610.html<br />
<br />
==2010==<br />
=== January 2010 ===<br />
http://www.linuxplanet.com/linuxplanet/reports/6939/1/<br />
* 2010-01-05 -- dw_news update: purging deleted accounts to begin soon, reminder on icon poll, end of 6+2 paid time promo, <dwuser>denise</dwuser>'s birthday and call for Harry/Draco fic recommendations: http://dw-news.dreamwidth.org/15633.html<br />
* 2010-01-12 -- dw_news update: code push: comment screening updated, popular subscriptions page http://www.dreamwidth.org/tools/popsubscriptions, more inbox filters, every-time password entry for crosspost: http://dw-news.dreamwidth.org/16019.html<br />
* 2010-01-14 -- dw_news update: Account security and important notes: troll attack: http://dw-news.dreamwidth.org/16338.html<br />
* 2010-01-15 -- dw_news update: update on current events: switch from PayPal: http://dw-news.dreamwidth.org/16590.html<br />
* 2010-01-19 -- dw_news update: Attending http://www.lca2010.org.nz/ http://dw-news.dreamwidth.org/16775.html<br />
* 2010-01-26 -- dw_news update: Denise back from NZ; code: community admins can close polls; no alternative to PayPal yet: http://dw-news.dreamwidth.org/17121.html<br />
<br />
=== February 2010 ===<br />
* 2010-02-05 -- dw_news update: holiday promotion *actually* turned off; Google Checkout in place; email forwarding spam filter tweak: http://dw-news.dreamwidth.org/17231.html<br />
* 2010-02-16 -- dw_news update: cross-site reading discussion, community importing, suggestions process, update page update wireframe complete, mockup to happen: http://dw-news.dreamwidth.org/17591.html<br />
* 2010-02-22 -- dw_news update: Google Checkout no longer active; metadata saved in emergency draft recovery; fu to work for DW full-time: http://dw-news.dreamwidth.org/17858.html<br />
<br />
=== March 2010 ===<br />
* 2010-03-02 -- dw_news update: suggestions hackathon, payments update: http://dw-news.dreamwidth.org/17942.html<br />
* 2010-03-05 -- Spike in account creations, 1714 new accounts in one day. <br />
* 2010-03-07 -- "Six Weeks for Dreamwidth" festival proposed: http://erda.dreamwidth.org/44698.html (later became <dwcomm>three_weeks_for_dw</dwcomm>)<br />
* 2010-03-08 -- dw_news update: renames coming soon, EasyRead style, payment provider application approved: http://dw-news.dreamwidth.org/18191.html<br />
* 2010-03-16 -- dw_news update: Bug 11 resolved, [[Google Summer of Code]] discussion, code push coming, Three Weeks for Dreamwidth anniversary festival, a caution against obnoxious evangelism, meetups: http://dw-news.dreamwidth.org/18504.html<br />
* 2010-03-23 -- [[IRC]] move to Freenode finalized; [http://qdb.dreamwidth.net/dw/276 old IRC server decomissioned].<br />
* 2010-03-23 -- dw_news update: [[Google Summer of Code]], Ada Lovelace Day, credits in new payment system announced, fundraiser brainstorming, http://dw-news.dreamwidth.org/18764.html<br />
* 2010-03-30 -- dw_news update: code push http://dw-news.dreamwidth.org/19003.html<br />
<br />
=== April 2010 ===<br />
* 2010-04-05 -- <dwuser>fu</dwuser> joining full time.<br />
* 2010-04-07 -- <dwuser>fu</dwuser>'s first [http://dw-news.dreamwidth.org/19375.html news post]. New payments system with points online. <br />
* 2010-04-09 -- Google Summer of Code applications close. <br />
* 2010-04-09 -- http://qdb.dreamwidth.net/ split from old LiveJournal QDB, in separate hosting<br />
* 2010-04-14 -- <dwuser>denise</dwuser> on hand rest: http://denise.dreamwidth.org/38803.html<br />
* 2010-04-16 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/19567.html - [http://www.zazzle.com/dreamwidth* Dreamwidth swag store], zero green, 6 slots for GSoC, <dwuser>mark</dwuser> will be wearing the developer hat. <br />
* Late April -- the outboundlink LiveJournal fiasco; <dwuser>afuna</dwuser> [http://afuna.dreamwidth.org/924883.html explains the technical reasons for her discomfort]. Drives a number of users to (at least temporarily) stop crossposting; some are driven to fully switch.<br />
<br />
* 2010-04-26 -- <dwcomm>three-weeks-for-dw</dwcomm> festival begins. <br />
* 2010-04-28 -- Freenode approves Dreamwidth's group application & information on cloaks added to [[IRC]] page.<br />
* 2010-04-20 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/19959.html<br />
* 2010-04-26 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/20211.html - summer of code<br />
<br />
=== May 2010 ===<br />
* 2010-05-03 - 2010-05-06 -- <dwuser>mark</dwuser> and <dwuser>denise</dwuser> attend [http://www.web2expo.com/webexsf2010 Web 2.0 Expo].<br />
* 2010-05-04 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/20337.html - tag merge, anniversary sale ongoing<br />
* 2010-05-04 -- <dwcomm>dw_biz</dwcomm>: The state of the coffers<br />
* 2010-05-06 -- <ljuser>vulva</ljuser> makes a [http://news.livejournal.com/125326.html?thread=83019150#t83019150 public comment complaining about an inappropriate comment from a LiveJournal staff member on material that was supposed to have been locked], which sparks a round of general as well as specific discussion about staff access to secured material on social media. <br />
* 2010-05-09 -- <dwuser>mark</dwuser> speaks about [http://mark.dreamwidth.org/20893.html staff access to secured content on Dreamwidth], discussion of a FAQ entry about this. <br />
* 2010-05-10 -- <dwuser>denise</dwuser> makes a <dwcomm>dw_news</dwcomm> entry involving [http://dw-news.dreamwidth.org/20516.html staff access to secured content on Dreamwidth]; also update redesign, call for vgift artists<br />
* 2010-05-19 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/20933.html - GSoC starting & a review of projects<br />
* 2010-05-26 -- Denise and Sarah married: http://dw-news.dreamwidth.org/21237.html<br />
* 2010-05-26 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/21237.html - update page redesign mockup <br />
<br />
(Some time around here-ish Mark takes a day job working for StumbleUpon.)<br />
<br />
=== June 2010 === <br />
* 2010-06-01 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/21330.html - r&r, entry page update feedback being accepted<br />
* 2010-06-06 -- "Account Contents" section added to the [http://www.dreamwidth.org/legal/privacy.bml Privacy Policy] ([http://dw-news.dreamwidth.org/21507.html announced] in <dwcomm>dw_news</dwcomm> June 08).<br />
* 2010-06-08 -- <dwcomm>dw_news</dwcomm> update: Tag merge and cut expansion, 2nd month in the black financially, author tagging in comms (code merge from LJ), community all-comments subscription (paid comms), reading page security filter (paid). http://dw-news.dreamwidth.org/21507.html<br />
* 2010-06-15 -- <dwcomm>dw_news</dwcomm> update: [http://dw-news.dreamwidth.org/21872.html inline cut tag expansion a big hit], also over 2,000 bugs resolved <br />
* 2010-06-16 -- brief downtime in which Mark has to pull over to the side of the road to fix it - http://dw-maintenance.dreamwidth.org/23889.html<br />
* 2010-06-17 -- Milestone: [http://angelikitten.dreamwidth.org/274543.html Poll 3500]<br />
* 2010-06-23 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/22135.html - <br />
* 2010-06-25 -- Bare-bones S2 style for syndicated accounts: http://changelog.dreamwidth.org/649976.html<br />
* 2010-06-30 -- ToS team roundup #3: http://dw-biz.dreamwidth.org/5624.html<br />
* 2010-06-30 -- <dwcomm>dw_news</dwcomm> update: http://dw-news.dreamwidth.org/22439.html<br />
<br />
=== July 2010 ===<br />
* 2010-07-06 -- dw-news update: http://dw-news.dreamwidth.org/22655.html <br />
* 2010-07-14 -- dw-news update: http://dw-news.dreamwidth.org/23006.html <br />
* 2010-07-19 to 23 -- http://www.oscon.com/oscon2010<br />
* 2010-07-28 -- dw-news update: http://dw-news.dreamwidth.org/23257.html<br />
<br />
=== August 2010 ===<br />
* 2010-08-21 -- Inksome announces a net loss from 1 May 2010 to 31 July 2010: "... we're losing money again. ... a difference of $178.50 ... cannot afford that kind of loss every month. Unless account revenue improves soon, I will be forced to shut down the site." http://www.inksome.com/users/news/13110.html<br />
* 2010-08-31 LiveJournal rolls out r69, with Twitter and Facebook integration, most notoriously including ability to easily send links with quotes of locked content to Twitter and Facebook, and a re-implementation of pingbacks that sometimes shared large excerpts of locked content with people not authorized to see it. <br />
** news http://news.livejournal.com/129190.html<br />
** r69 http://community.livejournal.com/lj_releases/61333.html<br />
<br />
=== September 2010 ===<br />
* 2010-09-01 - Spike in Dreamwidth new accounts created: 9350 new accounts (includes OpenID from journal imports). http://www.dreamwidth.org/stats/stats.txt<br />
* 2010-09-02 <br />
** <dwcomm>lj_refugees</dwcomm> created. <br />
** Six Apart announces the closing of Vox. http://team.vox.com/library/post/vox-is-closing-september-30-2010.html<br />
** 12619 new accounts created (includes OpenID from journal imports). Largest spike since 2009 05 01. http://www.dreamwidth.org/stats/stats.txt<br />
* 2010-09-07 - <dwuser>mark</dwuser> announces he has stepped back from day-to-day management of Dreamwidth. Mark remains involved with the project and a co-owner. http://mark.dreamwidth.org/21501.html<br />
* 2010-09-10 - LiveJournal announces that the most unpopular parts of r69 (easy linking of locked or screened content) will be undone with the next code release. http://news.livejournal.com/129284.html<br />
* 2010-09-18 - New account creations drop below 1,000 in a day for the first day since 2010-09-01. 88,268 new accounts (including imported OpenID) were created from Sept 1st to 17th.<br />
<br />
=== October 2010 ===<br />
* 2010-10 -- Mark and Janine announce their separation. <br />
* 2010-10-21 -- Denise & Sarah begin the process of purchasing a house.<br />
<br />
=== November 2010 === <br />
* 2010-11-19 - List of writers, photographers, etc. on Dreamwidth started curation: http://denise.dreamwidth.org/54683.html<br />
* 2010-11-22 - Denise & Sarah purchased house.<br />
<br />
=== December 2010 === <br />
* Denise & Sarah moving house, spotty internet access<br />
* 2010-12-10 -- Inksome's financial troubles continue: "... we are very likely still going to be going dark come April, because we have not made any progress where it comes to turning a profit." http://www.inksome.com/users/news/13421.html<br />
* 2010-12-24 - "Sad Project News" Cross-site reading tabled until factors making it impossible change. http://dw-news.dreamwidth.org/27853.html<br />
<br />
==2011==<br />
=== January 2011 ===<br />
* Denise & Sarah's spotty internet access continues. <br />
* 2011-01-12 -- Inksome users offered a group invite code: http://www.inksome.com/users/news/13591.html<br />
<br />
=== February 2011===<br />
* 2011-02-10 -- Reliable internet access for Denise & Sarah returns: http://dw-news.dreamwidth.org/28412.html<br />
* 2011-02-21 -- Open account creation week: [http://dw-news.dreamwidth.org/28412.html from 2011-02-21 to 2011-02-28, it was possible to create a Dreamwidth account for free without the use of an invite code], as an experiment to see if growth would be sustainable and to see if spam and abuse would rise after the open account creation period. 5497 accounts (including OpenID) were created in this window. Only ~10 were then discovered to be spammers. <br />
* 2011-02-28 -- Denise & Sarah adopt "Noah", a toe-chewing kitten.<br />
<br />
===March 2011===<br />
* 2011-03-2 -- LiveJournal is added to a Spamhaus blacklist for hosting a large number of spammer journals. <br />
* 2011-03-13 -- [http://www.inksome.com/users/news/14079.html Inksome announces "...we have not had any significant turnaround in income, which means yes, we're still going dark in a few weeks."] <br />
* -- LJ changes the IP address from which it is sending email. [citation needed]<br />
* -- LJ suspends some quarter of a million spammer accounts, with an estimated error rate of 1%.<br />
* 2011-03-28 -- Code push: http://dw-maintenance.dreamwidth.org/30344.html which included the change stripping some HTML/CSS used by spammers from comments: http://dw-news.dreamwidth.org/28412.html<br />
* 2011-03 -- Last week of March, LJ downtime due to DDoS. http://www.time.com/time/world/article/0,8599,2063952,00.html<br />
<br />
=== April 2011 ===<br />
<br />
* 2011-04-01 to 2011-04-06 -- LJ downtime, DDoS-related. http://www.time.com/time/world/article/0,8599,2063952,00.html<br />
* 2011-04-06 -- Spike in new account creations: 16,226<br />
* 2011-04-08 -- Inksome's hosting expired. <br />
* 2011-04-30 -- Second anniversary of Open Beta. Seed accounts on sale; 'beta' removed from site logo. http://dw-news.dreamwidth.org/29530.html http://changelog.dreamwidth.org/936983.html<br />
<br />
=== October 2011 ===<br />
* 2011-10-12 - "Expand All" collapsed comments for paid users to be in next code push http://dw-dev.dreamwidth.org/100133.html<br />
* 2011-10-30 - [http://bugs.dwscoalition.org/show_bug.cgi?id=2524 New Update Page] goes into beta testing http://dw-beta.dreamwidth.org/12259.html<br />
<br />
=== November 2011 ===<br />
* 2011-11-01 -- Migration to new Dreamhack server finalized; inactive Dreamhacks archived. http://bugs.dwscoalition.org/show_bug.cgi?id=4001#c2<br />
<br />
* 2011-11-24 -- Oliver Graham Smith born: http://xb95.dreamwidth.org/744397.html (Also pictures: http://xb95.dreamwidth.org/744623.html )<br />
<br />
* Late November -- LiveJournal under heavy DDoS attacks with phishing, suffers downtime<br />
<br />
=== December 2011 ===<br />
* Early December -- LiveJournal under heavy DDoS attacks, suffers downtime, crossposting affected<br />
* -- Elections in Russia<br />
* Open account creation period starts<br />
* LJ's R88<br />
* Spike in traffic/new users<br />
* 2011-12-25 -- community import bug committed<br />
<br />
==2012==<br />
<br />
=== January 2012 === <br />
* Community imports <br />
* SOPA/PIPA protests: splash screen (minimal interference with site as it is a communications platform)<br />
* 2012-01-19 -- #dw-tmi unofficially revived<br />
<br />
=== February 2012 ===<br />
* [http://www.dreamwidth.org/openid/claim OpenID claiming]<br />
<br />
=== March 2012 ===<br />
* The [http://www.dreamwidth.org/support/highscores Support High Scores Board] spills onto a second page, meaning that more than 100 different volunteers have answered support requests since Dreamwidth's creation.<br />
* Replaced reCAPTCHA with [http://textcaptcha.com/ Text Captcha]<br />
<br />
=== May 2012 ===<br />
* Dreamwidth [http://dw-dev.dreamwidth.org/116811.html decides to move from Mercurial to Git] for source code management.<br />
<br />
=== July 2012 ===<br />
* Dreamwidth sponsors a group of developers to [http://dw-news.dreamwidth.org/33780.html attend OSCON], marking the beginning of an annual conference tradition. The first rough implementation of image hosting capability is made available.<br />
<br />
== 2013 ==<br />
<br />
=== January 2013 ===<br />
<br />
* 2013-01-01 -- <dwuser>misskat</dwuser> [http://misskat.dreamwidth.org/3446368.html comes on board] as Dreamwidth's second employee.<br />
<br />
=== April 2013 ===<br />
<br />
* Added ability to reply to comments by email, and public subscription filters.<br />
<br />
=== June 2013 ===<br />
<br />
* Dreamwidth's yearly conference for 2013 is [http://dw-news.dreamwidth.org/2013/06/11/dw-news-11-jun-2013.html YAPC::NA in Austin, Texas.] Mark, Denise, and Kat present talks about diversity, attracting and retaining volunteers, and self-care.<br />
<br />
=== September 2013 === <br />
<br />
* 2013-09-26 -- <dwuser>mark</dwuser> [http://dw-dev.dreamwidth.org/148773.html switches IRC nick from xb95 to zorkian].<br />
<br />
=== November 2013 ===<br />
<br />
* Development begins on implementing next-generation responsive design using Foundation/SCSS.<br />
<br />
== 2014 ==<br />
<br />
=== March 2014 ===<br />
<br />
* 2014-03-14 -- The Dreamwidth Bugzilla database [http://dw-dev.dreamwidth.org/153310.html is accidentally deleted, with no backups.] The development team begins to use [https://github.com/dreamwidth/dw-free/issues/ Github's issue tracker] for managing bug reports and ongoing projects.<br />
<br />
=== April 2014 ===<br />
<br />
* [http://lj-dev.livejournal.com/854104.html LiveJournal closes off access to their source code.]<br />
<br />
=== June 2014 ===<br />
* 2014-06 -- Dreamwidth's yearly conference is Open Source Bridge for 2014. A number of Dreamwidth people give presentations. <br />
<br />
* Beginning of deployment of Foundation-styled pages. First to be converted is the community admin area, followed by journal styles.<br />
<br />
== 2015 == <br />
<br />
=== February 2015 ===<br />
<br />
* 2015-02-03 -- <dwuser>fu</dwuser> [http://afuna.dreamwidth.org/1163538.html announces she has moved] from the Phillippines to the Bay Area.<br />
<br />
=== June 2015 === <br />
* Open Source Bridge is again Dreamwidth's yearly conference. Dreamwidth brings 12 people officially, a number of whom speak. There are also a number of Friends of Dreamwidth. <br />
* <dwuser>fu</dwuser> steps down as employee, intends to return as a volunteer (after getting on board at new job) <br />
<br />
=== July 2015 === <br />
* 2015-07-06 -- <dwuser>karzilla</dwuser> [http://dw-dev.dreamwidth.org/174446.html becomes DevCom]<br />
<br />
== 2016 ==<br />
<br />
=== June 2016 ===<br />
* 2016-06-18 -- Icon size limit increased from 40KB to 60KB.<br />
* 2016-06-28 -- <dwuser>misskat</dwuser> [http://dw-volunteers.dreamwidth.org/33857.html steps down as head of support].<br />
* No official DW conference this year, although several friends of DW return to Open Source Bridge.<br />
<br />
<br />
= The Future =<br />
<br />
<br />
* <strike>Cross-site Authenticated Reading List</strike> Tabled until factors making it impossible regarding LJ change, as of 2010-12-24: http://dw-news.dreamwidth.org/27853.html<br />
* Entry creation out of beta/edit redesign<br />
* Photo/image hosting (currently in beta)<br />
* Continued open account creation, unless spam, performance, or some other reasons force it to be turned off!<br />
<br />
<br />
[[Category: Dreamwidth.org]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Injecting_incoming_emailInjecting incoming email2016-06-16T15:06:08Z<p>Sophira: </p>
<hr />
<div>[[Category:Dreamhack]]<br />
This page describes how to make a Dreamwidth install think it is receiving incoming email without actually sending it email. This might be useful if you are testing features such as post-by-email in an environment that is not able to receive email - such as a [[Dreamhack]].<br />
<br />
First, prepare the email. The easiest way is to send an email to yourself from one account to another and save the resulting message, including all headers, and then edit what you need to edit. In some clients this will be via a "view source" or "view original" link, or similar. Note that sending mail from one gmail account to another does <em>not</em> provide all the headers that you need - the email needs to actually go out to the internet and back. In particular, anything without <tt>Return-path:</tt> will be dropped as spam.<br />
<br />
<strong>Make sure that your email does not have any blank lines anywhere until the body</strong>. This includes blank lines before the start of the headers. If you did accidentally leave a blank line at the top and not notice, you might spend two and a half hours wondering why nothing worked. Ahem. <br />
<br />
Anyway, save your email somewhere accessible from the Dreamwidth installation. I'll assume from here that it's in your home directory and that it's called <tt>email.txt</tt>.<br />
<br />
Incoming email is processed by the <tt>incoming-email</tt> worker. Start this with<br />
<br />
<pre>$LJHOME/bin/worker/incoming-email</pre><br />
<br />
on a spare terminal. This will run until stopped by <tt>Ctrl-C</tt>, without showing any output on the screen.<br />
<br />
Then, using another terminal, you can inject your test message by<br />
<br />
<pre>$LJHOME/bin/incoming-mail-inject.pl < ~/email.txt</pre><br />
<br />
Hopefully, everything worked! If you are debugging something in the email-handling code, remember that you will need to restart the <tt>incoming-email</tt> worker after you change things to make sure that it is running the latest code. <br />
<br />
Things to check if your emails are not doing anything useful:<br />
* Make sure that posting by email is enabled at http://www.yourname.hack.dreamwidth.net/manage/settings/?cat=mobile, with a permitted sender and a PIN. Make sure that your <tt>From:</tt> header is the permitted sender, and that the PIN is featured in one of the allowed places. Unless you are testing what happens when it isn't ;-)<br />
* Make sure that your successive test emails do not have the same date. There's some code intended to do rate-limiting that will drop successive emails that have less than five minutes between their <tt>Date:</tt> headers. This may not matter if you are restarting the worker each time - I haven't checked.<br />
* If you want to make a post or comment by email, be aware that in the default configuration, free users are unable to do this. You will need to either use http://www.yourname.hack.dreamwidth.net/admin/pay/ to give yourself a different account type, or edit the <code>%CAP</code> hash in the <tt>$LJHOME/etc/config.pl</tt> file to set the <code>emailpost</code> capability to 1 for free users.<br />
* If you're wanting to inject email intended for the support board, you'll need to make sure that the address you use in the "To" (or "Cc") header is defined as the reply address for one of the support categories. You can do this by going to http://www.yourname.hack.dreamwidth.net/admin/supportcat/ (giving yourself the '''supportadmin:support''' [[privs|priv]] if necessary), editing the category, and entering a valid email address into the "Reply address" field.<br />
* For some maybe-useful diagnostics, try logging into your hack's System account and looking at http://www.yourname.hack.dreamwidth.net/admin/theschwartz</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Injecting_incoming_emailInjecting incoming email2016-06-16T15:03:31Z<p>Sophira: Notes on doing post/comment emails and support emails.</p>
<hr />
<div>[[Category:Dreamhack]]<br />
This page describes how to make a Dreamwidth install think it is receiving incoming email without actually sending it email. This might be useful if you are testing features such as post-by-email in an environment that is not able to receive email - such as a [[Dreamhack]].<br />
<br />
First, prepare the email. The easiest way is to send an email to yourself from one account to another and save the resulting message, including all headers, and then edit what you need to edit. In some clients this will be via a "view source" or "view original" link, or similar. Note that sending mail from one gmail account to another does <em>not</em> provide all the headers that you need - the email needs to actually go out to the internet and back. In particular, anything without <tt>Return-path:</tt> will be dropped as spam.<br />
<br />
<strong>Make sure that your email does not have any blank lines anywhere until the body</strong>. This includes blank lines before the start of the headers. If you did accidentally leave a blank line at the top and not notice, you might spend two and a half hours wondering why nothing worked. Ahem. <br />
<br />
Anyway, save your email somewhere accessible from the Dreamwidth installation. I'll assume from here that it's in your home directory and that it's called <tt>email.txt</tt>.<br />
<br />
Incoming email is processed by the <tt>incoming-email</tt> worker. Start this with<br />
<br />
<pre>$LJHOME/bin/worker/incoming-email</pre><br />
<br />
on a spare terminal. This will run until stopped by <tt>Ctrl-C</tt>, without showing any output on the screen.<br />
<br />
Then, using another terminal, you can inject your test message by<br />
<br />
<pre>$LJHOME/bin/incoming-mail-inject.pl < ~/email.txt</pre><br />
<br />
Hopefully, everything worked! If you are debugging something in the email-handling code, remember that you will need to restart the <tt>incoming-email</tt> worker after you change things to make sure that it is running the latest code. <br />
<br />
Things to check if your emails are not doing anything useful:<br />
* Make sure that posting by email is enabled at http://www.yourname.hack.dreamwidth.net/manage/settings/?cat=mobile, with a permitted sender and a PIN. Make sure that your <tt>From:</tt> header is the permitted sender, and that the PIN is featured in one of the allowed places. Unless you are testing what happens when it isn't ;-)<br />
* Make sure that your successive test emails do not have the same date. There's some code intended to do rate-limiting that will drop successive emails that have less than five minutes between their <tt>Date:</tt> headers. This may not matter if you are restarting the worker each time - I haven't checked.<br />
* If you want to make a post or comment by email, be aware that in the default configuration, free users are unable to do this. You will need to either use http://www.yourname.hack.dreamwidth.net/admin/pay/ to give yourself a different account type, or edit the <code>%CAP</code> hash in the <code>$LJHOME/etc/config.pl</code> file to set the <code>emailpost</code> capability to 1 for free users.<br />
* If you're wanting to inject email intended for the support board, you'll need to make sure that the address you use in the "To" (or "Cc") header is defined as the reply address for one of the support categories. You can do this by going to http://www.yourname.hack.dreamwidth.net/admin/supportcat/ (giving yourself the '''supportadmin:support''' [[privs|priv]] if necessary), editing the category, and entering a valid email address into the "Reply address" field.<br />
* For some maybe-useful diagnostics, try logging into your hack's System account and looking at http://www.yourname.hack.dreamwidth.net/admin/theschwartz</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Script:_create-usersScript: create-users2016-03-05T17:21:50Z<p>Sophira: Additional notes on "command not found" errors and the use of ~/bin.</p>
<hr />
<div>This script, which can be used on either Dreamhacks or manual Dreamwidth installations, will mass-create any number of users that you like, validate them, randomly create watch/trust edges between them, and optionally have them all join an existing community. It's extremely handy for bugs where a large number of users are required.<br />
<br />
You will need to edit the first part of the script to make sure the created users have the correct info. Once the script is set up, run it using the following syntax:<br />
<br />
<source lang="bash"><br />
./create-users testuser 100<br />
</source><br />
<br />
This will create 100 users named testuser1, testuser2, and so on up to testuser100. Each of them will then be given random edges to each other, and will, if set up to do so, join the community you specified in the script.<br />
<br />
If you're not on a [[Dreamhack]], then when running the script, you will need to [http://wiki.dreamwidth.net/wiki/index.php/Beginning_dev_checklist#The_location_of_.24LJHOME make sure the environment variable LJHOME is set]! (You don't need to worry about this on a Dreamhack because they have LJHOME set all the time anyway.)<br />
<br />
<source lang="perl"><br />
#!/usr/bin/perl<br />
<br />
# alter these variables to alter the characteristics of the created accounts<br />
my $email = 'your-email@example.com';<br />
my $password = "examplepassword";<br />
my $validated = 1; # validate new accounts automatically? (no email will be sent in either case)<br />
<br />
# the next two variables are the percentage chance for each user that it'll grant<br />
# access to or subscribe to any of the users created by this script, including<br />
# itself except where trusting; a user cannot trust themselves. (so a 33% chance<br />
# for $accesschance means that on average, it'll grant access to a third of the<br />
# users created by this script)<br />
my $accesschance = 10;<br />
my $subscribechance = 20;<br />
<br />
# if you want the users to all join the same community, put the name of the<br />
# community in the variable below. Note that the community must exist!<br />
my $joincommunity = ""; # if undef or empty, do not join any community<br />
<br />
# ==============<br />
<br />
use strict;<br />
use lib "$ENV{LJHOME}/cgi-bin";<br />
require "ljlib.pl";<br />
<br />
my ( $prefix, $num ) = @ARGV;<br />
<br />
die "Usage: '$0 <prefix> <number of users to create>'\neg, '$0 circletest 100'; this would create circletest1 .. circletest100.\n" unless defined( $num );<br />
die "Second argument must be a number greater than 0, not '$num'.\n" unless $num > 0;<br />
die "Prefix is too long for this many users; please shorten the prefix.\n" if length( $prefix ) + length( $num ) > 25;<br />
<br />
my $goodprefix = LJ::canonical_username( $prefix );<br />
die "'$prefix' uses invalid characters; please use another prefix.\n" unless $goodprefix;<br />
<br />
print "Creating $num users using prefix '$goodprefix'...\n";<br />
<br />
$| = 1; # disable buffering<br />
<br />
for (my $i = 1; $i <= $num; $i++) {<br />
my $user = $goodprefix . $i;<br />
LJ::MemCache::delete( 'uidof:' . $user );<br />
my $u2 = LJ::load_user( $user );<br />
if ( $u2 ) {<br />
print "User '$user' already exists, skipping\n";<br />
next;<br />
}<br />
print "Creating '$user'... ";<br />
my $u = LJ::User->create_personal( user => $user, email => $email, password => $password );<br />
if ( $u ) {<br />
print "(userid=" . $u->id . ") ";<br />
if ( $validated ) {<br />
print "validating... ";<br />
LJ::update_user($u, { status => 'A' });<br />
$u->update_email_alias;<br />
LJ::Hooks::run_hook( 'email_verified', $u );<br />
}<br />
print "done.\n";<br />
}<br />
else {<br />
die "could not create user! Aborting.\n";<br />
}<br />
}<br />
<br />
print "All users created, creating edges...\n";<br />
for (my $i = 1; $i <= $num; $i++) {<br />
my $from_user = $goodprefix . $i;<br />
my $from_u = LJ::load_user( $from_user );<br />
die "Could not load from_user '$from_user'" unless $from_u;<br />
for (my $j = 1; $j <= $num; $j++) {<br />
my $to_user = $goodprefix . $j;<br />
my $watch = ( ( int( rand( 100 ) ) + 1 ) <= $subscribechance );<br />
my $trust = ( ( int( rand( 100 ) ) + 1 ) <= $accesschance ) && ( $from_user ne $to_user );<br />
next unless ( $watch || $trust ); # skip loading the user unless we're actually going to do anything<br />
my $to_u = LJ::load_user( $to_user );<br />
die "Could not load to_user '$to_user'" unless $to_u;<br />
<br />
my @actions = ();<br />
push(@actions, "watch") if $watch;<br />
push(@actions, "trust") if $trust;<br />
print "$from_user -> $to_user (" . join(", ", @actions) . ")\n";<br />
$from_u->add_edge( $to_u, watch => { nonotify => 1 } ) if $watch;<br />
$from_u->add_edge( $to_u, trust => { nonotify => 1 } ) if $trust;<br />
}<br />
}<br />
<br />
if ($joincommunity ne "") {<br />
my $cu = LJ::load_user($joincommunity);<br />
die "Could not load community '$joincommunity'. Aborting.\n" unless $cu;<br />
print "Having all users join '" . $cu->username . "'...\n";<br />
for (my $i = 1; $i <= $num; $i++) {<br />
my $user = $goodprefix . $i;<br />
my $u = LJ::load_user( $user );<br />
die "Could not load user '$user'" unless $u;<br />
my $joined = $u->join_community( $cu );<br />
unless ($joined) {<br />
die "Error while joining user '$user' to community '" . $cu->username . "'";<br />
}<br />
}<br />
}<br />
<br />
print "All done!\n";<br />
</source><br />
<br />
Where should it go in the dreamhack? <br />
<br />
&lt;_Simon_&gt; I think you can put that wherever you like<br />
&lt;_Simon_&gt; If you have no preference I'd suggest ~/bin/<br />
&lt;Woggy&gt; When in doubt, blame Brad. ;)<br />
&lt;_Simon_&gt; stick it in ~/bin, chmod it to make it executable, run it and see if anything explodes :-)<br />
&lt;len&gt; Yep, seems fine. Just created 100 fake users.<br />
<br />
If you get lots of "command not found" errors while running the script, check to make sure that you're running it as <code>./create-users</code> instead of <code>bash create-users</code> or similar. (This is because the script is not a bash script, but a Perl script, and running it with bash won't work.)<br />
<br />
Note also that on a Dreamhack, you can also put the script into your <code>~/bin/</code> directory and simply run it as <code>create-users</code> regardless of which directory you're currently in.<br />
<br />
[[Category: Development]]<br />
[[Category: Dev Tools]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamhack_TroubleshootingDreamhack Troubleshooting2015-08-16T00:28:36Z<p>Sophira: Oops, I forgot how to do lists properly.</p>
<hr />
<div>Common Dreamhack problems and their solutions.<br />
<br />
==My hack won't start==<br />
<br />
Check out the latest error messages in your Apache error log:<br />
<br />
<source lang=bash>tail -f ~/apache/logs/error_log</source><br />
<br />
(The -f option will keep updating if more errors come in, which can be useful if you open up your Apache log in one window and try to restart Apache in another window. Hit Ctrl-C to stop the process.)<br />
<br />
Most of the time, the reason your Dreamhack won't start is because of a code error in one of your .pm or .pl files. The error messages here will tell you where to look.<br />
<br />
(If you get a big scary error message that takes up the whole entire screen on startup, look at the very beginning of the error for the file that the error is in.)<br />
<br />
==I'm getting a database error on connect==<br />
<br />
If you get an error message that looks like "cluster: status 0: ERROR: Can't connect to the database (clust#0), so I can't update it", it probably means that your $LJHOME/ext/local/etc/config-local.pl or $LJHOME/ext/local/etc/config-private.pl files have been overwritten, thus removing your username and password for your database.<br />
<br />
If you made a backup of your config files, copy the backup over the live version. If you didn't, just edit the files to put in your username (dh_username) and password (the database password you were assigned at the beginning, not your current login password). You might want to follow the instructions in the [[Dreamhack getting started]] guide for protecting your configs to prevent future problems.<br />
<br />
==My patch files include all of my config changes==<br />
<br />
Follow the instructions in the [[Dreamhack getting started]] guide for protecting your configs. This will also keep your config changes from creeping into your patch files.<br />
<br />
==I have .orig and .rej files all over the place==<br />
<br />
Check the "tidy" script at the bottom of the [[Dev Maintenance]] page.<br />
<br />
==My hack isn't sending me email==<br />
<br />
Edit your $LJHOME/ext/local/etc/config-local.pl and find the line "$MAIL_TO_THESCHWARTZ = 1;". Comment it out, or change it to 0, to send mail directly instead of through TheSchwartz.<br />
<br />
If you think you should be getting emails from the system (such as reinstaller emails, quota warnings, etc) but you aren't, it's possible that the email address associated with your Dreamhack account isn't your most current address - contact <dwuser>sophie</dwuser> if you'd like it to be changed.<br />
<br />
==I need to run TheSchwartz to test something==<br />
<br />
See the instructions in the [[Dreamhack getting started]] guide for how to set up TheSchwartz on Dreamhacks.<br />
<br />
== I broke a repository ==<br />
<br />
If you've broken a repository in <code>ext</code>, one of the options is to delete it and then check it back out from the original source control.<br />
<br />
==I want to wipe my install and start over==<br />
<br />
<strong>Make sure you've extracted everything you care about from your installation first, if possible, by e.g. copying the patch files to your own computer</strong>.<br />
<br />
If you want to wipe out your dreamhack and start over on purpose, type this:<br />
<br />
<code>echo reinstall > /dreamhack/var/maintain.d/$$</code><br />
<br />
It will take a few minutes for the install and setup to finish, and you should get a new notification email.<br />
<br />
==I'm getting "quota warning" emails but I'm not sure what I can delete==<br />
<br />
Generally, there are only two reasons why you might be getting this email:<br />
<br />
* If you leave your Apache turned on, then your Apache logs (in <code>~/apache/logs/</code> will probably be taking up a lot of space. You can compress them using <code>gzip</code> while your Apache is stopped. (Generally, it's not a good idea to leave your Apache on if you're not using it.)<br />
* If you've had your Dreamhack since before the transition to GitHub, then you might have a <code>~/dw-old/</code> backup directory of your old Dreamhack install. If you do have this, it will probably be eating up about half of your space by itself! It will also be several years old by now, so it can almost certainly be safely deleted unless you have some old patches in there that you haven't yet redone in Git.<br />
<br />
If neither of these apply, then you may want to follow this procedure to identify what's taking up the space:<br />
<br />
# Change to your home directory by typing <code>cd</code>.<br />
# Type <code>du -m --max-depth=1 | sort -n</code>. This command might take a moment to complete, and will show you a list of all the directories and the amount of space they're using (in megabytes). The bottom entry will be for "." and will show you how much space is being used in total within the current directory, including any files (which are otherwise not shown).<br />
# If you need to be more precise and check subdirectories, change your directory to the directory you want to check and then repeat step 2 again. (Alternatively, you can change <code>--max-depth=1</code> to <code>--max-depth=2</code> to check all the directories at once, but that can get a bit confusing.)<br />
<br />
As a guide, your <code>dw</code> directory should be taking about 200MB of space or so; if so, the problem is unlikely to be within that directory, and you should look at the others.<br />
<br />
[[Category: Development]]<br />
[[Category: Dreamhack]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamhack_TroubleshootingDreamhack Troubleshooting2015-08-16T00:27:12Z<p>Sophira: New section on quota warnings and a note on changing email addresses.</p>
<hr />
<div>Common Dreamhack problems and their solutions.<br />
<br />
==My hack won't start==<br />
<br />
Check out the latest error messages in your Apache error log:<br />
<br />
<source lang=bash>tail -f ~/apache/logs/error_log</source><br />
<br />
(The -f option will keep updating if more errors come in, which can be useful if you open up your Apache log in one window and try to restart Apache in another window. Hit Ctrl-C to stop the process.)<br />
<br />
Most of the time, the reason your Dreamhack won't start is because of a code error in one of your .pm or .pl files. The error messages here will tell you where to look.<br />
<br />
(If you get a big scary error message that takes up the whole entire screen on startup, look at the very beginning of the error for the file that the error is in.)<br />
<br />
==I'm getting a database error on connect==<br />
<br />
If you get an error message that looks like "cluster: status 0: ERROR: Can't connect to the database (clust#0), so I can't update it", it probably means that your $LJHOME/ext/local/etc/config-local.pl or $LJHOME/ext/local/etc/config-private.pl files have been overwritten, thus removing your username and password for your database.<br />
<br />
If you made a backup of your config files, copy the backup over the live version. If you didn't, just edit the files to put in your username (dh_username) and password (the database password you were assigned at the beginning, not your current login password). You might want to follow the instructions in the [[Dreamhack getting started]] guide for protecting your configs to prevent future problems.<br />
<br />
==My patch files include all of my config changes==<br />
<br />
Follow the instructions in the [[Dreamhack getting started]] guide for protecting your configs. This will also keep your config changes from creeping into your patch files.<br />
<br />
==I have .orig and .rej files all over the place==<br />
<br />
Check the "tidy" script at the bottom of the [[Dev Maintenance]] page.<br />
<br />
==My hack isn't sending me email==<br />
<br />
Edit your $LJHOME/ext/local/etc/config-local.pl and find the line "$MAIL_TO_THESCHWARTZ = 1;". Comment it out, or change it to 0, to send mail directly instead of through TheSchwartz.<br />
<br />
If you think you should be getting emails from the system (such as reinstaller emails, quota warnings, etc) but you aren't, it's possible that the email address associated with your Dreamhack account isn't your most current address - contact <dwuser>sophie</dwuser> if you'd like it to be changed.<br />
<br />
==I need to run TheSchwartz to test something==<br />
<br />
See the instructions in the [[Dreamhack getting started]] guide for how to set up TheSchwartz on Dreamhacks.<br />
<br />
== I broke a repository ==<br />
<br />
If you've broken a repository in <code>ext</code>, one of the options is to delete it and then check it back out from the original source control.<br />
<br />
==I want to wipe my install and start over==<br />
<br />
<strong>Make sure you've extracted everything you care about from your installation first, if possible, by e.g. copying the patch files to your own computer</strong>.<br />
<br />
If you want to wipe out your dreamhack and start over on purpose, type this:<br />
<br />
<code>echo reinstall > /dreamhack/var/maintain.d/$$</code><br />
<br />
It will take a few minutes for the install and setup to finish, and you should get a new notification email.<br />
<br />
==I'm getting "quota warning" emails but I'm not sure what I can delete==<br />
<br />
Generally, there are only two reasons why you might be getting this email:<br />
<br />
1. If you leave your Apache turned on, then your Apache logs (in <code>~/apache/logs/</code> will probably be taking up a lot of space. You can compress them using <code>gzip</code> while your Apache is stopped. (Generally, it's not a good idea to leave your Apache on if you're not using it.)<br />
2. If you've had your Dreamhack since before the transition to GitHub, then you might have a <code>~/dw-old/</code> backup directory of your old Dreamhack install. If you do have this, it will probably be eating up about half of your space by itself! It will also be several years old by now, so it can almost certainly be safely deleted unless you have some old patches in there that you haven't yet redone in Git.<br />
<br />
If neither of these apply, then you may want to follow this procedure to identify what's taking up the space:<br />
<br />
1. Change to your home directory by typing <code>cd</code>.<br />
2. Type <code>du -m --max-depth=1 | sort -n</code>. This command might take a moment to complete, and will show you a list of all the directories and the amount of space they're using (in megabytes). The bottom entry will be for "." and will show you how much space is being used in total within the current directory, including any files (which are otherwise not shown).<br />
3. If you need to be more precise and check subdirectories, change your directory to the directory you want to check and then repeat step 2 again. (Alternatively, you can change <code>--max-depth=1</code> to <code>--max-depth=2</code> to check all the directories at once, but that can get a bit confusing.)<br />
<br />
As a guide, your <code>dw</code> directory should be taking about 200MB of space or so; if so, the problem is unlikely to be within that directory, and you should look at the others.<br />
<br />
[[Category: Development]]<br />
[[Category: Dreamhack]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/How_to_do_a_Code_TourHow to do a Code Tour2015-07-26T22:14:05Z<p>Sophira: This link should be hack.dreamwidth.net, not dev-hack.dreamwidth.net.</p>
<hr />
<div>== What is a code tour? ==<br />
<br />
A code tour lists information about all of the issues that have been closed since the last code tour. You can [http://dw-dev.dreamwidth.org/tag/code+tour view previous code tours] in <dwcomm>dw_dev</dwcomm> .<br />
<br />
== How to make a code tour ==<br />
<br />
First, find the ending date of the latest code tour post by [http://dw-dev.dreamwidth.org/tag/code+tour viewing the previous code tours]. Then, plug that date into the [http://hack.dreamwidth.net/dev/codetour/ Code Tour Template Generator], and click Generate. (Using the "From the date of the last code tour" option requires the repository to have been updated - it's best to double-check manually so you don't duplicate effort.) The script will automatically find all issues and pull requests that have been closed since that date, and present a text box with a pre-filled template, which you should copy and paste into a text editor on your computer. '''Note that this is different to the old Bugzilla code-tour generator''', which only compiled bugs marked RESOLVED FIXED: you need to check each item manually to make sure that you're not including anything that would in Bugzilla have been marked e.g. RESOLVED DUPLICATE or RESOLVED WON'T FIX.<br />
<br />
There may be a few bugs that overlap with the previous code tour; you will need to cross-reference with the last code tour, because bugs are listed in ascending numerical order not chronologically by date closed.<br />
<br />
You should double-check the 'Patch by' field to make sure they accurately reflect the bug (for example, sometimes the "patch by" field only includes who made the patch, but other people may have worked on it, especially in the arena of themes - and sometimes the assignee on the bug isn't the one who actually does the patch!), and then write a description for the bug. The text "FILL IN" is pre-filled to make it easy to search for at the end and see if you missed anything. The 'Category' field is legacy from Bugzilla and does not need filling in manually.<br />
<br />
For preference, make a note of any issue that should be documented (generally changes in behaviour or functionality) and [https://docs.google.com/forms/d/1wsOq8TIdV7v3FrddsKSMze9DnKRIb1o20Jxx2juKrOM/viewform record it in the documents management system].<br />
<br />
Then make an entry in <dwcomm>dw_dev</dwcomm> tagged "code tour". The subject line should include the dates covered by the code tour, and the tour should be behind a &lt;cut&gt; tag to spare people's reading pages. The time to do these is generally the day of the <dwcomm>dw_news</dwcomm> update or the day before.<br />
<br />
When you've finished this, grab someone with commit access to the repositories in question, tell them what the latest issue included in the code tour was (preferably with link!), and get them to update the pointer (so that the tool offers the correct date for the "From the date of the last code tour" option). The committer will need to run the following commands:<br />
<br />
git checkout code-tour<br />
git merge --no-ff develop<br />
<br />
== How to manually make a code tour ==<br />
<br />
(You generally don't need to do this; this is just included for reference in case the generator fails. You should normally use the section above.)<br />
<br />
First, get a list of closed issues and pull requests by filtering [https://github.com/dreamwidth/dw-free/issues?utf8=%E2%9C%93&q=is%3Aclosed+ the list of closed issues] by date (note that this link gives you closed issues in the dw-free repository only, and it may be appropriate to also include issues from dw-nonfree). Then, put the information for each issue into this example format:<br />
<br />
<b><a href="https://github.com/dreamwidth/dw-free/issues/NNNN">Issue NNNN</a>:</b> Bug Title (<a href="https://github.com/dreamwidth/dw-free/pulls/MMMM">pull request</a>)<br />
<b>Category:</b> What section of the site is this bug about?<br />
<b>Patch by:</b> <user name="username" site="github"> or submitter name<br />
<b>Description:</b> What problem does this bug solve, or what new feature does it add?<br />
<br />
Then, make a post to <dwuser>dw_dev</dwuser> tagged "code tour". The time to do this is generally the day before or of a code push.<br />
<br />
Makes sure to double check the bug--sometimes the "patch by" field only includes who made the patch, but other people may have worked on it, especially in the arena of themes.<br />
<br />
== How-to: a ten-step guide for first-timers ==<br />
<br />
# join [[IRC|#dreamwidth]] and cry on people until they hold your hand<br />
# spot a post in <dwuser>dw_volunteers</dwuser> requesting a code tour<br />
# follow the link to the list of bugs/HTML template for the code tour. <strong>It's worth checking the previous code tour to make sure you don't have any duplicates, especially if you have more than 15 bugs to write up.</strong><br />
# open up the wiki page on how to do a code tour (well done! you're here!) and the handy issues list (both linked to from the handy HTML template)<br />
# copy the template into your Post Entry box.<br />
# stare at it in dismay until you work out whether (and how) you want to try to be funny (that's the hard part!)<br />
# write the pre-amble and closing notes, stick in the cut tag, fill in the subject with "Code tour: date--date", open all of the bug descriptions at the issue link<br />
# for each bug: <br />
#* confirm that the "patch by:" field matches the info given on the bug page (esp. in comments)<br />
#* the commit message - generally in the final comment - forms a good basis for your summary in the "FILL IN"/Description space, but you'll probably want to flesh it out with details taken from the other comments<br />
#* if you're confused about what it does, #dreamwidth is generally a good place to track down someone who can explain it to you so you can explain it to everyone else<br />
#* and, for that matter, #dreamwidth is an excellent place to give running updates of the "ONE THIRD... ONE HALF... TWO THIRDS... but what if I get something WRONG and the WORLD ENDS... FIVE SIXTHS..." nature, and receive cheerleading in return!<br />
# post your COMPLETED CODE TOUR to <dwuser>dw_dev</dwuser>, making sure to tag it with "code tour"<br />
# gnaw on your nails until people start telling you it's okay: you have now achieved SUCCESS<br />
<br />
[[Category: Development]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Script:_create-usersScript: create-users2015-07-12T22:15:55Z<p>Sophira: Add a quick note about how you don't need to worry about LJHOME if you're on a Dreamhack.</p>
<hr />
<div>This script, which can be used on either Dreamhacks or manual Dreamwidth installations, will mass-create any number of users that you like, validate them, randomly create watch/trust edges between them, and optionally have them all join an existing community. It's extremely handy for bugs where a large number of users are required.<br />
<br />
You will need to edit the first part of the script to make sure the created users have the correct info. Once the script is set up, run it using the following syntax:<br />
<br />
<source lang="bash"><br />
./create-users testuser 100<br />
</source><br />
<br />
This will create 100 users named testuser1, testuser2, and so on up to testuser100. Each of them will then be given random edges to each other, and will, if set up to do so, join the community you specified in the script.<br />
<br />
If you're not on a [[Dreamhack]], then when running the script, you will need to [http://wiki.dreamwidth.net/wiki/index.php/Beginning_dev_checklist#The_location_of_.24LJHOME make sure the environment variable LJHOME is set]! (You don't need to worry about this on a Dreamhack because they have LJHOME set all the time anyway.)<br />
<br />
<source lang="perl"><br />
#!/usr/bin/perl<br />
<br />
# alter these variables to alter the characteristics of the created accounts<br />
my $email = 'your-email@example.com';<br />
my $password = "examplepassword";<br />
my $validated = 1; # validate new accounts automatically? (no email will be sent in either case)<br />
<br />
# the next two variables are the percentage chance for each user that it'll grant<br />
# access to or subscribe to any of the users created by this script, including<br />
# itself except where trusting; a user cannot trust themselves. (so a 33% chance<br />
# for $accesschance means that on average, it'll grant access to a third of the<br />
# users created by this script)<br />
my $accesschance = 10;<br />
my $subscribechance = 20;<br />
<br />
# if you want the users to all join the same community, put the name of the<br />
# community in the variable below. Note that the community must exist!<br />
my $joincommunity = ""; # if undef or empty, do not join any community<br />
<br />
# ==============<br />
<br />
use strict;<br />
use lib "$ENV{LJHOME}/cgi-bin";<br />
require "ljlib.pl";<br />
<br />
my ( $prefix, $num ) = @ARGV;<br />
<br />
die "Usage: '$0 <prefix> <number of users to create>'\neg, '$0 circletest 100'; this would create circletest1 .. circletest100.\n" unless defined( $num );<br />
die "Second argument must be a number greater than 0, not '$num'.\n" unless $num > 0;<br />
die "Prefix is too long for this many users; please shorten the prefix.\n" if length( $prefix ) + length( $num ) > 25;<br />
<br />
my $goodprefix = LJ::canonical_username( $prefix );<br />
die "'$prefix' uses invalid characters; please use another prefix.\n" unless $goodprefix;<br />
<br />
print "Creating $num users using prefix '$goodprefix'...\n";<br />
<br />
$| = 1; # disable buffering<br />
<br />
for (my $i = 1; $i <= $num; $i++) {<br />
my $user = $goodprefix . $i;<br />
LJ::MemCache::delete( 'uidof:' . $user );<br />
my $u2 = LJ::load_user( $user );<br />
if ( $u2 ) {<br />
print "User '$user' already exists, skipping\n";<br />
next;<br />
}<br />
print "Creating '$user'... ";<br />
my $u = LJ::User->create_personal( user => $user, email => $email, password => $password );<br />
if ( $u ) {<br />
print "(userid=" . $u->id . ") ";<br />
if ( $validated ) {<br />
print "validating... ";<br />
LJ::update_user($u, { status => 'A' });<br />
$u->update_email_alias;<br />
LJ::Hooks::run_hook( 'email_verified', $u );<br />
}<br />
print "done.\n";<br />
}<br />
else {<br />
die "could not create user! Aborting.\n";<br />
}<br />
}<br />
<br />
print "All users created, creating edges...\n";<br />
for (my $i = 1; $i <= $num; $i++) {<br />
my $from_user = $goodprefix . $i;<br />
my $from_u = LJ::load_user( $from_user );<br />
die "Could not load from_user '$from_user'" unless $from_u;<br />
for (my $j = 1; $j <= $num; $j++) {<br />
my $to_user = $goodprefix . $j;<br />
my $watch = ( ( int( rand( 100 ) ) + 1 ) <= $subscribechance );<br />
my $trust = ( ( int( rand( 100 ) ) + 1 ) <= $accesschance ) && ( $from_user ne $to_user );<br />
next unless ( $watch || $trust ); # skip loading the user unless we're actually going to do anything<br />
my $to_u = LJ::load_user( $to_user );<br />
die "Could not load to_user '$to_user'" unless $to_u;<br />
<br />
my @actions = ();<br />
push(@actions, "watch") if $watch;<br />
push(@actions, "trust") if $trust;<br />
print "$from_user -> $to_user (" . join(", ", @actions) . ")\n";<br />
$from_u->add_edge( $to_u, watch => { nonotify => 1 } ) if $watch;<br />
$from_u->add_edge( $to_u, trust => { nonotify => 1 } ) if $trust;<br />
}<br />
}<br />
<br />
if ($joincommunity ne "") {<br />
my $cu = LJ::load_user($joincommunity);<br />
die "Could not load community '$joincommunity'. Aborting.\n" unless $cu;<br />
print "Having all users join '" . $cu->username . "'...\n";<br />
for (my $i = 1; $i <= $num; $i++) {<br />
my $user = $goodprefix . $i;<br />
my $u = LJ::load_user( $user );<br />
die "Could not load user '$user'" unless $u;<br />
my $joined = $u->join_community( $cu );<br />
unless ($joined) {<br />
die "Error while joining user '$user' to community '" . $cu->username . "'";<br />
}<br />
}<br />
}<br />
<br />
print "All done!\n";<br />
</source><br />
<br />
Where should it go in the dreamhack? <br />
<br />
&lt;_Simon_&gt; I think you can put that wherever you like<br />
&lt;_Simon_&gt; If you have no preference I'd suggest ~/bin/<br />
&lt;Woggy&gt; When in doubt, blame Brad. ;)<br />
&lt;_Simon_&gt; stick it in ~/bin, chmod it to make it executable, run it and see if anything explodes :-)<br />
&lt;len&gt; Yep, seems fine. Just created 100 fake users.<br />
<br />
<br />
[[Category: Development]]<br />
[[Category: Dev Tools]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/DreamhacksDreamhacks2015-04-28T01:53:35Z<p>Sophira: /* Dreamhack re-install */ Ths reinstall script has been fixed for a while, oops.</p>
<hr />
<div>[http://hack.dreamwidth.net/ Dreamhack] is a service that provides users with working environments, currently hosted by volunteers, with everything you need to get started already set up for you. <br />
<br />
This service is currently run by <dwuser>Sophie</dwuser>.<br />
<br />
To apply for a Dreamhack account, fill out the [http://hack.dreamwidth.net/apply.shtml application form]. <dwuser>Sophie</dwuser> proccesses these applications by hand, so it may be a day or two before you hear back from her.<br />
<br />
If you're interested in helping out with Dreamwidth development but have not a clue what you're doing, you can join the [irc://irc.freenode.net/dreamwidth-dev #dreamwidth-dev] channel on [[IRC]].<br />
<br />
Information on getting set up once you have a Dreamhack can be found at [[Beginning dev checklist]], and at [[Dreamhack Getting Started]].<br />
<br />
==Dreamhack Configuration==<br />
When you first receive your Dreamhack, it's set up for you automatically with the correct database settings. However, if your configuration gets wiped out or otherwise overwritten, you might need to redo your database settings as follows:<br />
<br />
* Your '''database username''' (known as <code>user</code> in the %DBINFO hash) is the name in the URL you use for your Dreamhack, prefixed by "dh_" - so, for example, "dh_sophie" for http://www.sophie.hack.dreamwidth.net/ . (notice that this uses an underscore rather than a hyphen as the SSH username does)<br />
* Your '''database password''' (known as <code>pass</code> in the %DBINFO hash) is the password you received in your initial email. Note that this is not your SSH password; although the passwords are set to the same thing initially, changing your SSH password will not change your database password.<br />
* Your '''database name''' (known as <code>dbname</code> in the %DBINFO hash) is like your username, but instead of "dh_", you use "dreamhack_". So, for the example above, the database name is "dreamhack_sophie".<br />
<br />
==Dreamhack trouble-shooting==<br />
Things go wrong, and they don't always go wrong in ways that mean a total reinstall would be useful or appropriate. In those circumstances, take a look at [[Dreamhack Troubleshooting]], and then ask IRC!<br />
<br />
==Dreamhack re-install==<br />
<br />
If you want to wipe out your dreamhack and start over on purpose, type this,<br />
<br />
<code>echo reinstall > /dreamhack/var/maintain.d/$$</code><br />
<br />
It will take a few minutes for the install and setup to finish, and you should get a new notification email.<br />
<br />
==Dreamhack customisation==<br />
<br />
Once you've set up your shiny new dreamhack, you will probably want to personalise things a little. <br />
<br />
If you want to show people looking at the [http://hack.dreamwidth.net/dreamhacks.shtml list of dreamhacks] what you intend to work on, you can create a "plan" file in your home directory, the one where your README is. Type:<br />
<br />
<source lang="bash">nano .plan</source><br />
<br />
(or replace "nano" with the name of your preferred editor). Then type whatever you like into the file and save it. Please note the . at the start of the file name; this means that it is a hidden file which will not show up when you use "ls" (although "ls -a" will show it).<br />
<br />
If you want to update any of your other information on the Dreamhacks page, you can type this command:<br />
<br />
<source lang="bash">edit-dreamhack-info</source><br />
<br />
This command will launch your editor with a file containing your information that you can edit. You should then save this file and exit, and the update will take place. (The editor used can be configured using the EDITOR environment variable; it is nano by default.)<br />
<br />
If your Dreamhack is old enough, the above command may not work. In that case, you'll need to specify the full path:<br />
<br />
<source lang="bash">/dreamhack/bin/edit-dreamhack-info</source><br />
<br />
Some other useful tweaks can be found in the<br />
[http://wiki.dwscoalition.org/notes/Dreamhack_Getting_Started#Edit_the_config_files Edit the config files] section of the Dreamhack Getting Started page.<br />
<br />
For more details on ways you might wish to customise your dev environment, see [[Development#Customising_Your_Dev_Environment]].<br />
<br />
[[Category: Development]]<br />
[[Category: Dreamhack]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2015-03-15T03:07:22Z<p>Sophira: /* Database setup */ ...remember that typo I "corrected" last year? Yeah, oops. Fixed properly this time.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands will create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost'''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like.<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists.)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" (which you may need to create) in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2014-08-29T19:07:17Z<p>Sophira: /* Configure Apache */ The "stage" file is something we create and won't be in a standard Apache install.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil' create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost'''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like.<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists.)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" (which you may need to create) in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2014-08-29T19:05:52Z<p>Sophira: /* Database setup */ Fixing a typo.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil' create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost'''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like.<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists.)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2014-08-29T19:04:28Z<p>Sophira: /* Database setup */ Adding a quote.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost'''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like.<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists.)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2014-08-29T19:03:38Z<p>Sophira: /* Database setup */ Adding a full stop that I missed.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like.<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists.)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2014-08-29T19:02:39Z<p>Sophira: /* Database setup */ Additional explanation for the database/user creation lines.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtemplate-perl libterm-readkey-perl libmime-base64-urlsafe-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
That last line is made up of a few different sections:<br />
<br />
* '''grant all on dw.*''' - this tells MySQL to grant all permissions to the "dw" database which you created in the first line.<br />
* '''to 'dw'@'localhost''' - this tells MySQL to grant the above permissions to a username called "dw" connecting from "localhost" (which means the same computer as the one MySQL is on). You can change "dw" to another username if you like.<br />
* '''identified by 'somePassword' ''' - since this user doesn't exist yet, we can tell MySQL to create it by adding this. This tells MySQL that the "dw" user will use the password "somePassword" to connect. You probably want to change this password!<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost';<br />
<br />
(We're leaving out the "identified by" part this time because the user already exists)<br />
<br />
When you're done, exit out of MySQL:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2014-07-10T22:05:06Z<p>Sophira: /* Then */ Add Net::OAuth</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system -- here are the [[Suggested Server Requirements]]. These instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should update the packages on your system (either in a root shell (sudo bash) or preceding these commands with 'sudo'):<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core subversion apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtest-simpleunit-perl libtemplate-perl libterm-readkey-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl libjson-perl<br />
<br />
This will download about 113MB of files and use around 355MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter. (Note: if you ran the above command to install Apache, then you have the pre-fork version installed.)<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
cpan Digest::SHA256<br />
cpan Text::Markdown<br />
cpan Image::ExifTool<br />
cpan Net::OAuth<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw/dw<br />
<br />
Or wherever it is that you want the root of your source code install to be. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of the dw user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see <tt>/home/dw/dw</tt> or whatever you set it to. If you don't, then something has gone awry -- maybe the export line isn't in the right place..?<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
git branch --set-upstream master dreamwidth/master<br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers only. Clone sites should not use dw-nonfree because it contains Dreamwidth-specific branding and files}}<br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
git branch --set-upstream master dreamwidth/master<br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
You might want to pick a more appropriate database username/database name/password.<br />
<br />
While you're here, you probably want to go ahead and create a database for TheSchwartz, too, unless you really know that you won't need it:<br />
<br />
create database dw_schwartz;<br />
grant all on dw_schwartz.* to 'dw'@'localhost' identified by 'somePassword';<br />
<br />
When you're done, exit out of mysql:<br />
<br />
quit;<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-local.pl.txt ext/local/etc/config-local.pl<br />
vim ext/local/etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
chmod go-rwx ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
If you created the database for TheSchwartz earlier, you'll also want to configure it:<br />
<br />
# Schwartz DB configuration<br />
@THESCHWARTZ_DBS = (<br />
{<br />
dsn => 'dbi:mysql:dw_schwartz;host=localhost',<br />
user => 'dw',<br />
pass => '', # CHANGETHIS<br />
},<br />
);<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, copy it over first, then you can edit it:<br />
<br />
cd $LJHOME<br />
cp etc/config.pl ext/local/etc/config.pl<br />
vim ext/local/etc/config.pl<br />
<br />
<br />
Note that from here on, when any documentation says to edit etc/config*, you'll likely want to edit ext/local/etc/config-* instead.<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC, the mailing list, or make a post to <dwcomm>dw_dev</dwcomm>.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb # at least for now we have to run this twice<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
If you created your database for TheSchwartz earlier, you'll also want to populate it with its default tables:<br />
<br />
mysql -u dw -p dw_schwartz < /usr/share/doc/libtheschwartz-perl/schema.sql<br />
<br />
<br />
Create a system account:<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
And load in the translation strings:<br />
<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
* Setting up [[Search]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
If you haven't already, see [[Dev Getting Started]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Version_ControlVersion Control2013-09-10T18:29:16Z<p>Sophira: New section: 'Important note (or: Why am I getting 'Permission denied'?)'</p>
<hr />
<div>The Dreamwidth code uses a Git repository and is publicly available [http://github.com/dreamwidth/ on Github].<br />
<br />
You can orient yourself with the basics via [[Git Getting Started]] and the [[Dev_Getting_Started#Workflow|sample workflow]] in [[Dev Getting Started]]. Instructions for specific actions are below:<br />
<br />
= Important note (or: Why am I getting 'Permission denied'?) =<br />
<br />
Before running any of the <tt>git</tt> commands on this page, you will need to ensure you are somewhere within the <tt>$LJHOME</tt> directory tree. On Dreamhacks, if you are not within this directory tree, you may receive errors like this:<br />
<br />
fatal: Unable to create '/dreamhack/.git/refs/heads/dj.lock': Permission denied<br />
<br />
This occurs because the Dreamhack machine uses its own git repository for its code too, and Git is thinking that you wanted to use this repository instead of your own personal repository. To fix this, simply change to the <tt>$LJHOME</tt> directory:<br />
<br />
cd $LJHOME<br />
<br />
The commands should now work without issue.<br />
<br />
= Starting a new branch =<br />
<br />
New branches should be started from an up-to-date copy of develop: see [[Dev_Maintenance#Updating_dw-free|the Dev Maintenance article for instructions on how to do this]].<br />
<br />
To create a new branch and switch your working copy over to it immediately, use <tt>git checkout -b ''branchname''</tt>; eg<br />
<br />
git checkout -b bug4335-admin-tt<br />
<br />
Choose a descriptive branch name you can keep track of--in this example, it's the bug number being worked on, plus a couple of keywords so you're not relying solely on memorizing bug numbers.<br />
<br />
= Managing changes =<br />
<br />
Before making changes to a branch, make sure you have that branch checked out. You can check which branch you're currently working on with:<br />
<br />
git branch<br />
<br />
It will list the branches and put an asterisk next to the one you currently have checked out, eg:<br />
<br />
bug4650-update-bootstrap.pl<br />
bug4772-stats-old-urls<br />
bug4772-stats-old-urls-dw-style<br />
bug5003-remove-hg-links<br />
* develop<br />
master<br />
<br />
If the current branch isn't the one you want to work on, change to the right branch with the command:<br />
<br />
git checkout BRANCHNAME<br />
<br />
== Viewing changes ==<br />
<br />
To get an overview of which files have changed, which files are included in your next commit, and what new files exist, use:<br />
<br />
git status<br />
<br />
To get a line by line description of all of the changes, use:<br />
<br />
git diff<br />
<br />
When you want the changes you've made to a file you have to be included in your next commit, use <code>git add</code>:<br />
<br />
git add FILE<br />
<br />
If you make more changes to that file, you will have to add it again to have the new changes included.<br />
<br />
== Stashing and unstashing ==<br />
<br />
Sometimes you may have changes you are not ready to commit yet, but need to stow away while doing tasks like merging. <code>git stash</code> can be useful for this.<br />
<br />
To save a bunch of changes:<br />
<br />
git stash<br />
<br />
To put the changes back:<br />
<br />
git stash pop<br />
<br />
== Undoing changes ==<br />
<br />
If you have a file with changes and want to revert it to what's currently committed to the branch of the repository you are on, use:<br />
<br />
git checkout -- FILENAME<br />
<br />
If you accidentally added a file to the staging area you are going to be committing, you can unadd it using:<br />
<br />
git reset HEAD FILENAME<br />
<br />
If you want to reset ALL files to what's currently committed to the branch of the repository you are on and discard all changes, use:<br />
<br />
{{Warn|text=DO NOT USE IF YOU WANT TO SAVE ANYTHING!}}<br />
<br />
git reset --hard<br />
<br />
== Committing changes ==<br />
<br />
Use <code>git add</code> to add the changes you want to commit. Before committing, you may want to briefly review your changes with <code>git status</code> and <code>git diff</code>. <br />
<br />
Once you are satisfied that these changes are the ones you want to make, give the command:<br />
<br />
git commit<br />
<br />
This will open up the command line editor specified in your config. (You can change this with instructions in [[Git settings]].) Write up a good description of the changes included in this commit.<br />
<br />
Git commit messages have a format that's rather peculiar to Git, and we have a further convention of starting the summary with (eg) "(bug 1234)". So, ideally your commit messages will look something like this: <br />
<br />
'''(bug 4321) short summary; total 50 chars or less'''<br />
<br />
After a blank line, give a long-form description of the changes.<br />
You can write a few sentences, several paragraphs, or an essay<br />
complete with theorems, premises, and supporting references --<br />
whatever is needed to clearly document the change.<br />
<br />
The first line is used as a summary by tools like <code>git log --oneline</code>; if it is too long, the output of these tools will display oddly. <br />
<br />
[http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html Additional suggestions on writing commit messages].<br />
<br />
If you are making a commit that only needs a short explanation, you can use the -m option:<br />
<br />
git commit -m "(Bug 3492) This describes the change that I just made."<br />
<br />
If you need to make further changes you can either do a second commit or amend your initial commit with:<br />
<br />
git commit --amend<br />
<br />
== Rebasing commits ==<br />
<br />
{{Warn|text=This isn't a mandatory step and can cause irreversible damage. Most patches are fine as-is and there is no point in rewriting history. Also don't do this if some of your changes have been pulled by anybody.}}<br />
<br />
While in some instances it can be very useful to make successive commits within a single branch while working on your fix, in other ones it can be neater and tidier if you [http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html <code>rebase</code>] so that your patch consists of a single commit.<br />
<br />
First use <code>git branch</code> to make sure you're in the correct branch. Then do:<br />
<br />
git rebase -i HEAD~X<br />
<br />
replacing X with the number of commits you have made as part of your patch. You will be provided with a screen that lists your last X commits by commit number (oldest first) with their brief commit messages.<br />
<br />
Typically, you will want to change <code>pick</code> next to the first commit to <code>reword</code>, and all subsequent instances of <code>pick</code> to <code>fixup</code>. This ''squashes'' all your commits into a single commit, discarding all commit messages but that associated with the first commit, and allowing you to edit your commit message.<br />
<br />
You now have a single commit!<br />
<br />
As mentioned in [[Newbie_Guide:_How_To_in_Git#How_to_squash_several_commits_into_one|this article]] you can also use the rebaser to do other nifty things or do this differently.<br />
<br />
== Updating your branch ==<br />
<br />
{{Warn|text=This isn't a mandatory step and can cause merging conflicts you'll have to resolve manually. If your patch works against current code it's actually a good sign you don't need to do this.}}<br />
<br />
If it's been a while since you've worked on your bug, you may want to or need to bring your branch up to date with any changes that have happened in <tt>develop</tt> since you initially forked your branch.<br />
<br />
In this case, first, double-check that you're in the branch you want to submit: <br />
<br />
git branch <br />
<br />
Then fetch changes from Dreamwidth's develop branch and bring your branch up to date with them:<br />
<br />
git fetch dreamwidth<br />
git pull --rebase --ff-only dreamwidth develop<br />
<br />
<tt>pull --rebase</tt> incorporates any new changes from develop into your branch, and it also reorganizes your changes so that changes in your branch appear to start from ''current'' develop, instead of where develop was when you initially started your branch. (Neat!) This can make it much easier to merge your branch into Dreamwidth's main develop branch.<br />
<br />
== Pushing your changes to your repository on Github ==<br />
<br />
After committing your changes, you need to push them to your repository on Github. You can do this with:<br />
<br />
git push origin BRANCHNAME<br />
<br />
If you've rebased after pushing multiple commits to your repository, when you try to push your unified single commit you will get the error message ''Updates were rejected because the tip of your current branch is behind its remote counterpart''. If this is the case, you'll need to set the <code>force</code> flag when pushing, and then you should be good to go:<br />
<br />
git push --force origin BRANCHNAME<br />
<br />
= Making a pull request =<br />
<br />
== Submit! ==<br />
<br />
Go to your version of the repository (dw-free or dw-nonfree) that you want to send upstream. By default they should be at:<br />
<br />
* https://github.com/USERNAME/dw-free<br />
* https://github.com/USERNAME/dw-nonfree<br />
<br />
These repositories are separate, so if you have made changes to both of them, you will have to submit pull requests for both of them.<br />
<br />
Find your branch in the drop-down menu then click on Compare and Pull Request right above it. Check your request one last time then click on Send Pull Request.<br />
<br />
{{Expand|text=What do we want people to include in the pull request description? Bugzilla URL?}}<br />
<br />
{{Expand|text=Describe making a pull request to another repository other than the DW one!}}<br />
<br />
Finally (and optionally!), go back to the Bugzilla page for your bug, and leave a comment linking to the pull request you've just submitted.<br />
<br />
== Updating a pull request ==<br />
<br />
Following feedback you may need to edit your patch, and get the edits live on Github. In order to do this, commit your changes (section 2.4) and push the changes to your repository on Github (section 2.6). Your pull request will automatically update to reflect the changes you've made.<br />
<br />
Comment on your pull request once you're happy that you've done all the changes the reviewer has asked for, and have pushed up your changes. This makes it more likely that someone will take a look at your changes quickly: reviewers aren't notified of new commits, but they are notified when there are new comments.<br />
<br />
= Deleting branches =<br />
<br />
{{Warn|text=Be careful when deleting branches -- while it's often possible to get things back, it can be tricky to do so.}}<br />
<br />
You might create a branch by mistake, or have your changes pulled into the main develop branch on Dreamwidth. To delete the branch locally, use the command:<br />
<br />
git branch -d BRANCHNAME<br />
<br />
If it's a branch that hasn't been merged yet, the above command will give you an error. If you are SURE you still want to delete that branch, use:<br />
<br />
git branch -D BRANCHNAME<br />
<br />
If the branch is also on your Github, you can delete it like this:<br />
<br />
git push origin --delete <branchName><br />
<br />
or like this:<br />
<br />
git push origin :<branchName><br />
<br />
or, if it's been merged, delete it directly from Github using the nifty Delete button.<br />
<br />
= Untangling messes = <br />
<br />
If your account or branch is in some kind of unfortunate state that you do not know how to recover from: <br />
<br />
* try not to panic<br />
* try not to blame yourself -- this is a very common situation, especially while first getting used to git. <br />
* feel free to ask for help, particularly in <dwcomm>dw_dev_training</dwcomm> or, for real-time support, in [[IRC|#dreamwidth-dev]]; it can help to come prepared with a pastebin link of what's going on in your account, and explain what you're trying to do. <br />
<br />
[[Category: Development]]<br />
[[Category: Git]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Common_JargonCommon Jargon2013-07-01T12:03:10Z<p>Sophira: Add QDB link for "Ia! Ia!" Actually, this works better here.</p>
<hr />
<div>The Dreamwidth project has some jargon in common use that may not be familiar to the general public. While these are not official terms that you should know, or necessarily Dreamwidth-specific, general explanations or definitions may be helpful. <br />
<br />
=[[Dreamwidth-Specific Jargon]]=<br />
{{:Dreamwidth-Specific Jargon}}<br />
<br />
=Words and Phrases= <br />
; accessible, accessibility, a11y: Making things (websites, buildings, et cetera) able to be not only accessed but usefully and fully used by anyone, including but not limited to people in wheelchairs, people with other mobility impairments, people with visual impairments, people with hearing impairments, people with cognitive impairments, text-only browser users, screenreader-only users, keyboard-only users, custom keyboard users, pointing-device-only users, and more. The goal here is to make Dreamwidth as accessible as possible. Developers are encouraged to check out <dwcomm>dw_accessibility</dwcomm> and the [[Accessibility Wishlist]]. <dwcomm>accessibility_fail</dwcomm> is when people do accessibility wrong (or don't do it at all). <br />
: a11y is a Twitter-friendly abbreviation for 'accessibility': a + 11 letters (ccessibilit) + y. History of this mode of abbreviation: http://www.i18nguy.com/origini18n.html<br />
<br />
; anon-fail: Someone who intended to comment anonymously accidentally leaving the comment while fully identified, in a way that revealed their identity to anyone who happened to be watching (or subscribed to email notifications) before the comment was deleted. Usually said in relation to an ongoing anonymous discussion, especially in anonymemes. <br />
<br />
; anonmeme, anonymeme, anonymous meme: a discussion or game where all participants are meant to be anonymous. These are often associated with an uncensored, anything-goes attitude, and can be very high-volume. <br />
<br />
; backscroll, scrollback, scrool: Things that happened in IRC while someone was connected but not actively watching, often in the context of "What are you guys on about? BRB, reading backscroll." (Common to many IRC/chat forums, not just DW's.) <br />
<br />
; "bake you cookies and write you porn": The helpful response of a tight-knit (usually fannish) internet community when one of their number is going through a rough patch. <br />
<br />
; baleet, bahleet: emphatic/silly form of 'delete'. <br />
: delete + ban<br />
<br />
; bandom: fandom (usually fic-writing/reading fandom) of various bands. http://zen.transformativeworks.org/wiki/Bandom_%28Music_Source_Text%29<br />
<br />
; banninate: verb. Emphatic/silly form of 'ban'. <br />
<br />
; bingo: [http://en.wikipedia.org/wiki/Bingo_(U.S.) the game]. <br />
: A way of organizing the perennial invalid arguments/distraction tactics that come up against a divisive topic (particularly an anti-oppression topic), by collecting all the usual arguments and tactics and arranging them on a bingo card. See: [http://infotrope.net/blog/2009/06/16/the-porny-presentation-bingo-card/ porny presentation bingo], [http://bootshatesthat.blogspot.com/2009/01/racism-bingo.html racism bingo], [http://viv.id.au/blog/20070414.431/anti-feminist-bingo-a-master-class-in-sexual-entitlement/ anti-feminist bingo]. <br />
: "We have bingo": said when any given anti-oppression discussion or commenter to a particular anti-oppression discussion has trotted out a sufficient number of the listed problematic statements. <br />
<br />
; brainweasels: Nefarious little critters made of fear, doubt, and self-hatred that dwell in your head. The anthropomorphised (mustelidamorphised?) representation of inwardly-directed negative thoughts. Not to be confused with the common domestic ferret, who are cute little house-weasels and a comfort rather than a source of dread. <br />
<br />
; B.S. Johnson: The [http://wiki.lspace.org/wiki/Bergholt_Stuttley_Johnson Discworld Character], infamous inventor. Known to include steam power in some of his "works". <br />
<br />
; cake: Gratuitous references to cake are often references to the "cake" motif in Portal, including the Jonathan Coulton song, [http://en.wikipedia.org/wiki/Still_Alive "Still Alive"] ([http://www.youtube.com/watch?v=RthZgszykLs video]), that plays during the credits, although they may also refer to the meme "It is delicious cake. You must eat it." (from [http://en.wikipedia.org/wiki/4chan#.2Fb.2F /b/]), or even [http://en.wikipedia.org/wiki/MacArthur_Park_(song) "MacArthur Park"]. However, gratuitous references to cake are sometimes merely referring to actual cake; one must not discount cake's innate tastiness.<br />
<br />
; cat macros: Images of cats with funny captions. Sometimes used as a form of protest and/or mockery. Also referred to as LOLcats. (From the internet.) See [http://icanhascheezburger.com/ I Can Has Cheezburger]. <br />
<br />
; "clean all the things"/"clean ALL the things?": Most often a reference to [http://hyperboleandahalf.blogspot.com/2010/06/this-is-why-ill-never-be-adult.html Hyperbole and a Half: This is Why I'll Never be an Adult]. Snowcloned as "X 'all' the Y?" <br />
: Things using the "X 'all' the Y?" snowclone could also be a reference to the older [http://iownthepeas.ytmnd.com/ "I have ALL teh peas!!!" (has audio)]<br />
<br />
; Danga Interactive: The original company founded by <ljuser>bradfitz</ljuser> to manage LiveJournal. <br />
<br />
; darkroom: a game where people "enter the darkroom" and allow others to interact with them. Often sexually explicit and/or kinky. Anonymity is often allowed or encouraged. Not to be confused with a kinkmeme. <br />
<br />
; derailing: The conscious or unconscious process of destroying and confusing a conversation about productive but uncomfortable topics. [http://www.derailingfordummies.com/ Derailing for Dummies]<br />
<br />
; Dunning-Kruger effect: People who are sufficiently unskilled in a particular area lack knowledge of the benchmarks of that skill area, and perhaps the cognitive tools, to tell how bad they are, and will falsely estimate themselves at a far higher level of skill than they actually possess. (People at a high level of skill who assess their skills too low will often recalibrate their self-assessment upon seeing the actual performance of others.) [http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect Dunning-Kruger Effect on Wikipedia], [http://www.roughtheory.org/content/wearing-the-juice-a-case-study-in-research-implosion/ Rough Theory: "Wearing the Juice: a case study in research implosion" (#surveyfail)]<br />
<br />
; earworm: [http://en.wikipedia.org/wiki/Earworm a song that gets stuck in your head]. See <dwcomm>earworm</dwcomm> and <dwcomm>earwormhole</dwcomm>. <br />
<br />
; Ehlers-Danlos Syndrome, EDS: A group of inherited connective tissue disorders. Also, why people in IRC tend not to freak out too badly when Rahaeli announces she's got another dislocated joint again. [http://www.mayoclinic.com/health/ehlers-danlos-syndrome/DS00706 Mayo Clinic.] [http://en.wikipedia.org/wiki/Ehlers-Danlos_syndrome Wikipedia.] <br />
<br />
; ENOPARSE: Modeled after [http://en.wikipedia.org/wiki/Errno.h the standard C error library] but [http://mailman.nginx.org/pipermail/nginx/2011-August/028358.html not actually present in it], this error code expands to "Error: Not Parsed" (or "Sorry, I didn't understand that.") <br />
<br />
; fandom: A general term for a community of people who are fans of things, such as "sports fandom", or "Star Trek fandom". When used without qualification, it often (but not always) refers to Western science fiction and fantasy book and media fandom, or a certain subset of same. <br />
<br />
; fandom_wank, f_w: fandom_wank is an internet community, currently hosted on JournalFen.net, that collects and discusses reports of "wank" in the greater fandom community. "Wank" includes social trainwrecks and more, and the discussion allows anonymous commenting. Caveat lector: this community discusses social catastrophes anonymously, with a viewpoint valuing maximum humor/popcorn factor. <br />
<br />
; fisting: A sexual practice that gets mentioned a lot in IRC. [http://public.diversity.org.uk/deviant/fsfist.htm Probably more information on it than you wanted.] (Inherited habit from LJ Support IRC. <ljuser>burr86</ljuser> may be to blame.) <br />
<br />
; frog: the "rip-it, rip-it" fashion of un-knitting, or un-crocheting too for that matter. <br />
<br />
; game, the: [http://www.losethegame.com/main.htm The only winning move is not to play.] If you click the link, you may start playing. [http://xkcd.com/391/ But not to worry!]<br />
<br />
; gender binary: the concept that all humans neatly fit into biological male or female, or into social masculine and feminine. This is untrue first because of genetic or developmental conditions that do not fit neatly into male or female, second because not everyone identifies with social masculine or feminine (or the standard that a person picks one and only one), and third because some people's sex as assigned at birth does not match the societal gender presentation they identify most with. (From LGBTQ~ activism. See [http://en.wikipedia.org/wiki/Gender Gender on Wikipedia].) <br />
<br />
; Glitch: This game existed until 2012. From the website: "Glitch is a massively multi-player game built in the spirit of the web." http://www.glitch.com/ Has a lot of Kingdom of Loathing references. People talking cooking with ... really unusual recipes ... in IRC are sometimes playing Glitch. <br />
<br />
; headologist: Discworld slang for their equivalent of a mental health professional. <br />
<br />
; hit points: A means of measuring someone's ability to withstand damage/attack or perform tasks. Notional "hit points" can be regained readily/predictably by a generally-able-bodied/mentally healthy person. Contrast 'spoons'. (By analogy from [http://en.wikipedia.org/wiki/Health_(gaming) hit points in gaming].) <br />
<br />
; hivemind: Sharing the same brain or thoughts, usually expressed by saying the same thing at the same time. Commonly caused by spending too much time in IRC. ([http://en.wikipedia.org/wiki/Hive_mind General term], popularized in IRC. See also: bees.) <br />
<br />
; "I love everyone in this bar", references to "this bar" & everybody in it: [http://tvtropes.org/pmwiki/pmwiki.php/YMMV/HowImetyourmother TVtropes seems to indicate that this originated from How I Met Your Mother], in [http://www.imdb.com/title/tt0606115/ 2005's "The Pineapple Incident]. It has since come unmoored from its origins and spread all across tumblr and half the internet, and is used to declare (often platonic, sometimes not) adoration for everyone in the general vicinity, regardless of whether it's a bar, a comment thread, or the entire IRC channel. <br />
: MissKat may have been responsible for bringing the phrase off Tumblr and into IRC via YAPC:NA '13. <br />
<br />
; Ia! Ia!: The thing you say when summoning one of the [http://en.wikipedia.org/wiki/Cthulhu_Mythos Great Old Ones]. (In his house at Ry'leh Great Cthulhu lies dreaming, unless it's been summoned on irc again.) May occasionally [http://qdb.dreamwidth.net/dw/488 summon the wrong being]. Also sometimes seen as "Ia! Ia! Cthulhu fth'agn!"<br />
<br />
; Impostor Syndrome: A spurious sense of incompetence in one's chosen field. [http://xkcd.com/616/ Or even at adulthood, perhaps.] [http://en.wikipedia.org/wiki/Impostor_syndrome Impostor Syndrome on Wikipedia, mostly useful for the references]. (Based on the Dunning-Kruger effect, looking at the actual performance of others may be helpful, though the publicly available information about others in that field may not include all of their missteps and self-doubt.) <br />
<br />
; intersectionality: The concept that a person in a disadvantaged situation is likely to have more than one factor contributing, and the factors involved are likely to compound the bad situation. For example, a person who cannot afford the power chair that would allow them to take a job outside of the home; a woman of color who is hesitant to report a sexist co-worker to a racist boss; a jobless gay man with no savings who cannot get assistance from government, family, or church. [http://en.wikipedia.org/wiki/Intersectionality Intersectionality on Wikipedia]<br />
<br />
; Kaycee-Nicole: a [http://en.wikipedia.org/wiki/Kaycee_Nicole notable internet hoax] involving illness and death. <br />
<br />
; (the) keys are right next to each other, keys are right etc.: A joke made about typos, generally under one of the following conditions:<br />
:1) The keys are, in fact, literally right next to each other on that keyboard layout. (Uncommon.)<br />
: 2) Browser/phone/other interface autocomplete/autocorrect, or finger/other input autocomplete; so used to typing something that it comes out in situations where it's not entirely appropriate. <br />
: 3) Something completely weird and out of context with absolutely no reason for it to happen, such as <ljuser>bubba</ljuser> typing "emily" instead of "wireless" (and knowing no-one named Emily at the time): "My emily isn't working." <br />
: (Inherited from [http://qdb.unmutuals.com/view.cgi/support/320 LJ Support IRC]; may originate from [http://bash.org/?5300 bash.org].) <br />
<br />
; kinkmeme: an often-anonymous, often sexually explicit, fanfiction prompting game. Usually the game defines the fandom that the game is set in and ground rules. People leave prompts naming character(s) and themes or plot points (originally, specific kinks), and other people post "fills", usually in the form of short fiction that contains the specified character(s) and prompt(s). Not to be confused with a darkroom. <br />
<br />
; lumberjack; gone off to be a lumberjack: quit working or disappeared, often in a flagrantly notable way. Errant servers are often said to have gone off to become a lumberjack. References the [http://en.wikipedia.org/wiki/The_Lumberjack_Song Monty Python Lumberjack song]. (An ordinary man with a boring job declares his ambition to be a lumberjack in the middle of a broadcast, with backup singers; the sketch ends with confusion from the singers when the would-be lumberjack's number makes reference to his ambition to cross-dress.) <br />
<br />
; memetic prophylactic recommended, mpr: A warning that the content at the other end of the link, while entirely possibly free from any of the sexual, strong language, scatological, and/or violent properties that might warrant a standard NSFW warning, may in fact contain the sort of "PEOPLE ARE WRONG ON THE INTERNET" reaction that may cause various rage, disgust, and the need to place one's brain in a wrongheadedness-proof condom to keep all the <em>ew</em> out. Coined by collaboration between <ljuser>james_nicoll</ljuser> and his commenters: [http://james-nicoll.livejournal.com/1678912.html James Needs a New Tag], [http://james-nicoll.livejournal.com/1684116.html 'the new warning label will be "memetic condom recommended"'], [http://james-nicoll.livejournal.com/1684116.html?thread=27922068#t27922068 metahacker suggests the final form]. [http://james-nicoll.livejournal.com/1689567.html First use.]<br />
<br />
; Minecraft: "Minecraft is a game about placing blocks to build anything you can imagine. At night monsters come out, make sure to build a shelter before that happens." [http://minecraft.net Description from Minecraft's official website.] (Sort of like multiplayer Lego with optional exploding zombies.) If people in IRC are talking about grand construction and/or landscaping projects, it might be this. <br />
: The community for the DW IRC Minecraft server (moderated) is <dwcomm>minecraft_irc</dwcomm>. <br />
<br />
; mouse, mice: An anonymous user or users. (A-nonny-mouse.) <br />
<br />
; nipplegate: A controversial LiveJournal event involving exposed nipples in default userpics. (From LiveJournal.) This is not the Open Source Boob Project. <br />
<br />
; Open Source Boob Project: Charitably put, a convention social experiment that rather notably did not scale well when proposed to be taken outside of the environment at that particular convention with those particular people. This is not nipplegate. [http://geekfeminism.wikia.com/wiki/Open_Source_Boob_Project On the Geek Feminism wiki]<br />
<br />
; pantsless website: when a website appears without its stylesheets, due to high load or other technical errors. This often appears as a white page showing only the main content text and images, missing all of the expected backgrounds and navigation links. Originated from nanowrimo.org load problems. <br />
<br />
; pastede on yey: very obviously an image manipulation, or some feature that has been very obviously added after the fact and in a particularly horrible way. (From a [http://www.journalfen.net/community/fwgreatesthits/4064.html fandom_wank] disaster wherein someone tried to claim an actor was her boyfriend with a "my hed iz pastede on yey" photo.) <br />
<br />
; ping: To briefly contact someone, generally on their preferred form of short-form contact. This is usually to get their attention prior to longer discussion, or to bring a matter that needs their attention to their attention. [http://www.catb.org/~esr/jargon/html/P/ping.html In general use in technical circles; this is definition 3 from the Jargon File.] <br />
:<dwuser>mark</dwuser> has a highlight set up for 'xb95' in IRC. <dwuser>denise</dwuser> prefers AIM, and tends to run silent (invisible status). [http://dw-lounge.dreamwidth.org/tag/contact+information Department head contact information viewable to other department heads.]<br />
:It can be helpful to quickly describe the reason for contact, for example, "Hi, one of your developers might be on fire; is this a good time to converse about fire safety measures and flame-retardant jackets?" has more detail than "Hi, can I ask you something?" The answers to "Do you have time for a social chat right now?" and "Do you have time for a technical chat on this subject?" may also be different, especially depending on whether someone is off-duty or on-duty at that time. <br />
<br />
; privilege: 1) An advantage or suite of advantages that most members of a non-minority class have as compared to most members of a minority class, often taken for granted by people who have this advantage. Sometimes the advantage takes the simple form of "lack of $DISADVANTAGE". (A term of art from minority rights activism. [http://blog.shrub.com/archives/tekanji/2006-03-08_146 More])<br />
:2) Special access to administrative functions of the Dreamwidth site. See [[Common_Jargon#Technical|Technical]]. (Inherited from LiveJournal's terminology for the same special access.) <br />
<br />
; pumpkin time: The time after which one will turn into a pumpkin. Generally a departure time or a bedtime. (Used in IRC, a reference to the Cinderella story.) <br />
<br />
; rabbit hole: a reference to Alice in Wonderland. Often used to describe discussions that may very quickly result in headaches for all involved. (could probably use some more expansion.)<br />
<br />
; Razz: [http://en.wikipedia.org/wiki/Razz_(poker) A variant of poker.] According to Rah, "Razz is the reason why poker players drink." <s>Rah plays Razz too often.</s> rah no longer plays Razz too often because the DOJ shut down her online poker site :(<br />
<br />
; red cape: 1) [http://xkcd.com/239/ Cory Doctorow is said to wear a red cape and goggles and blog from a high-altitude balloon.] [http://en.wikipedia.org/wiki/Cory_Doctorow#In_popular_culture Really.]<br />
: 2) The Dreamwidth official staff account user-head icon is a version of the regular user-head icon, with a red swirl, as of the swirl in the Dreamwidth stylized 'd', wrapped around it. This swirl has been referred to as the "red cape". <br />
<br />
; September, Eternal September: The (constant) influx of people unfamiliar with Usenet/internet basic netiquette, or unfamiliar with the local community's standards for conduct that differ from the internet at large. ([http://catb.org/jargon/html/S/September-that-never-ended.html The Jargon File], [http://en.wikipedia.org/wiki/Eternal_September Wikipedia])<br />
<br />
; scary devil monastery: alt.sysadmin.recovery, the Usenet group<br />
<br />
; slash: Fanfiction involving same-sex attraction, sex, or romance. The most restrictive definition would apply this only to sex/romance between two men who are straight or unspecificed in the source text. N00bs sometimes use it to refer to any sexually explicit fanfiction. (From the fanfictiony parts of fandom.) [http://fanlore.org/wiki/Slash Slash on Fanlore]<br />
<br />
; snowflake, special snowflake: Someone who demands special treatment based on their unique circumstances, particularly when their circumstances are not unique, or when they believe themselves to be in an extreme circumstance and are unaware that others have surpassed their record. [http://www.urbandictionary.com/define.php?term=special%20snowflake Urban Dictionary definition]<br />
<br />
; Spectacular Love (in pill form): from some spam in Peterstein (the private support category). Kat was tired.<br />
<br />
; spice: "I think so, Brain, but if the plural of mouse is mice, wouldn't the plural of spouse be spice?" From a [http://en.wikipedia.org/wiki/Pinky_and_the_Brain Pinky and the Brain] segment. (In common use in the polyamory community.) <br />
<br />
; spoons: Finite physical/mental/emotional resources, at a level significantly below average ability levels, to handle daily tasks. More: [http://echan.dreamwidth.org/1086.html WTF Spoons]. (From disability advocacy; term originated from an article on [http://www.butyoudontlooksick.com/articles/written-by-christine/the-spoon-theory-written-by-christine-miserandino/ But You Don't Look Sick?].) Compare 'hit points'. <br />
<br />
; strikethrough: A controversial LiveJournal event, involving the mass-suspension of a number of accounts, and the later unsuspension of most of them. (From LiveJournal.) <br />
<br />
; Tango Maureen and RENT, references to: The musical [http://en.wikipedia.org/wiki/Rent_(musical) RENT] contains a character named Mark. The song [http://www.stlyrics.com/lyrics/rent/rent.htm RENT] has the lines "The digital delay --- Didn't blow up (exactly); There may have been one teeny tiny spark-- YOU'RE NOT CALLING MARK!" and [http://www.stlyrics.com/lyrics/rent/tangomaureen.htm Tango Maureen] is the saga of Mark patching Maureen's broken equipment with Joanne. <br />
: Because <dwuser>mark</dwuser> is the person who usually gets paged when Dreamwidth blows up, this can sometimes result in IRC musical adventures. <br />
: Note: Twitter user [http://twitter.com/maureenjohnson @maureenjohnson] exists, but belongs to the YA author Maureen Johnson, not any incarnation of the RENT character Maureen Johnson (nor the Heinlein character Maureen Johnson). <br />
<br />
; trigger, trigger warning, tw: A [http://en.wikipedia.org/wiki/Trauma_trigger trauma trigger] is an environmental stimulus that awakens the involuntary playback of memories of a traumatic event. This process is highly unpleasant. <br />
: A [http://en.wikipedia.org/wiki/Seizure_trigger seizure trigger] can cause seizures; of particular concern on the internet is [http://en.wikipedia.org/wiki/Photosensitive_epilepsy photosensitive epilepsy]. <br />
: A [http://en.wikipedia.org/wiki/Migraine migraine] trigger. <br />
: Some subcultures, particularly ones with a high percentage of people who have experienced trauma, have seizure disorders or migraines, habitually label content that contains common trauma, seizure, or migraine triggers. These labels are known as "trigger warnings"; this is sometimes abbreviated "tw". Sometimes this sort of content, and other content (that may include individual triggers possessed by members of the expected audience), is descriptively labeled with the intent to aid people who appreciate trigger warnings, although the phrasing "trigger warning" is not present. <br />
: Some common triggers include: graphic description of abuse, violence, or rape; detailed descriptions of medical or dental procedures; detailed descriptions of self-harm behaviors, depressive thinking patterns, or disordered eating; sudden loud noises; and rapid blinking (including rapid changing in light levels or rapid changing of colors). Some of these triggers are unpleasant even for people who do not have traumatic memories that result in flashbacks. <br />
<br />
; wank: Aside from the obvious slang term, this also means any number of social upsets, generally of the sort that generate gossip and upsetness perhaps out of proportion with the actual problem. ("Did you hear about what Bit did to Figment?" "Yeah, talk about wank!") <br />
<br />
; wheelchair user: This is one of the preferred (by people who use wheelchairs) ways for their use to be described. "Confined to a wheelchair" is vastly inappropriate in many if not most cases, even if the person in question must exclusively use the wheelchair for even minor mobility; it would probably only be appropriate if the person in question felt their use of the wheelchair to be confining. See among other things [http://ysobel.dreamwidth.org/301593.html a general rant] from <dwuser>ysobel</dwuser>. In general when a long-term wheelchair user is confronted with stairs and other inaccessible architecture, the architect/designer gets the blame for not making the location adequately accessible, rather than the wheelchair taking the blame for not being able to traverse the stairs. <br />
<br />
; "wrong on the internet": A reference to [http://xkcd.com/386/ XKCD: Duty Calls]. <br />
<br />
; zilch: An addictive dice-rolling game, with a computer that cheats. Can be found in [[IRC]], in #dreamwidth-games. (If you want to start a game, try recruiting players in #dreamwidth.) For all mentions of Zilch, developers take 6d6 hit to productivity.<br />
<br />
=Abbreviations=<br />
== Common Abbreviations ==<br />
Abbreviations, acronyms, initialisms, and other fun shorthand. Some is internet-wide, some is specific to certain communities, and some is Danga-descended and Dreamwidth-specific. <br />
<br />
; afaik: As Far As I Know<br />
<br />
; afk: Away From Keyboard<br />
<br />
; AO3, AOOO: [http://archiveofourown.org/ Archive of Our Own], a project of the [http://transformativeworks.org/ Organization for Transformative Works], the other known majority-female Free Open Source Software project besides Dreamwidth. <br />
<br />
; BBB: Support shorthand for the Big Blue Box, also known as the Known Issues box. It can be found on the left-hand side of the [http://www.dreamwidth.org/support/ main DW Support page]. Inherited from LiveJournal Support. Anyone calling it the BYB (Big Yellow Box) is stuck in the early 2000s. <br />
<br />
; bk: back. Returned from whatever AFK state. <br />
<br />
; BML: See [[#Technical]]. <br />
<br />
; BNF: Big Name Fan. All the conflicting definitions seem to boil down to "a fan who is (very) famous within fandom". (From Western science fiction/fantasy book & media fandom.) More on [http://fanlore.org/wiki/BNF BNF on Fanlore]. <br />
<br />
; BPA: Blinkie Ponie Armie, a gaming guild composed mostly of former and current LiveJournal volunteers. (Crosses over with some current Dreamwidth volunteers.) <br />
<br />
; DMCA: [http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act Digital Millennium Copyright Act], which is less fun than [http://en.wikipedia.org/wiki/Y.M.C.A._%28song%29 YMCA, which at least has a fun song]. (It's harder to make a D with your arms and then get them back over your head for the M.) <br />
<br />
; FFF: In the context of IRC, usually Fey (<dwuser>foxfirefey</dwuser>), rather than the [http://www.urbandictionary.com/define.php?term=FFFFFFFFFFFFFFFFF similar emphatic minced oath], which can repeat the letter any number of times, usually from three on up. <br />
<br />
; ffs: For Fuck's Sake<br />
<br />
; GSoC: Google Summer of Code. [http://code.google.com/soc/ Official GSoC site]; Dreamwidth wiki orientation page: [[Summer of Code]]; Dreamwidth participated in 2010. <br />
<br />
; iawtc: I Agree With This Comment<br />
<br />
; idk: I Don't Know. Sometimes followed by [http://www.youtube.com/watch?v=4nIUcRJX9-o "my bff jill?" in reference to a TV commercial] that aired in the US at one point.<br />
<br />
; iirc: If I Recall Correctly<br />
<br />
; ikr, inorite: I know, right? Often said by members of the Support Triumvirate when expressing agreement.<br />
<br />
; imo, imho, imao: In My Opinion, In My Humble Opinion, In My Arrogant (or other suitable A-word) Opinion<br />
<br />
; iydmma: If You Don't Mind My Asking<br />
<br />
; LYS: Local Yarn Store/Shop. Fiber arts geekery. Usually not a national/international chain, and with more Very Nice Yarn than mega-chains are apt to have. That place where you go and come out reeling with a surprisingly large set of bags and a corresponding chunk taken out of the entertainment budget. (Or, come out with nothing at all, lest the budget be blown entirely.) <br />
<br />
; NSFW/NWS: Not Safe For Work / Not Work-Safe. Content that the average boss/mother-in-law might not appreciate. NSFW is a moving target that varies by the person and/or organization defining it, but some common likely categories are: <br />
* Sex/smut/porn<br />
* Nudity<br />
* Strong language/profanity<br />
* Scatological/gross humor<br />
:You can mark an entry as NSFW by setting the Age Restriction to Viewer Discretion Advised, and get warned about NSFW entries [http://www.dreamwidth.org/manage/settings/?cat=display by setting your Viewing Adult Content setting to Content Should Be Viewed with Discretion]. [http://www.dreamwidth.org/support/faqbrowse?faqid=147 FAQ] (From the internet.) <br />
<br />
; ofc: of course <br />
<br />
; OP: Original Poster. Usually the author of the entry or the originator of a comment thread; used in long comment threads. From message board slang. <br />
<br />
; OTW: Rather than Off The Wall or On The Way, this is likely to mean the [http://transformativeworks.org/ Organization for Transformative Works] when used in the context of Dreamwidth. They make the [http://archiveofourown.org/ Archive of Our Own]. <br />
:While the OTW's logo, a red arrow bent into a capital O, pointing counter-clockwise, enclosed in a red circle, can at a casual glance and small resolutions be confused with the simplified version of Dreamwidth's logo (a red line spiraling counterclockwise inward), the organizations are separate, with separate operations and leadership. There is some incidental overlap between OTW and Dreamwidth developers and technical support. <br />
<br />
; PC: In the context of comment threads, this is usually Parent Commenter rather than Personal Computer or Politically Correct. From message board slang. <br />
<br />
; ph: Phone. Away from keyboard on account of phone call. <br />
<br />
; PWD: Rather than an abbreviation for "password", People with Disabilities. From disability advocacy. <br />
<br />
; PWP: A type of fanfiction. Originally, this stood for "Plot? What Plot?", used of short mood pieces, smut without any attempt at a framing plot, or short action sequences without lead-in or resolution. As it is largely used for context-free smut, some readers have back-formed the initialism to stand for "Porn Without Plot". <br />
<br />
; RFC: Request For Comment. See Technical for more information. <br />
<br />
; RTE: Rich Text Editor. See Technical for more information. <br />
<br />
; SPN: the TV show [http://www.supernaturalwiki.com/index.php?title=Main_Page Supernatural]. <br />
<br />
; TAB: Temporarily Able-Bodied: someone who is currently without physical disablity. From disability advocacy. <br />
<br />
; til: Today I Learned<br />
<br />
; tl;dr, tl,dr: Too Long, Didn't Read. Usually said as either a joke or an insult. Sometimes "written out" or pronounced as Teal Deer.<br />
<br />
; TT: Template Toolkit. See Technical for more information. <br />
<br />
; ttants: Things That Are Not The Same. Two or more things that were generally recently mistaken for each other by the person who just said that, usually of similar spelling but wildly dissimilar meaning, often hilarious and/or wrong if one is substituted for the other. <br />
<br />
; UGT: Universal Greeting Time. http://www.total-knowledge.com/~ilya/mips/ugt.html Why "Good morning!" upon entering an IRC channel, regardless of anyone's local time, is a thing. <br />
<br />
; UTC: Co-ordinated Universal Time. The world standard baseline time, and generally server time as well. http://wwp.greenwichmeantime.com/info/utc.htm<br />
<br />
; WIP: Work-In-Progress. Often said of a piece of fanfiction that is still being written (especially a piece of fanfiction that is being posted serially as it is being written), but also applies to other projects. <br />
<br />
; wtf: Often "What the Fuck"; on Dreamwidth, also "Watch-Trust-Friend"; see Technical <br />
<br />
; WYSIWYG: What You See Is What You Get. <br />
<br />
; WYSINWYG, WYSI...: What You See Is Not What You Get, and other joke initialisms at the expense of the Rich Text Editor. What You See Has No Relation To What You Get. What You See Is Only Sometimes What You Get. What You See Just Ate What You Got. And so forth. <br />
<br />
; ymmv: Your Mileage May Vary; this is my experience or general experience, but yours may be different. ("your mileage may vary" is a disclaimer from auto commercials)<br />
<br />
== Other Resources ==<br />
very large [http://www.webopedia.com/quick_ref/textmessageabbreviations.asp Webopedia list of abbreviations]<br />
<br />
also very large [http://www.netlingo.com/acronyms.php Netlingo list of abbreviations]<br />
<br />
[http://www.abbreviations.com/acronyms/CHAT Abbreviations.com list of abbreviations]<br />
<br />
[http://www.gaarde.org/acronyms/ gaarde.org list of internet acronyms and initialisms]<br />
<br />
=Technical= <br />
<br />
; Beta: Contrary to the precedent set by things like Gmail, "beta" actually means "we expect that stuff is going to be broken, that's why it's not out of beta yet". (From geek jargon.) (OMG, Gmail is out of beta now!! WHAT IS THE WORLD COMING TO!?) ....Annnd Dreamwidth is out of beta as of [[Dreamwidth Timeline#April 2011 |2011 April 30]]! <br />
<br />
; Bikeshed(ding): Descending into increasingly-fine hair-splitting and world-ending pro/con over an issue that's rather small in the grander scheme of the project, particularly in a "push" environment such as e-mail. See [[Bikeshed]]. (From the Open Source technical community.) <br />
<br />
; bless, blessed, unblessed: [http://perldoc.perl.org/functions/bless.html Perl jargon involving objects]. <br />
<br />
; Blocking Launch: An obsolete priority classification status for Dreamwidth bugs. Items that <strong>must</strong> be fixed before Dreamwidth can be [[Roadmap#Milestone:_Site_Launch|launched]]/considered out of beta. Features that are listed as blocking launch will not be artificially delayed until the time of launch, but launch cannot happen until all of these are fixed/in place.<br />
<br />
; BML: A kind of scary language that Brad created to write parts of the site in. Stands for (Brad/Better/Block) Markup Language. See the [[BML]] article on this very wiki. [http://bradfitz.com/misc/bct/#bml Brad's History of BML] Dreamwidth is being migrated from BML to Template Toolkit, as BML makes it harder than it might be to separate code from design. <br />
<br />
; bug, b00g: Something that is broken (not working as intended), or broken-as-designed (working as intended, but "as intended" is not workable). <br />
: Any ticket filed in [http://bugs.dwscoalition.org Bugzilla], whether it is an actual bug, an enhancement, a new feature, a documentation request, or some other request-for-work. <br />
<br />
; Cacti: A [http://www.cacti.net/ network graphing tool] that Mark uses a lot. <br />
<br />
; CARL: Cross-site Authenticated Reading List, the planned mechanism by which one will eventually be able to read locked entries from friends on other sites. It was originally intended for reading LiveJournal entries, but [http://dw-news.dreamwidth.org/27853.html that had to be abandoned, and when implemented, it will likely be limited to sites running the Dreamwidth code]. <br />
<br />
; CARP: Cross-site Authenticated Reading Page, a previous term for CARL. [[Cross-site_authenticated_RSS | Discussion.]]<br />
<br />
; Chef: [http://wiki.opscode.com/display/chef/About+Opscode+Chef An open-source tool to automatically set up servers just right according to a pre-set recipe.] <br />
: On LiveJournal, Chef was a cluster named during the [http://en.wikipedia.org/wiki/South_Park South Park] character cluster naming era. It was infamous for dodgy performance. <br />
<br />
; Clone: An exact copy, or a copy that is identical in most major respects. In the context of the Dreamwidth project, this is generally used to refer to other journaling sites based on the LiveJournal code that have not made significant functional alterations to the code. Dreamwidth is not, strictly speaking, a clone of LiveJournal. See: Fork, [[LJ-based_Services]]. Dreamwidth itself now has a few daughter sites that could be termed clones. <br />
<br />
; Debian: [http://www.debian.org/ Debian] is a free operating system that uses the Linux kernel and some GNU operating system tools. <br />
:While Debian's logo, a spattered red line spiraling clockwise inward, reminiscent of the Fibonacci spiral, can at a casual glance and small resolutions be confused with the simplified version of Dreamwidth's logo (a smooth red line spiraling counterclockwise inward in a roughly circular shape, derived from Dreamwidth's stylized lower-case D), the organizations are separate. It is unknown how many Dreamwidth-affiliated developers and users prefer or use Debian. <br />
<br />
; Dragon: Dragon Naturally Speaking is dictation and accessibility software that can be used to give voice control of the computer. It can cause results similar to [http://damnyouautocorrect.com/ DamnYouAutoCorrect] (gallery of images of hilariously awful autocorrections, mostly iPhone, mostly not adequately alt-texted). <br />
<br />
; Edges: Data that makes <dwuser>foxfirefey</dwuser> very happy. See [[Data_Sources]]. <br />
<br />
; Enhancement: A change that improves or enhances an existing feature. Not quite a true bug, because the feature would have been working OK before that, and not a whole new feature, just something that makes an existing feature better. <br />
<br />
; ESN: Event-Subscription-Notification, the original development name for what eventually became the inbox/[http://www.dreamwidth.org/support/faq.bml#notify notification] system. (From LiveJournal developers.) <br />
<br />
; FCKEditor, FCKEd, CKEditor: [http://ckeditor.com/what-is-ckeditor FCKEditor] is the open-source WYSIWYG editor used by Dreamwidth and LiveJournal, more familiarly known as the Rich Text Editor, or RTE. The FCKEditor is named for its creator, Frederico Caldeira Knabben. With version 3.0, it was renamed the CKEditor. <br />
<br />
; Fork, code fork: Like a fork in a road, [http://en.wikipedia.org/wiki/Fork_(software_development) code that has been taken in a different developmental direction from the main project]. In the context of Dreamwidth development, this generally is used to refer to Dreamwidth's relationship to LiveJournal, as Dreamwidth has active development in other directions. [http://rosemaryedghill.livejournal.com/8481.html?thread=89377#t89377 Colorful explanation.]<br />
<br />
; Gearman: An asynchronous job scheduling engine, of the type "do this somewhere else". Benefits: somewhere else, fast. Flaws: currently if it dies jobs are lost (apparently the team that manages it is working on that). Name is an anagram of "manager"; from LiveJournal days. [http://azurelunatic.dreamwidth.org/6323528.html IRC log with history/discussion] <br />
* [[Production_Notes#Gearman|Gearman on Dreamwidth]] <br />
* [[Setting up Gearman]] for the Dreamhack<br />
* [http://gearman.org/ gearman.org]<br />
<br />
; Git: the new-to-us [http://en.wikipedia.org/wiki/Revision_control code version control system], to help make tracking/sorting out the contributions of infinitely many developers sweating over infinitely many keyboards be less like attempting to keep a torrential rainstorm away from the delicate electronics with a rake, and more like a well-ordered hackspace. [[Git Getting Started]]<br />
<br />
; Guru meditation: an [http://en.wikipedia.org/wiki/Guru_Meditation error code thrown by the Varnish cache server (and others, elsewhere, but DW uses Varnish)]. This is generally a temporary error, indicating that the server wants to be a lumberjack and has to take a moment to adjust its suspenders and/or bra. <br />
<br />
; i18n: [http://en.wikipedia.org/wiki/Numeronym abbreviation] for "internationalization", the ability of a software program to work with different languages, alphabets, cultural conventions, and so forth. <br />
<br />
; JAWS: a screenreader (assistive software for the visually impaired). [http://www.freedomscientific.com/products/fs/jaws-product-page.asp JAWS homepage]<br />
<br />
; Leaning Toothpick Syndrome: the \/ and \\\\ stuff that tends to happen a lot in regexes<br />
<br />
; MogileFS: Mogile FileSystem, the system that runs behind the userpics, is an anagram of OMG FILES. From LiveJournal development. <br />
<br />
; Nagios: A [http://www.nagios.org/ monitoring system] used to advise Mark (and IRC) about whether Dreamwidth is functioning properly. See [[#Volunteer/IRC-Specific|the Volunteer/IRC section]] for further info. <br />
<br />
; OpenID: A way for a website to know that you totally are who you claim to be from that other website over there. [http://azurelunatic.livejournal.com/6054113.html An informal explanation.] [http://www.dreamwidth.org/support/faqbrowse.bml?faqid=62 Dreamwidth OpenID FAQ] (From LiveJournal; Brad developed it!) <br />
<br />
; Peterstein, Disco King: The private support category that receives mail sent to the support@ email address. Blame Mark. ;) <br />
<br />
; Priv, privilege: Access to various special administrative site functions, such as viewing sensitive support requests, viewing screened proposed answers to support requests that other users have left, viewing spam reports, and taking various administrative actions. Privs are granted in a chain of trust that culminates with the site owners; one may be granted the priv to hand out more privs to others. Privs may be restricted by arguments or granted globally (unarged). "What privs do I have?" "Not enough to do your job. I'm granting you some more privs." (Inherited from LiveJournal.) See [[Privileges]]. <br />
<br />
; PubSubHubbub, PuSH: A way to make syndicated stuff update like greased lightning. From Google (and Brad!); the implementation is courtesy of our good friends in the LJ dev department. Sometimes also called Fred for short. <br />
<br />
; Puppet: an open source data center automation and configuration management framework. That is to say, a way for the system administrators to set up computers quickly. See [[Production Puppet]]<br />
<br />
; replicate, cannot replicate, replication: Dreamwidth has two master databases that are supposed to be identical copies of each other. Nagios freaks out when one copy is lagging behind the other. Nagios also cheerfully informs everyone when things are back to normal. <br />
<br />
; RFC: Request For Comment. An invitation for constructive and thorough criticism of the proposed concept. In general use in certain technical communities. Also, one of the founding documents describing standards that the internet attempts to abide by. Examples: [http://www.faqs.org/rfcs/rfc3330.html RFC 3330] [http://www.ietf.org/rfc/rfc2324.txt RFC 2324] <br />
<br />
; RTE: Rich Text Editor, something that lets you add formatting to text as well as just do plain text. Contrast with HTML editor (plain text, although you can type in HTML formatting manually). LJ's RTE gathered a lot of dislike from LJ volunteers. It is built based on the open source FCKEditor. The LiveJournal and Dreamwidth implementations have a reputation for being (pick your favorite) delicate, buggy, or broken. (From internet in general & LiveJournal.) <br />
<br />
; screenreader: an item of assistive technology used primarily by visually impaired users. Screenreaders read text on web pages aloud, allowing users to use websites without seeing them. <br />
<br />
; Test Driven Design: Uncanny_Kate explains: "One thing that a lot of people, including me, dig is something called Test Driven Design. Which means, to fix a bug or write a new feature, first you write a test for how it should work. It'll fail, until you write the code, but then you can be super confident your test works. And if you do that long enough, you can run the test suite and be super confident you didn't break anything else." <br />
<br />
; TheSchwartz: An asynchronous job scheduling engine of the "Do this and tell me later" type. Has persistent queue support. It was named after Brad's manager, Mike Schwartz, the VP of Engineering at Six Apart, and may also have been a reference to Spaceballs (with Brad you never know). Solid, has a lot of overhead and a lot of setup. [http://azurelunatic.dreamwidth.org/6323528.html IRC log with history/discussion] [[Production_Notes#TheSchwartz|TheSchwartz on Dreamwidth]] [http://search.cpan.org/~bradfitz/TheSchwartz-1.07/lib/TheSchwartz.pm TheSchwartz on cpan.org]<br />
<br />
; Template Toolkit, TT: The templating system that's replacing BML when building site pages; all existing BML pages are planned to eventually be migrated to using TT. Free Open Source Software, 99% less Eldritch Horror. See [[Routing and Template Toolkit]] and http://template-toolkit.org/<br />
<br />
; Upstream: A flag in Dreamwidth's implementation of Bugzilla that is a courtesy to LiveJournal developers, to alert them that a bug inherited from the LiveJournal codebase has been patched. LiveJournal is actively encouraged to pick up patches that have been flagged for upstreaming. Yay Open Source! <br />
<br />
; WTF/Project WTF: Rather than "What The Fuck", this is Watch-Trust-Friend(s), the project of splitting LiveJournal's original Friends into Watch/Trust (this eventually became Read/Access). (From LiveJournal development and then Dreamwidth development.)<br />
<br />
; WTF-8: When UTF-8 encoding, or lack thereof, causes problems.<br />
<br />
=People= <br />
==Staff==<br />
;<dwuser>Mark</dwuser>: Mark Smith is one half of the founding team of Dreamwidth. He is also known as <dwuser>xb95</dwuser>.<br />
;<dwuser>Denise</dwuser>: Denise Paolucci is one half of the founding team of the site. She is known as Rahaeli or rah on IRC. She is also known as D and <dwuser>synecdochic</dwuser>.<br />
;<dwuser>Fu</dwuser>: Afuna is the first full-time Dreamwidth employee. She answers to <dwuser>Afuna</dwuser> or Fu. <br />
;<dwuser>MissKat</dwuser>: Kat joined the team on January 1, 2013. She is also <dwuser>zarhooie</dwuser>. <br />
<br />
; [http://www.dreamwidth.org/site/staff Staff Page]: All staff, and most department heads.<br />
<br />
; <dwuser>Sarah</dwuser>: Married to <dwuser>denise</dwuser>, helps with technical support. <br />
; <dwuser>janinedog</dwuser>/Janine/J9: Was married to <dwuser>mark</dwuser>. A developer. <br />
; Ari: Mark's partner and co-parent. <br />
<br />
; MrsJ: Collectively, the people who can handle staff issues are sometimes known as "MrsJ", which was short for the owners and their wives at the time of site launch: Mark, Rah, Sarah, and Janine. This personnel lineup has since changed, and now includes Mark (co-owner), Rah (co-owner), Fu (employee), Sarah (Rah's wife), and sometimes Robby (backup sysadmin).<br />
<br />
==Other People==<br />
;<ljuser>Brad</ljuser>: [http://en.wikipedia.org/wiki/Brad_Fitzpatrick Brad Fitzpatrick] is the original creator of LiveJournal. While he is not affiliated with the Dreamwidth project, if someone name-drops "Brad", it's probably him. (However, <dwuser>brad</dwuser> is not him.)<br />
<br />
;People the owners have worked with/near in the past, partial list: Brad (<ljuser>bradfitz</ljuser>), Brad's Mom (<ljuser>sandy</ljuser>), Hachi (<ljuser>hachi</ljuser>), Abe (<ljuser>burr86</ljuser>), Mart (<ljuser>mart</ljuser>), MK, BB, Carrie (<ljuser>coffeechica</ljuser>), Dave "worst username evar" Recordon (<ljuser>daveman692</ljuser>), Tupshin (<ljuser>tupshin</ljuser>), Stacey (<dwuser>nova</dwuser>), Whitaker (<ljuser>whitaker</ljuser>) (but not [http://azurelunatic.dreamwidth.org/6353528.html Whitaker's Mom]).<br />
<br />
; Dave "Worst Username Evar" Recordon (<ljuser>daveman692</ljuser>): a legacy LiveJournal employee, involved with the creation of OpenID. <br />
: [05:20] <V_PauAmma_V> [...] I'm not sure how the "worst username ever" joke got started, but when LJ started listing the "purged, available to rename to" usernames list, that joke was enshrined on the LJ homepage blurb for that page.<br />
: [05:23] <rahaeli> it started because NONE OF US COULD EVER TYPE HIS USERNAME<br />
: [05:23] <rahaeli> it took us like two years to learn the numbers<br />
: [05:23] <rahaeli> so brad dubbed him "worst username evar"<br />
: [05:23] <rahaeli> (plz to note that it's 'evar' and not 'ever')<br />
<br />
MissHat: <dwuser>zarhooie</dwuser>|MissKat speaks fluent typo. <br />
<br />
; Momijizukamori: "... the kanji combo is 'guardian of the maple tree burial mound'. More or less. It's a really dorky reference to an old CLAMP [manga] series."<br />
<br />
; PauAmma: Pau's nickname is a reference to [http://www.online-literature.com/poe/164/ The Crab that Played with the Sea]. The 'V's are pincers. <br />
<br />
<br />
<br />
<br />
;<strong>Confusingly similar nicks</strong>: Some people in IRC/mentioned in IRC look similar but aren't the same person. <br />
<br />
;~aeli: rahaeli is not niqaeli, although they are certainly friends. <br />
<br />
; Alex: there are now at least three regulars who answer to Alex. <br />
<br />
;az*: There are at least four IRC-folks over time starting with 'az': <br />
: <dwuser>azurelunatic</dwuser>|Azz (two zs)<br />
: azureye<br />
: azetidine|aze, <br />
: the former azalais|az (one z) <br />
<br />
;fitz: <ljuser>bradfitz</ljuser> is not [http://foxfirefey.dreamwidth.org/tag/cats:+fitzwilliam Fitzwilliam], <dwuser>foxfirefey</dwuser>'s younger flame point cat. <br />
<br />
;j*c: jc|jc` and JDC|<dwuser>jd</dwuser> are not the same person, even though they've both been around since beginning days. <br />
<br />
;jl*: jlb and jld are different people, though they know each other. <br />
<br />
;pineapple: pineapple and pineapplechild are not the same person, nor is pineapple the mother of pineapplechild. Nor the other way around.<br />
<br />
; RH|: Nicks starting with RH are either <dwuser>RebelsHeart</dwuser> in some afk mode, or a specific member of the Rhymers' House (<dwuser>not_a_sniglet</dwuser>). Check the whois in your IRC client if uncertain. <br />
<br />
; Ricky: both jeshyr and Amianym answer to Ricky offline. <br />
<br />
;simon: _Simon_ and _NotSimon_ are both Simon, just the latter is afk. <br />
<br />
<br />
;<strong>Nicknames from DW-Drew</strong>: <dwuser>dreamatdrew</dwuser>|DW-Drew|Algol (the Ogre star) has many nicknames for many people, many of which are not self-explanatory unless you happened to be there at the time. Sometimes other people also use these nicknames, but sometimes not. <br />
<br />
; Assface: A typo that DW-Drew assiduously attempts to avoid but sometimes runs into anyway, for Azzface (<dwuser>azurelunatic</dwuser>|Azz). <br />
<br />
; bible-stud: vlion, based on the time when his attempted nick-change to vlion|biblestudy got truncated by one letter. <br />
<br />
; Dracca: DW-Drew's mother. <br />
<br />
; fish, fishen: <dwuser>ghoti</dwuser>, ghoti14 on IRC. While theoretically [http://en.wikipedia.org/wiki/Ghoti this is universal], in practice it is a mostly-from-Drew spelling. <br />
: "fish" may also refer to some of the "chatfish", members of a YA readers group of Azz's. <br />
: See also: [http://www.imdb.com/title/tt0266543/quotes?qt0396991 "Fish are friends, not food."] (ghoti is a friend-grade fish, not sushi-grade.) <br />
<br />
; frog: <dwuser>woggy</dwuser>, whose default userpic is a frog and whose username comes from "polliwog". <br />
<br />
; Herbie: jeshyr|<dwuser>rb</dwuser>, referencing an Asimov story in which a robot with the letters RB became Herbie. <br />
<br />
; Iggy: <dwuser>ivorygates</dwuser>, formed from the initials I.G.<br />
<br />
; Mr. Zog: Azz's Motorola [http://en.wikipedia.org/wiki/Mr._Zog's_Sex_Wax SURFboard] router. <br />
<br />
; Slaver: xb95; this references the game EVE Online, where xb95 has an [http://wiki.eveonline.com/en/wiki/Amarr Amarr] pilot.<br />
<br />
; throwrug: Allen. You sort of had to be there, for values of "there" that are YAPC:NA '13<br />
<br />
==Artificial, Fictional or Otherwise Questionable Reality==<br />
These individuals, while present or mentioned in IRC from time to time, are not always inhabiting the same reality as most of the rest of us. Sometimes it's not wise to follow them to their home dimension. <br />
<br />
; Alertsy: a Nagios IRC bot. <br />
<br />
; Anna: a Support-bot originally programmed by Sophie (with features from past bots), for #lj_support. Named for the Basshunter song "Boten Anna". Decommissioned with the decommissioning of LiveJournal's private server. <br />
<br />
; Bit: Originally a standalone bot in #lj_support. See: Fig|Bit. <br />
<br />
; Charlotte: a legacy LJ bot. <br />
<br />
; <dwuser>fairlight</dwuser>: Sometimes present in IRC. See [http://tiferet.dreamwidth.org/profile/ Tiferet's profile] for details. <br />
<br />
; Fig|Bit: An IRC bot, run by <dwuser>sophie</dwuser>. The bot gives different responses when addressed as "Fig" than when addressed as "Bit". Fig is a Support-bot, an infobot, and has some other features. Bit is a decision bot. Most of the time, the bot's answers are pre-programmed. Very occasionally, not. See [[IRC]]. <br />
<br />
; Frank: Frank the Goat, LiveJournal's mascot. <br />
<br />
; Goat: a legacy #lj_support Support-bot. Notably rude. <br />
<br />
;INGVA: [http://qdb.dreamwidth.net/dw/7 QUEEN] OF THE [http://azurelunatic.dreamwidth.org/6281178.html?thread=11191002#ljcmt11191002 WILD PLACES]<br />
<br />
; jdn: <dwuser>twopointoh</dwuser> & <dwuser>jdn</dwuser>. [http://qdb.dreamwidth.net/dw/248 Fictional character], written by a number of people but usually Rah, sometimes shows up in IRC (as jdn). See [http://www.kekkai.org/synecdochic/sg1/bw.html Broken Wings] and [http://www.kekkai.org/synecdochic/sg1/mezzanine/index.html Mezzanine]. (Warning: if you commence a scarily literary-crossed-with-lowbrow rant and find yourself losing your capital letters, you may have been channeling jdn. The standard cure is to finish writing the rant.) Not to be confused with <dwuser>jd</dwuser>, who is in IRC as JD or JDC.<br />
<br />
; RWHell: an IRC bot. See [[IRC]].<br />
<br />
=Volunteer/IRC-Specific=<br />
<br />
; #dw: (Previously) The Official Dreamwidth IRC Channel. Either refers to when the channel was on Mark's server (prior to [http://wiki.dwscoalition.org/notes/Dreamwidth_Timeline#March_2010 March 2010]) and was named #dw, or is shorthand for the current channel name. <br />
<br />
; #dreamwidth: The Official Dreamwidth IRC Channel, on irc.freenode.net, from [http://wiki.dwscoalition.org/notes/Dreamwidth_Timeline#March_2010 March 2010] onward. See [[IRC]]. Sometimes referred to as #dw for short. All official Dreamwidth IRC channels on Freenode actually start with #dreamwidth- although people may say #dw- instead, as it is both the usual shorthand and was the channel name on Mark's old server. Sometimes sub-channels are abbreviated further, such as # -bitch for #dreamwidth-bitch, # -dev for #dreamwidth-dev, and so on. Sometimes unofficial channels, like #dw-tmi, are actually #dw-. <br />
<br />
; <nowiki>$lj::will_not_work_without_steam_radiator</nowiki>: A [http://www.dreamwidth.org/interests?int=%24lj::will_not_work_without_steam_radiator popular interest], originating at a time that involved a lot of code refactoring that converted $lj methods over to generic methods, and when Rah needed an interest that started with a non-alphanumeric character to test something. A reference to http://qdb.dreamwidth.net/dw/73, which is itself a reference to http://wiki.lspace.org/mediawiki/index.php/Bergholt_Stuttley_Johnson<br />
<br />
; Alton Brown anal nachos: Alton Brown's perhaps unnecessarily fussy [http://www.foodnetwork.com/recipes/alton-brown/ultimate-nachos-recipe2/index.html recipe for nachos]. (From IRC. You really had to be there. [http://azurelunatic.dreamwidth.org/6222720.html For those who weren't there, a log: it was a bit too saucy for the QDB. Also long.]) <br />
<br />
; Anna: Usually a reference to the [http://www.basshunter.se/ Basshunter] song [http://basshunter.tgl0be.org/video,BotenAnna,English "Boten Anna"] ([http://www.youtube.com/watch?gl=GB&hl=en-GB&v=RYQUsp-jxDQ YouTube], [http://www.lyrics007.com/Basshunter%20Lyrics/Boten%20Anna%20%5BEnglish%20Ver.%5D%20Lyrics.html English lyrics]), about an IRC bot named Anna. LJ Support IRC had a support-bot named Anna, from whom the #dreamwidth bot [[IRC#Fig-Bit | Fig]] is descended/cloned. <br />
<br />
; axolotl: [http://rho.dreamwidth.org/12709.html Payments silliness.]<br />
<br />
; babydev: Affectionate term for a [[Dev_Getting_Started|beginning developer]]. Generally used of developers who are new at development in general, not just new to the project. Gender-neutral. Some neophytes may wish to not be referred to as "baby-" anything; do respect their wishes. <br />
<br />
; babydev-bait: An effort-minor bug that would be an excellent introductory bug for a beginning developer. See [[Newbie Guide: Getting Started on Windows]].<br />
<br />
; bananas: [http://dw-support-training.dreamwidth.org/1697.html Make like a banana in the presence of ice cream and split!] (Kat got bored)<br />
<br />
; bees, full of bees: A certain kind of metaphorical stingy badness. Brought to IRC mainly by <dwuser>jld</dwuser>. References include [http://www.youtube.com/watch?v=Xs-tl6GBOBo Eddie Izzard: "Covered in beeeees"], [http://en.wikipedia.org/wiki/Swarm_%28comics%29 the supervillain Swarm], [http://www.youtube.com/watch?v=_XcT49ms4yg Conan: Oprah bee giveaway sketch], [http://www.flickr.com/photos/keinsignal/468795874/ Urethra bees] and [http://community.livejournal.com/metaquotes/5989568.html "That'll get you bees."] See also: hivemind. <br />
<br />
; <dwcomm>beginningcocks</dwcomm>: In the early days of #dw, there was call for a 101-level cooking community. One person returned having created <dwcomm>boilingwater</dwcomm>. Another returned having created <dwcomm>beginningcooks</dwcomm>. Naturally, someone -- several someones -- mis-read the latter, in the same predictable way. And thus <dwcomm>beginningcocks</dwcomm> was created. <br />
<br />
; [[Book of Wholesome Hobbies]] (that Denise has forbidden her volunteers from taking part in): A list of ha-ha-only-serious rules for [[IRC]] denizens and volunteers. <br />
<br />
; Borg: Any of a generous number of possible monolithic large-corporate entities that certain members of channel may or may not work for. References the Star Trek villains. <br />
<br />
; botsmack: [http://qdb.dreamwidth.net/dw/533 Sometimes Bit likes a good spanking.] See also: botsnack. <br />
<br />
; botsnack: a treat given to any of the channel's bots. See also: botsmack. <br />
<br />
; Brad, in his dorm room, with BML: Reminiscent of the solution to a game of Clue, this occasionally is said of inherited code that has generally not been modified since its creation on LiveJournal. An Azz-ism. <br />
<br />
; bunneh: (verb) to do something (answer a question, approve an entry in a moderation queue, etc.) faster than someone else. Common uses are "Bunnehed!" or "You bunnehed me!" Compare to "Jinx!" when someone has done something at the same time. <br />
: (noun) one who is fast and likely to bunneh others often. From "quick like bunneh", through a "Wow, that was fast!" user comment on a LiveJournal support request that got an answer very fast. (Note: the division of LiveJournal volunteers into bunnehs and sharks based on which requests they prefer to answer or act on appears far less common among Dreamwidth volunteers.) ([http://wiki.livejournal.org/index.php/Bunneh Inherited from LiveJournal Support].) <br />
<br />
; butterfinger: A candy bar or a finger that is buttered. Mark branched out into [http://qdb.dreamwidth.net/dw/46 fanfiction]. (From IRC.) <br />
<br />
; bus (non-essential and/or metaphorical, often seen being sent to hEll): A reference to [http://www.slate.com/id/2223749/ "hit by a bus" as "unexpected tragedy"], and discussions about what would happen if both Mark and Denise were to be hit by a bus at the same time. [[Operating_Agreement]]<br />
<br />
; Camp Permabanned: Where particularly enthusiastic/persistent spammers are sent. (An Azz-ism, and also a joke based on Camp Permafrost from Bujold's Vorkosigan series.) <br />
<br />
; Cat: Short for Support Category. (From LiveJournal support.) <br />
: Public cat: support category where the requests are publicly viewable. <br />
: Private cat: support category where only a few people (staff, and possibly senior volunteers) have the privs to view and/or answer. <br />
<br />
; catgoat: freerangefatty's cat Mau nibbles on <em>everything</em>. [http://caturday.dreamwidth.org/tag/mau Pictures of Mau]<br />
<br />
; channelstaples: notional staples that are said to keep someone who keeps disconnecting from the server stapled there. (Popular in LJ IRC, and perhaps other places.) <br />
<br />
; chemla, the: [http://dw-support-training.dreamwidth.org/4161.html a dance]. Not to be confused with Chemla, who is <dwuser>ChemicalLace</dwuser> the volunteer. <br />
<br />
; chugga chugga: The sound made by a steam train chugging along. Also, the sound made by <dwuser>MissKat</dwuser> plowing through a bunch of requests. STEAM POWERED. <br />
; clocktower: If someone in IRC has 'clocktower' after their name, it means they're pretty mad about something. (From LJ Support IRC, an irreverent reference to crazed campus shooters.) <br />
<br />
; coed(s), invite coed(s): A deliberate misspelling of 'code', as in 'invite code(s)'. (From LiveJournal.) <br />
<br />
; Commit-and-Ditch pony: When someone does something that breaks stuff, and leaves everybody else with the mess, they are awarded the Commit-and-Ditch Pony. This can take the form of an actual toy pony, a pony virtual gift, or merely informing the offender that they now hold the pony. (From [http://desh.livejournal.com/269183.html OpenMoko development], via LiveJournal volunteers.)<br />
<br />
; (gone to) Costa Rica (with the Peace Corps): The default example for someone who has gone away from the internet for an extended length of time, but has not abandoned their journal despite lack of activity. From LiveJournal volunteers: long-time LJ volunteer <ljuser>christine</ljuser> did just this. <br />
<br />
; Disco: Support's private category is powered by this. (Mark started it; Kat continued it.) See Technical, Peterstein. <br />
<br />
; Drewspeak, DW-Drew (obscure things said by): <dwuser>dreamatdrew</dwuser> has a set of jargon all his own, including some unique nicknames given to assorted channel regulars. "Drew, 'splain!" is a relatively common refrain. (Feel free to ask if you don't understand something that was said.) <br />
<br />
; ELF: Enthusiastic Little Fucker. Said of particularly prolific spammers before they are sent to Camp Permabanned. <br />
<br />
; finfers: typo for "fingers" (easy on qwerty keyboard). Subject to fish jokes. <br />
<br />
; fish and whistles: A more derisive variant of [http://www.catb.org/jargon/html/B/bells-and-whistles.html "bells and whistles"], although it is probably useful to note that the power user is probably talking about [http://www.catb.org/jargon/html/C/chrome.html "chrome"]. Specifically refers to features requested by users that would play out badly if implemented. (Originates from a [http://news.livejournal.com/98192.html?thread=44350352#t44350352 mock flamewar in LiveJournal news], and references the classic IRC concept of trouting.) <br />
<br />
; football field: Azz is probably looking for/putting on/turning on/dropping her cellphone headset. ([http://azurelunatic.dreamwidth.org/7058342.html Azz lives in a Faraday cage. Azz talks on her cellphone to MissKat a lot.]) <br />
<br />
; Frank: LiveJournal's goat mascot. <br />
<br />
; Fred: a more friendly name for PubSubHubbub (see Technical). <br />
<br />
; fruit loops: Appropriate-answer silliness. <br />
:<code>[17:31] * ysobel dies giggling. you know, one of these days I really AM going to have to answer a request with gibberish</code><br />
:<code>[17:31] <MissKat> Even if she's like "and then the pink sparkley ponies will come and delete all your entries and replace them with froot loops!" I figure it's isa and she must know what she's talking about.</code><br />
:<code>[17:31] <domtheknight> OMG PINK SPARKLY PONIES</code><br />
:<code>[17:31] <domtheknight> FRUIT LOOPS</code><br />
:(from IRC) <br />
<br />
; gecko: Since Drew can't teleport very well, he sends a gecko to take care of his people. <br />
<br />
; Glitterhoof the Magic Fix Pony: <dwuser>mark</dwuser>, [http://dw-dev.dreamwidth.org/105483.html by way of] <dwuser>john</dwuser>. <br />
<br />
; Goat: Usually a reference to a legacy LiveJournal Support bot of that name. Goat reported on the current open support requests in a way similar to Anna, but with a different format. The command "Fig, be Goat" makes Fig give the report using Goat formatting. Goat made insulting comments to people who did not remember the syntax for his commands. Goat was probably named after LiveJournal's mascot, Frank the Goat. <br />
<br />
; going to the wiki: If you visit [http://wiki.dwscoalition.org http://wiki.dwscoalition.org] you see this message before it redirects to [http://wiki.dwscoalition.org/notes/Main_Page http://wiki.dwscoalition.org/notes/Main_Page]. It has therefore become customary to announce "Going to the wiki!" in varying stages of capslock upon going to the wiki (to look up something or edit). (Popularized on IRC.) <br />
<br />
; Green: a technical support question without an answer (or without an answer that has been reviewed and approved by senior support). Green is usually referred to numerically ("How much green?" "10."), which refers to the number of green requests. It can also be referred to in relative terms ("Lots.") or figurative ("Enough to fill a swimming pool!"). The support category "General/Unknown", commonly referred to as "G/Unk", spawned the phrase "green gunk", or "lime slime". (From LiveJournal support, based on the color coding of the Support system's user interface, which shows requests that are awaiting an approved response with a green background in the list of support requests.) <br />
<br />
; hEll, RWHell, Random Word hEll: An [[IRC]] bot in #dreamwidth. <br />
: One sends an item to hEll. hEll sneaks out a scaly hand and grabs the item. hEll's depths emit a sudden roar as it expels a previously entered item. Sometimes, hEll's depths continue to roar as it expels a second previously entered item. (Occasionally, hEll will burp and not expel any other items.) <br />
: hEll is neither endothermic nor exothermic, but maintains a fairly constant balance of items entered to items ejected. The rumor that hEll is sentient is just that, a rumor. (We hope.) <br />
: Read the origin story of [[Random Word Hell]]! And then one day Rah mentioned the bot in #dw, and Sophie got coding, and suddenly there was hEll. And then at the time of the server move, hEll became RWHell.<br />
<br />
; hooker: Crocheter: a person who works with a crochet hook. A Drew-ism. <br />
<br />
; HTH HAND: Hope This Helps, Have A Nice Day. Inherited from LiveJournal Support. A phrase that was used as a bad example: support answers were generally unsigned, and the specific phrase "hope this helps" implied some doubt that it might help at all. Picked up for sarcastic use to friends by some LJ volunteers. <br />
<br />
; kill you in the morning: A [http://www.imdb.com/title/tt0093779/quotes Princess Bride reference]. What else do you expect from the Dread Pirate Rah-berts? <br />
<br />
; kiwi: [http://qdb.dreamwidth.net/dw/321 Sometimes it's really hard to type 'wiki' correctly on the first try.]<br />
<br />
; Kitten: a support category that has very few requests in it. Wordplay. Support Category = Category = Cat; cat that is very small = kitten. (From LiveJournal support.) <br />
<br />
; mango, odd references to: at one point Azz said "what the mango-shitting fuck" as a random intensifier to "what the fuck". This caught on with a few people. <br />
<br />
; Mart bug death: Someone proposes something tiny and specialized, then Mart (a notable [http://www.joelonsoftware.com/articles/fog0000000018.html architecture astronaut]) generalized it to the abstract case and said "we should do it this way so it can be used for this other stuff", turning it from a five-minute fix to a five-month fix. Then (the death part) whoever came along who could do the five-minute fix, but not the five-month fix, would look at it and go "screw this" and <strong>never do it</strong>. There were approximately four people who could do the five-month version, so it would never get done, because they had a gazillion five-month projects. (From [http://community.livejournal.com/lj_dev/658149.html LiveJournal development], seen in the wild mentioned by <ljuser>mart</ljuser> in '04.) <br />
<br />
; mean hat: When a delegate ops up and tells everyone to stop talking by muting #dreamwidth. This is usually done to give people time to cool down after a particularly argumentative time. Usually, MissKat wears the mean hat on top of her tact hat.<br />
<br />
; minion: Assistant or direct report. (I think Rah started saying she had minions, asking for minions to do various tasks, calling people minions, and/or people started calling themselves Rah's minions?) <br />
<br />
; MrsJ: People who can handle staff issues (see [http://wiki.dwscoalition.org/notes/Common_Jargon#Staff Staff]. (DW Support shorthand.) Also, the regular communication sent from Support to staff listing issues that only members of MrsJ can handle. <br />
<br />
; Muppet: If people start calling Mark "Muppet", it's [http://dw-dev.dreamwidth.org/29363.html?thread=249523#cmt249523 MissKat's fault]. <br />
<br />
; nagios: In IRC, nick '''nagios''' (now '''Alertsy''' after the Freenode server move) is the monitoring bot. Various people will change their nicks to '''_nagios_''' or similar variations to make jokes about the bot. [http://qdb.dreamwidth.net/dw/137 History of the HEY MARK HEY MARK HEY MARK jokes] See Technical for more information. <br />
<br />
; nethic: Internet hiccup. Often accompanied by a pingout. Someone who had an internet hiccup probably missed the last several lines of chat. <br />
<br />
; notwork, nyetwork: The network in geekosaur's motel-of-residence sort of doesn't. Work, that is. It is built on fail hardware that is not watertight enough to stand up to local rain, and additionally has absurdly bad topology and hilariously bad oversaturation on certain access points. <br />
<br />
; !pleh: 'Help!' spelled backwards. (From LiveJournal Support.) <br />
<br />
; pillowfort: refers to the secret hiding place of the Triumvirate + pony<br />
<br />
; plumbing not compatible: a reference to a [http://qdb.unmutuals.com/view.cgi/support/125 somewhat inappropriate conversation about orientation between Rah and Abe]. Often accompanied by little hand gestures. <br />
<br />
; qdb: [http://qdb.dreamwidth.net/ Quotes Database], a collection of particularly funny and/or memorable quotes uttered in various Dreamwidth IRC channels. This is maintained by <dwuser>sophie</dwuser>. (The Dreamwidth QDB was previously hosted on the same server as the LiveJournal volunteer IRC QDB (the original has gone down, but there is a [http://qdb.unmutuals.com/ mirror]), which also contains quotes from some staff and volunteers' shared history.) <br />
<br />
; Rahversation: refers to a conversation involving Rah (<dwuser>denise</dwuser>). Coined by <dwuser>ysobel</dwuser><br />
<br />
; SKULLBUTT THE TORMENTOR: Once upon a time, an underwear designer put a flaming skull on the front and back of a pair of briefs. (Ed Hardy. 2 Sword Skull.) Assorted #dw and #dw_nsfw people in and around <dwcomm>amusing_underwear</dwcomm> pointed and laughed. <ljuser>mayerman</ljuser> coined the name, and <dwuser>remark</dwuser> elevated it into a catchphrase. [http://wiki.dwscoalition.org/notes/File:Skullbutt.jpg Of course there's an icon.]<br />
<br />
; SNH, Still Needs Help: A support request that has already received at least one answer, but the user has "regreened" (indicated that they still need help, moving it from "answered, awaiting close", to "green"), and has replied with a follow-up question or more information. <br />
<br />
; Speaking of <x>, hello <y>: You may be greeted this way upon entering IRC. Likely as not, <x> has nothing to do with you; it was just the topic the moment before you entered. (This greeting habit was more prevalent in LJ volunteer IRC but still persists.) <br />
<br />
; spider: Since Drew can't teleport very well, the spider is his enforcer, like when people *cough*Inoru*cough* need to go to bed but aren't. <br />
<br />
; stekpanna: Swedish: skillet, frying pan. In Drewspeak, this is usually short for the Swedish "domedagengjutjärnstekpanna", which translates to "cast-iron skillet of doom". It is more of a weapon than a cooking implement. <br />
<br />
; teapatty, *|teapatty: Someone making reference to "teapatty" or changing their IRC nick to incorporate "teapatty" is either drunk or pretending not to be. At one point Wyn attempted to say "Not drunk, repeat, not drunk." Unfortunately for them, they were drunk enough that it came out "Not drunk, teapatty, not drunk." (From LiveJournal Support IRC.) <br />
<br />
; Tits Against the RTE: References a campaign to get the Rich Text Editor removed (or vastly improved) at LiveJournal during <ljuser>tupshin</ljuser>'s time there. <br />
<br />
; Triumvirate, The: refers to the current [[Support_process|support]] wranglers: <dwuser>Domtheknight</dwuser> (The Bug-Squashing Boots), <dwuser>zarhooie</dwuser> (The Tact Hat) and <dwuser>chemicallace</dwuser> (The All-Purpose Boa). The Triumvirate + Pony is the Triumvirate with the addition of the Froot Loop Pony, also known as <dwuser>ysobel</dwuser>.<br />
<br />
; twix: A candy bar, or a play on words involving "twixt". Mark branched out into [http://qdb.dreamwidth.net/dw/46 fanfiction]. (From IRC.)<br />
<br />
; voluntold: A portmanteau of "volunteer" and "told". The natural result of not having enough to do when around Rah, resulting in "... and when I came to, I realized that I'd just completed three bugs and was in charge of a project" type situations. <br />
<br />
; wgw, what goes where: A document detailing how (what department and process) handles a support request of any given type. (From LiveJournal support.) [[What Goes Where]]<br />
<br />
; worst username evar: David Recordon <ljuser>daveman692</ljuser>. Refers to a LiveJournal ad for rename tokens that featured his username. (From LJ.)<br />
<br />
= Emoticons =<br />
Dreamwidth IRC does not have very many non-standard emoticons in frequent use. There are occasional discussions where different non-standard emoticons are created, proposed, or used, but these are infrequent, and the same weird emoticon is rarely used twice. <br />
For example, '''[||||||| 8] \o/''' might represent a bus and an alarmed pedestrian, but this is rarely seen in actual chat. <br />
<br />
; User or community: '''()''', '''@''', and '''<^>''' are variously used to denote a user or community in text-only environments like IRC. <br />
: '''()xb95''' - user ; '''()omnomnom''' - community (regular)<br />
: '''@mark''' - user (official Dreamwidth user, or Twitter-style direct address for any DW user or IRC nick - Bugsy objects to '@' starting lines, however); '''@dw_news''' - community (official); sometimes used for regular communities <br />
: '''<^>lj_support''' - (usually) LiveJournal community; sometimes used for Dreamwidth community<br />
<br />
; '''*''': Surrounding a phrase, can indicate action or emotion, or emphasis: *grin*, *hugs*, "I *really* like it". <br />
<br />
; '''. o O (something)''': Thought bubble, thinking but not saying. <br />
<br />
; '''<_<''', '''>_>''': Eyes looking to the left or right and mouth. Sometimes used to indicate untrustworthiness of a statement ("I have no idea who ate the last piece of cake >_>"). <br />
<br />
; '''>_<''': Eyes tightly closed and frown. Disgust, self-deprecation, annoyance. <br />
<br />
; ''':|a''': Eyes, a flat mouth, and chin-scratching. Deep thought of some description. <br />
<br />
; '''o/''', '''\o''': Head with single (right or left) arm raised (waving, in greeting, or farewell). <br />
<br />
; '''\o/''': Head with two upraised arms: arms in the air cheering (genuine or sarcastic: "I just got a promotion \o/", "my toaster is on fire \o/"); enthusiastic greeting; arms in the air in confusion or panic, arms up over your head in water (drowning). <br />
<br />
; '''\o?''': common typographical error for '''\o/'''; (rare) scratching head in confusion. <br />
<br />
; '''o7''': a salute<br />
<br />
; '''/o\''': Arms protecting head, hands clutching head, or bucket on head. <br />
<br />
; '''~~\o/~~''': Waving (head with arms raised and motion squiggles) or drowning (head with arms raised and waves of water). <br />
: Strong armpit odor (rarely). <br />
<br />
; '''*\o/*''': Head with two upraised arms and pompoms: cheering. <br />
<br />
; '''*****\*o/''': Head with two upraised arms and a line of asterisks: running around, either with head on fire, or waving a feather boa. (Inherited from LiveJournal volunteer IRC.) <br />
<br />
; ''':U''', '''8U''', ''':V''': 3/4 profile face with mouth open<br />
<br />
== Other Emoticon Resources ==<br />
[http://en.wikipedia.org/wiki/List_of_emoticons Wikipedia list of emoticons]<br />
<br />
=Other Resources=<br />
== Cultures ==<br />
;[http://fanlore.org/wiki/Wiki Fanlore fandom wiki]: Information on selected public forms of fannish expression, in convenient wiki format. From the Organization for Transformative Works folks. <br />
; [http://geekfeminism.wikia.com/wiki/Geek_Feminism_Wiki Geek Feminism wiki]: A resource for and about women and people who are perceived as women in geek communities.<br />
<br />
== Jargon == <br />
;[http://catb.org/jargon/ Jargon File]: Many words from a gentler, more precise era of technology, although some are still in use today. <br />
;[http://wiki.livejournal.org/index.php/Category:Support_Jargon LiveJournal Support jargon]: there is some overlap of vocabulary due to the number of volunteers and IRC inhabitants who are former or current LiveJournal volunteers. <br />
; [http://knowyourmeme.com/ Know Your Meme]: Various bits of internet culture, sometimes the sort you'd find in a petri dish. <br />
;[http://www.urbandictionary.com/ Urban Dictionary]: Let the reader beware. (Often not safe for work -- or for other things, for that matter.)<br />
;[http://www.sassydoesit.com/glossary/knitting-definitions/ Sassy Does It's Knitting Definitions] <br />
;[http://www.ravelry.com/wiki/pages/KnittingLingo Glossary: Ravelry and Knit and Crochet Lingo and Acronyms] (more extensive, however login is required, although accounts are free)<br />
<br />
== QDBs == <br />
<br />
QDB stands for "Quotes Database". <br />
<br />
;[http://qdb.dreamwidth.net/ Dreamwidth IRC QDB]: A collection of quotes from Dreamwidth's [[IRC]] channels<br />
; <dwcomm>metaquotes</dwcomm>: Hilarity from around Dreamwidth, after the example of <ljcomm>metaquotes</ljcomm><br />
;[http://qdb.unmutuals.com/ LiveJournal Support QDB]: Contains many quotes from the shared past of volunteers who originated in LiveJournal volunteer culture. (<strong>Note</strong>: This is a mirror hosted by <dwuser>idonotlikepeas</dwuser>, as the original is gone, likely forever.)<br />
;[http://www.bash.org/ bash.org]: A much larger, multi-network IRC quotes database. Contains notably uncensored language and potentially offensive content.<br />
; http://qdb.us/: Another QDB, a fork of the same source file as bash.org<br />
<br />
== Miscellaneous ==<br />
; [http://www.imdb.com IMDb]: the Internet Movie Database, with more information than you knew you needed to know about movies, TV shows, actors, directors, plots, and more. <br />
; [http://en.wikipedia.org Wikipedia]: A user-updated encyclopedia of everything notable in the world. Not generally accepted for academic research, nor updated frequently enough for current events, but good for background reading, general overviews, and a list of preliminary sources for proper research. <br />
; [http://www.freebase.com Freebase]: an open database of variously useful information. Now owned by Google. <br />
<br />
[[Category: Getting Started]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Common_JargonCommon Jargon2013-07-01T12:01:55Z<p>Sophira: Add QDB link for "Ia! Ia!"</p>
<hr />
<div>The Dreamwidth project has some jargon in common use that may not be familiar to the general public. While these are not official terms that you should know, or necessarily Dreamwidth-specific, general explanations or definitions may be helpful. <br />
<br />
=[[Dreamwidth-Specific Jargon]]=<br />
{{:Dreamwidth-Specific Jargon}}<br />
<br />
=Words and Phrases= <br />
; accessible, accessibility, a11y: Making things (websites, buildings, et cetera) able to be not only accessed but usefully and fully used by anyone, including but not limited to people in wheelchairs, people with other mobility impairments, people with visual impairments, people with hearing impairments, people with cognitive impairments, text-only browser users, screenreader-only users, keyboard-only users, custom keyboard users, pointing-device-only users, and more. The goal here is to make Dreamwidth as accessible as possible. Developers are encouraged to check out <dwcomm>dw_accessibility</dwcomm> and the [[Accessibility Wishlist]]. <dwcomm>accessibility_fail</dwcomm> is when people do accessibility wrong (or don't do it at all). <br />
: a11y is a Twitter-friendly abbreviation for 'accessibility': a + 11 letters (ccessibilit) + y. History of this mode of abbreviation: http://www.i18nguy.com/origini18n.html<br />
<br />
; anon-fail: Someone who intended to comment anonymously accidentally leaving the comment while fully identified, in a way that revealed their identity to anyone who happened to be watching (or subscribed to email notifications) before the comment was deleted. Usually said in relation to an ongoing anonymous discussion, especially in anonymemes. <br />
<br />
; anonmeme, anonymeme, anonymous meme: a discussion or game where all participants are meant to be anonymous. These are often associated with an uncensored, anything-goes attitude, and can be very high-volume. <br />
<br />
; backscroll, scrollback, scrool: Things that happened in IRC while someone was connected but not actively watching, often in the context of "What are you guys on about? BRB, reading backscroll." (Common to many IRC/chat forums, not just DW's.) <br />
<br />
; "bake you cookies and write you porn": The helpful response of a tight-knit (usually fannish) internet community when one of their number is going through a rough patch. <br />
<br />
; baleet, bahleet: emphatic/silly form of 'delete'. <br />
: delete + ban<br />
<br />
; bandom: fandom (usually fic-writing/reading fandom) of various bands. http://zen.transformativeworks.org/wiki/Bandom_%28Music_Source_Text%29<br />
<br />
; banninate: verb. Emphatic/silly form of 'ban'. <br />
<br />
; bingo: [http://en.wikipedia.org/wiki/Bingo_(U.S.) the game]. <br />
: A way of organizing the perennial invalid arguments/distraction tactics that come up against a divisive topic (particularly an anti-oppression topic), by collecting all the usual arguments and tactics and arranging them on a bingo card. See: [http://infotrope.net/blog/2009/06/16/the-porny-presentation-bingo-card/ porny presentation bingo], [http://bootshatesthat.blogspot.com/2009/01/racism-bingo.html racism bingo], [http://viv.id.au/blog/20070414.431/anti-feminist-bingo-a-master-class-in-sexual-entitlement/ anti-feminist bingo]. <br />
: "We have bingo": said when any given anti-oppression discussion or commenter to a particular anti-oppression discussion has trotted out a sufficient number of the listed problematic statements. <br />
<br />
; brainweasels: Nefarious little critters made of fear, doubt, and self-hatred that dwell in your head. The anthropomorphised (mustelidamorphised?) representation of inwardly-directed negative thoughts. Not to be confused with the common domestic ferret, who are cute little house-weasels and a comfort rather than a source of dread. <br />
<br />
; B.S. Johnson: The [http://wiki.lspace.org/wiki/Bergholt_Stuttley_Johnson Discworld Character], infamous inventor. Known to include steam power in some of his "works". <br />
<br />
; cake: Gratuitous references to cake are often references to the "cake" motif in Portal, including the Jonathan Coulton song, [http://en.wikipedia.org/wiki/Still_Alive "Still Alive"] ([http://www.youtube.com/watch?v=RthZgszykLs video]), that plays during the credits, although they may also refer to the meme "It is delicious cake. You must eat it." (from [http://en.wikipedia.org/wiki/4chan#.2Fb.2F /b/]), or even [http://en.wikipedia.org/wiki/MacArthur_Park_(song) "MacArthur Park"]. However, gratuitous references to cake are sometimes merely referring to actual cake; one must not discount cake's innate tastiness.<br />
<br />
; cat macros: Images of cats with funny captions. Sometimes used as a form of protest and/or mockery. Also referred to as LOLcats. (From the internet.) See [http://icanhascheezburger.com/ I Can Has Cheezburger]. <br />
<br />
; "clean all the things"/"clean ALL the things?": Most often a reference to [http://hyperboleandahalf.blogspot.com/2010/06/this-is-why-ill-never-be-adult.html Hyperbole and a Half: This is Why I'll Never be an Adult]. Snowcloned as "X 'all' the Y?" <br />
: Things using the "X 'all' the Y?" snowclone could also be a reference to the older [http://iownthepeas.ytmnd.com/ "I have ALL teh peas!!!" (has audio)]<br />
<br />
; Danga Interactive: The original company founded by <ljuser>bradfitz</ljuser> to manage LiveJournal. <br />
<br />
; darkroom: a game where people "enter the darkroom" and allow others to interact with them. Often sexually explicit and/or kinky. Anonymity is often allowed or encouraged. Not to be confused with a kinkmeme. <br />
<br />
; derailing: The conscious or unconscious process of destroying and confusing a conversation about productive but uncomfortable topics. [http://www.derailingfordummies.com/ Derailing for Dummies]<br />
<br />
; Dunning-Kruger effect: People who are sufficiently unskilled in a particular area lack knowledge of the benchmarks of that skill area, and perhaps the cognitive tools, to tell how bad they are, and will falsely estimate themselves at a far higher level of skill than they actually possess. (People at a high level of skill who assess their skills too low will often recalibrate their self-assessment upon seeing the actual performance of others.) [http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect Dunning-Kruger Effect on Wikipedia], [http://www.roughtheory.org/content/wearing-the-juice-a-case-study-in-research-implosion/ Rough Theory: "Wearing the Juice: a case study in research implosion" (#surveyfail)]<br />
<br />
; earworm: [http://en.wikipedia.org/wiki/Earworm a song that gets stuck in your head]. See <dwcomm>earworm</dwcomm> and <dwcomm>earwormhole</dwcomm>. <br />
<br />
; Ehlers-Danlos Syndrome, EDS: A group of inherited connective tissue disorders. Also, why people in IRC tend not to freak out too badly when Rahaeli announces she's got another dislocated joint again. [http://www.mayoclinic.com/health/ehlers-danlos-syndrome/DS00706 Mayo Clinic.] [http://en.wikipedia.org/wiki/Ehlers-Danlos_syndrome Wikipedia.] <br />
<br />
; ENOPARSE: Modeled after [http://en.wikipedia.org/wiki/Errno.h the standard C error library] but [http://mailman.nginx.org/pipermail/nginx/2011-August/028358.html not actually present in it], this error code expands to "Error: Not Parsed" (or "Sorry, I didn't understand that.") <br />
<br />
; fandom: A general term for a community of people who are fans of things, such as "sports fandom", or "Star Trek fandom". When used without qualification, it often (but not always) refers to Western science fiction and fantasy book and media fandom, or a certain subset of same. <br />
<br />
; fandom_wank, f_w: fandom_wank is an internet community, currently hosted on JournalFen.net, that collects and discusses reports of "wank" in the greater fandom community. "Wank" includes social trainwrecks and more, and the discussion allows anonymous commenting. Caveat lector: this community discusses social catastrophes anonymously, with a viewpoint valuing maximum humor/popcorn factor. <br />
<br />
; fisting: A sexual practice that gets mentioned a lot in IRC. [http://public.diversity.org.uk/deviant/fsfist.htm Probably more information on it than you wanted.] (Inherited habit from LJ Support IRC. <ljuser>burr86</ljuser> may be to blame.) <br />
<br />
; frog: the "rip-it, rip-it" fashion of un-knitting, or un-crocheting too for that matter. <br />
<br />
; game, the: [http://www.losethegame.com/main.htm The only winning move is not to play.] If you click the link, you may start playing. [http://xkcd.com/391/ But not to worry!]<br />
<br />
; gender binary: the concept that all humans neatly fit into biological male or female, or into social masculine and feminine. This is untrue first because of genetic or developmental conditions that do not fit neatly into male or female, second because not everyone identifies with social masculine or feminine (or the standard that a person picks one and only one), and third because some people's sex as assigned at birth does not match the societal gender presentation they identify most with. (From LGBTQ~ activism. See [http://en.wikipedia.org/wiki/Gender Gender on Wikipedia].) <br />
<br />
; Glitch: This game existed until 2012. From the website: "Glitch is a massively multi-player game built in the spirit of the web." http://www.glitch.com/ Has a lot of Kingdom of Loathing references. People talking cooking with ... really unusual recipes ... in IRC are sometimes playing Glitch. <br />
<br />
; headologist: Discworld slang for their equivalent of a mental health professional. <br />
<br />
; hit points: A means of measuring someone's ability to withstand damage/attack or perform tasks. Notional "hit points" can be regained readily/predictably by a generally-able-bodied/mentally healthy person. Contrast 'spoons'. (By analogy from [http://en.wikipedia.org/wiki/Health_(gaming) hit points in gaming].) <br />
<br />
; hivemind: Sharing the same brain or thoughts, usually expressed by saying the same thing at the same time. Commonly caused by spending too much time in IRC. ([http://en.wikipedia.org/wiki/Hive_mind General term], popularized in IRC. See also: bees.) <br />
<br />
; "I love everyone in this bar", references to "this bar" & everybody in it: [http://tvtropes.org/pmwiki/pmwiki.php/YMMV/HowImetyourmother TVtropes seems to indicate that this originated from How I Met Your Mother], in [http://www.imdb.com/title/tt0606115/ 2005's "The Pineapple Incident]. It has since come unmoored from its origins and spread all across tumblr and half the internet, and is used to declare (often platonic, sometimes not) adoration for everyone in the general vicinity, regardless of whether it's a bar, a comment thread, or the entire IRC channel. <br />
: MissKat may have been responsible for bringing the phrase off Tumblr and into IRC via YAPC:NA '13. <br />
<br />
; Ia! Ia!: The thing you say when summoning one of the [http://en.wikipedia.org/wiki/Cthulhu_Mythos Great Old Ones]. (In his house at Ry'leh Great Cthulhu lies dreaming, unless it's been summoned on irc again.) Also sometimes seen as "Ia! Ia! Cthulhu fth'agn!" May occasionally [http://qdb.dreamwidth.net/dw/488 summon the wrong being].<br />
<br />
; Impostor Syndrome: A spurious sense of incompetence in one's chosen field. [http://xkcd.com/616/ Or even at adulthood, perhaps.] [http://en.wikipedia.org/wiki/Impostor_syndrome Impostor Syndrome on Wikipedia, mostly useful for the references]. (Based on the Dunning-Kruger effect, looking at the actual performance of others may be helpful, though the publicly available information about others in that field may not include all of their missteps and self-doubt.) <br />
<br />
; intersectionality: The concept that a person in a disadvantaged situation is likely to have more than one factor contributing, and the factors involved are likely to compound the bad situation. For example, a person who cannot afford the power chair that would allow them to take a job outside of the home; a woman of color who is hesitant to report a sexist co-worker to a racist boss; a jobless gay man with no savings who cannot get assistance from government, family, or church. [http://en.wikipedia.org/wiki/Intersectionality Intersectionality on Wikipedia]<br />
<br />
; Kaycee-Nicole: a [http://en.wikipedia.org/wiki/Kaycee_Nicole notable internet hoax] involving illness and death. <br />
<br />
; (the) keys are right next to each other, keys are right etc.: A joke made about typos, generally under one of the following conditions:<br />
:1) The keys are, in fact, literally right next to each other on that keyboard layout. (Uncommon.)<br />
: 2) Browser/phone/other interface autocomplete/autocorrect, or finger/other input autocomplete; so used to typing something that it comes out in situations where it's not entirely appropriate. <br />
: 3) Something completely weird and out of context with absolutely no reason for it to happen, such as <ljuser>bubba</ljuser> typing "emily" instead of "wireless" (and knowing no-one named Emily at the time): "My emily isn't working." <br />
: (Inherited from [http://qdb.unmutuals.com/view.cgi/support/320 LJ Support IRC]; may originate from [http://bash.org/?5300 bash.org].) <br />
<br />
; kinkmeme: an often-anonymous, often sexually explicit, fanfiction prompting game. Usually the game defines the fandom that the game is set in and ground rules. People leave prompts naming character(s) and themes or plot points (originally, specific kinks), and other people post "fills", usually in the form of short fiction that contains the specified character(s) and prompt(s). Not to be confused with a darkroom. <br />
<br />
; lumberjack; gone off to be a lumberjack: quit working or disappeared, often in a flagrantly notable way. Errant servers are often said to have gone off to become a lumberjack. References the [http://en.wikipedia.org/wiki/The_Lumberjack_Song Monty Python Lumberjack song]. (An ordinary man with a boring job declares his ambition to be a lumberjack in the middle of a broadcast, with backup singers; the sketch ends with confusion from the singers when the would-be lumberjack's number makes reference to his ambition to cross-dress.) <br />
<br />
; memetic prophylactic recommended, mpr: A warning that the content at the other end of the link, while entirely possibly free from any of the sexual, strong language, scatological, and/or violent properties that might warrant a standard NSFW warning, may in fact contain the sort of "PEOPLE ARE WRONG ON THE INTERNET" reaction that may cause various rage, disgust, and the need to place one's brain in a wrongheadedness-proof condom to keep all the <em>ew</em> out. Coined by collaboration between <ljuser>james_nicoll</ljuser> and his commenters: [http://james-nicoll.livejournal.com/1678912.html James Needs a New Tag], [http://james-nicoll.livejournal.com/1684116.html 'the new warning label will be "memetic condom recommended"'], [http://james-nicoll.livejournal.com/1684116.html?thread=27922068#t27922068 metahacker suggests the final form]. [http://james-nicoll.livejournal.com/1689567.html First use.]<br />
<br />
; Minecraft: "Minecraft is a game about placing blocks to build anything you can imagine. At night monsters come out, make sure to build a shelter before that happens." [http://minecraft.net Description from Minecraft's official website.] (Sort of like multiplayer Lego with optional exploding zombies.) If people in IRC are talking about grand construction and/or landscaping projects, it might be this. <br />
: The community for the DW IRC Minecraft server (moderated) is <dwcomm>minecraft_irc</dwcomm>. <br />
<br />
; mouse, mice: An anonymous user or users. (A-nonny-mouse.) <br />
<br />
; nipplegate: A controversial LiveJournal event involving exposed nipples in default userpics. (From LiveJournal.) This is not the Open Source Boob Project. <br />
<br />
; Open Source Boob Project: Charitably put, a convention social experiment that rather notably did not scale well when proposed to be taken outside of the environment at that particular convention with those particular people. This is not nipplegate. [http://geekfeminism.wikia.com/wiki/Open_Source_Boob_Project On the Geek Feminism wiki]<br />
<br />
; pantsless website: when a website appears without its stylesheets, due to high load or other technical errors. This often appears as a white page showing only the main content text and images, missing all of the expected backgrounds and navigation links. Originated from nanowrimo.org load problems. <br />
<br />
; pastede on yey: very obviously an image manipulation, or some feature that has been very obviously added after the fact and in a particularly horrible way. (From a [http://www.journalfen.net/community/fwgreatesthits/4064.html fandom_wank] disaster wherein someone tried to claim an actor was her boyfriend with a "my hed iz pastede on yey" photo.) <br />
<br />
; ping: To briefly contact someone, generally on their preferred form of short-form contact. This is usually to get their attention prior to longer discussion, or to bring a matter that needs their attention to their attention. [http://www.catb.org/~esr/jargon/html/P/ping.html In general use in technical circles; this is definition 3 from the Jargon File.] <br />
:<dwuser>mark</dwuser> has a highlight set up for 'xb95' in IRC. <dwuser>denise</dwuser> prefers AIM, and tends to run silent (invisible status). [http://dw-lounge.dreamwidth.org/tag/contact+information Department head contact information viewable to other department heads.]<br />
:It can be helpful to quickly describe the reason for contact, for example, "Hi, one of your developers might be on fire; is this a good time to converse about fire safety measures and flame-retardant jackets?" has more detail than "Hi, can I ask you something?" The answers to "Do you have time for a social chat right now?" and "Do you have time for a technical chat on this subject?" may also be different, especially depending on whether someone is off-duty or on-duty at that time. <br />
<br />
; privilege: 1) An advantage or suite of advantages that most members of a non-minority class have as compared to most members of a minority class, often taken for granted by people who have this advantage. Sometimes the advantage takes the simple form of "lack of $DISADVANTAGE". (A term of art from minority rights activism. [http://blog.shrub.com/archives/tekanji/2006-03-08_146 More])<br />
:2) Special access to administrative functions of the Dreamwidth site. See [[Common_Jargon#Technical|Technical]]. (Inherited from LiveJournal's terminology for the same special access.) <br />
<br />
; pumpkin time: The time after which one will turn into a pumpkin. Generally a departure time or a bedtime. (Used in IRC, a reference to the Cinderella story.) <br />
<br />
; rabbit hole: a reference to Alice in Wonderland. Often used to describe discussions that may very quickly result in headaches for all involved. (could probably use some more expansion.)<br />
<br />
; Razz: [http://en.wikipedia.org/wiki/Razz_(poker) A variant of poker.] According to Rah, "Razz is the reason why poker players drink." <s>Rah plays Razz too often.</s> rah no longer plays Razz too often because the DOJ shut down her online poker site :(<br />
<br />
; red cape: 1) [http://xkcd.com/239/ Cory Doctorow is said to wear a red cape and goggles and blog from a high-altitude balloon.] [http://en.wikipedia.org/wiki/Cory_Doctorow#In_popular_culture Really.]<br />
: 2) The Dreamwidth official staff account user-head icon is a version of the regular user-head icon, with a red swirl, as of the swirl in the Dreamwidth stylized 'd', wrapped around it. This swirl has been referred to as the "red cape". <br />
<br />
; September, Eternal September: The (constant) influx of people unfamiliar with Usenet/internet basic netiquette, or unfamiliar with the local community's standards for conduct that differ from the internet at large. ([http://catb.org/jargon/html/S/September-that-never-ended.html The Jargon File], [http://en.wikipedia.org/wiki/Eternal_September Wikipedia])<br />
<br />
; scary devil monastery: alt.sysadmin.recovery, the Usenet group<br />
<br />
; slash: Fanfiction involving same-sex attraction, sex, or romance. The most restrictive definition would apply this only to sex/romance between two men who are straight or unspecificed in the source text. N00bs sometimes use it to refer to any sexually explicit fanfiction. (From the fanfictiony parts of fandom.) [http://fanlore.org/wiki/Slash Slash on Fanlore]<br />
<br />
; snowflake, special snowflake: Someone who demands special treatment based on their unique circumstances, particularly when their circumstances are not unique, or when they believe themselves to be in an extreme circumstance and are unaware that others have surpassed their record. [http://www.urbandictionary.com/define.php?term=special%20snowflake Urban Dictionary definition]<br />
<br />
; Spectacular Love (in pill form): from some spam in Peterstein (the private support category). Kat was tired.<br />
<br />
; spice: "I think so, Brain, but if the plural of mouse is mice, wouldn't the plural of spouse be spice?" From a [http://en.wikipedia.org/wiki/Pinky_and_the_Brain Pinky and the Brain] segment. (In common use in the polyamory community.) <br />
<br />
; spoons: Finite physical/mental/emotional resources, at a level significantly below average ability levels, to handle daily tasks. More: [http://echan.dreamwidth.org/1086.html WTF Spoons]. (From disability advocacy; term originated from an article on [http://www.butyoudontlooksick.com/articles/written-by-christine/the-spoon-theory-written-by-christine-miserandino/ But You Don't Look Sick?].) Compare 'hit points'. <br />
<br />
; strikethrough: A controversial LiveJournal event, involving the mass-suspension of a number of accounts, and the later unsuspension of most of them. (From LiveJournal.) <br />
<br />
; Tango Maureen and RENT, references to: The musical [http://en.wikipedia.org/wiki/Rent_(musical) RENT] contains a character named Mark. The song [http://www.stlyrics.com/lyrics/rent/rent.htm RENT] has the lines "The digital delay --- Didn't blow up (exactly); There may have been one teeny tiny spark-- YOU'RE NOT CALLING MARK!" and [http://www.stlyrics.com/lyrics/rent/tangomaureen.htm Tango Maureen] is the saga of Mark patching Maureen's broken equipment with Joanne. <br />
: Because <dwuser>mark</dwuser> is the person who usually gets paged when Dreamwidth blows up, this can sometimes result in IRC musical adventures. <br />
: Note: Twitter user [http://twitter.com/maureenjohnson @maureenjohnson] exists, but belongs to the YA author Maureen Johnson, not any incarnation of the RENT character Maureen Johnson (nor the Heinlein character Maureen Johnson). <br />
<br />
; trigger, trigger warning, tw: A [http://en.wikipedia.org/wiki/Trauma_trigger trauma trigger] is an environmental stimulus that awakens the involuntary playback of memories of a traumatic event. This process is highly unpleasant. <br />
: A [http://en.wikipedia.org/wiki/Seizure_trigger seizure trigger] can cause seizures; of particular concern on the internet is [http://en.wikipedia.org/wiki/Photosensitive_epilepsy photosensitive epilepsy]. <br />
: A [http://en.wikipedia.org/wiki/Migraine migraine] trigger. <br />
: Some subcultures, particularly ones with a high percentage of people who have experienced trauma, have seizure disorders or migraines, habitually label content that contains common trauma, seizure, or migraine triggers. These labels are known as "trigger warnings"; this is sometimes abbreviated "tw". Sometimes this sort of content, and other content (that may include individual triggers possessed by members of the expected audience), is descriptively labeled with the intent to aid people who appreciate trigger warnings, although the phrasing "trigger warning" is not present. <br />
: Some common triggers include: graphic description of abuse, violence, or rape; detailed descriptions of medical or dental procedures; detailed descriptions of self-harm behaviors, depressive thinking patterns, or disordered eating; sudden loud noises; and rapid blinking (including rapid changing in light levels or rapid changing of colors). Some of these triggers are unpleasant even for people who do not have traumatic memories that result in flashbacks. <br />
<br />
; wank: Aside from the obvious slang term, this also means any number of social upsets, generally of the sort that generate gossip and upsetness perhaps out of proportion with the actual problem. ("Did you hear about what Bit did to Figment?" "Yeah, talk about wank!") <br />
<br />
; wheelchair user: This is one of the preferred (by people who use wheelchairs) ways for their use to be described. "Confined to a wheelchair" is vastly inappropriate in many if not most cases, even if the person in question must exclusively use the wheelchair for even minor mobility; it would probably only be appropriate if the person in question felt their use of the wheelchair to be confining. See among other things [http://ysobel.dreamwidth.org/301593.html a general rant] from <dwuser>ysobel</dwuser>. In general when a long-term wheelchair user is confronted with stairs and other inaccessible architecture, the architect/designer gets the blame for not making the location adequately accessible, rather than the wheelchair taking the blame for not being able to traverse the stairs. <br />
<br />
; "wrong on the internet": A reference to [http://xkcd.com/386/ XKCD: Duty Calls]. <br />
<br />
; zilch: An addictive dice-rolling game, with a computer that cheats. Can be found in [[IRC]], in #dreamwidth-games. (If you want to start a game, try recruiting players in #dreamwidth.) For all mentions of Zilch, developers take 6d6 hit to productivity.<br />
<br />
=Abbreviations=<br />
== Common Abbreviations ==<br />
Abbreviations, acronyms, initialisms, and other fun shorthand. Some is internet-wide, some is specific to certain communities, and some is Danga-descended and Dreamwidth-specific. <br />
<br />
; afaik: As Far As I Know<br />
<br />
; afk: Away From Keyboard<br />
<br />
; AO3, AOOO: [http://archiveofourown.org/ Archive of Our Own], a project of the [http://transformativeworks.org/ Organization for Transformative Works], the other known majority-female Free Open Source Software project besides Dreamwidth. <br />
<br />
; BBB: Support shorthand for the Big Blue Box, also known as the Known Issues box. It can be found on the left-hand side of the [http://www.dreamwidth.org/support/ main DW Support page]. Inherited from LiveJournal Support. Anyone calling it the BYB (Big Yellow Box) is stuck in the early 2000s. <br />
<br />
; bk: back. Returned from whatever AFK state. <br />
<br />
; BML: See [[#Technical]]. <br />
<br />
; BNF: Big Name Fan. All the conflicting definitions seem to boil down to "a fan who is (very) famous within fandom". (From Western science fiction/fantasy book & media fandom.) More on [http://fanlore.org/wiki/BNF BNF on Fanlore]. <br />
<br />
; BPA: Blinkie Ponie Armie, a gaming guild composed mostly of former and current LiveJournal volunteers. (Crosses over with some current Dreamwidth volunteers.) <br />
<br />
; DMCA: [http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act Digital Millennium Copyright Act], which is less fun than [http://en.wikipedia.org/wiki/Y.M.C.A._%28song%29 YMCA, which at least has a fun song]. (It's harder to make a D with your arms and then get them back over your head for the M.) <br />
<br />
; FFF: In the context of IRC, usually Fey (<dwuser>foxfirefey</dwuser>), rather than the [http://www.urbandictionary.com/define.php?term=FFFFFFFFFFFFFFFFF similar emphatic minced oath], which can repeat the letter any number of times, usually from three on up. <br />
<br />
; ffs: For Fuck's Sake<br />
<br />
; GSoC: Google Summer of Code. [http://code.google.com/soc/ Official GSoC site]; Dreamwidth wiki orientation page: [[Summer of Code]]; Dreamwidth participated in 2010. <br />
<br />
; iawtc: I Agree With This Comment<br />
<br />
; idk: I Don't Know. Sometimes followed by [http://www.youtube.com/watch?v=4nIUcRJX9-o "my bff jill?" in reference to a TV commercial] that aired in the US at one point.<br />
<br />
; iirc: If I Recall Correctly<br />
<br />
; ikr, inorite: I know, right? Often said by members of the Support Triumvirate when expressing agreement.<br />
<br />
; imo, imho, imao: In My Opinion, In My Humble Opinion, In My Arrogant (or other suitable A-word) Opinion<br />
<br />
; iydmma: If You Don't Mind My Asking<br />
<br />
; LYS: Local Yarn Store/Shop. Fiber arts geekery. Usually not a national/international chain, and with more Very Nice Yarn than mega-chains are apt to have. That place where you go and come out reeling with a surprisingly large set of bags and a corresponding chunk taken out of the entertainment budget. (Or, come out with nothing at all, lest the budget be blown entirely.) <br />
<br />
; NSFW/NWS: Not Safe For Work / Not Work-Safe. Content that the average boss/mother-in-law might not appreciate. NSFW is a moving target that varies by the person and/or organization defining it, but some common likely categories are: <br />
* Sex/smut/porn<br />
* Nudity<br />
* Strong language/profanity<br />
* Scatological/gross humor<br />
:You can mark an entry as NSFW by setting the Age Restriction to Viewer Discretion Advised, and get warned about NSFW entries [http://www.dreamwidth.org/manage/settings/?cat=display by setting your Viewing Adult Content setting to Content Should Be Viewed with Discretion]. [http://www.dreamwidth.org/support/faqbrowse?faqid=147 FAQ] (From the internet.) <br />
<br />
; ofc: of course <br />
<br />
; OP: Original Poster. Usually the author of the entry or the originator of a comment thread; used in long comment threads. From message board slang. <br />
<br />
; OTW: Rather than Off The Wall or On The Way, this is likely to mean the [http://transformativeworks.org/ Organization for Transformative Works] when used in the context of Dreamwidth. They make the [http://archiveofourown.org/ Archive of Our Own]. <br />
:While the OTW's logo, a red arrow bent into a capital O, pointing counter-clockwise, enclosed in a red circle, can at a casual glance and small resolutions be confused with the simplified version of Dreamwidth's logo (a red line spiraling counterclockwise inward), the organizations are separate, with separate operations and leadership. There is some incidental overlap between OTW and Dreamwidth developers and technical support. <br />
<br />
; PC: In the context of comment threads, this is usually Parent Commenter rather than Personal Computer or Politically Correct. From message board slang. <br />
<br />
; ph: Phone. Away from keyboard on account of phone call. <br />
<br />
; PWD: Rather than an abbreviation for "password", People with Disabilities. From disability advocacy. <br />
<br />
; PWP: A type of fanfiction. Originally, this stood for "Plot? What Plot?", used of short mood pieces, smut without any attempt at a framing plot, or short action sequences without lead-in or resolution. As it is largely used for context-free smut, some readers have back-formed the initialism to stand for "Porn Without Plot". <br />
<br />
; RFC: Request For Comment. See Technical for more information. <br />
<br />
; RTE: Rich Text Editor. See Technical for more information. <br />
<br />
; SPN: the TV show [http://www.supernaturalwiki.com/index.php?title=Main_Page Supernatural]. <br />
<br />
; TAB: Temporarily Able-Bodied: someone who is currently without physical disablity. From disability advocacy. <br />
<br />
; til: Today I Learned<br />
<br />
; tl;dr, tl,dr: Too Long, Didn't Read. Usually said as either a joke or an insult. Sometimes "written out" or pronounced as Teal Deer.<br />
<br />
; TT: Template Toolkit. See Technical for more information. <br />
<br />
; ttants: Things That Are Not The Same. Two or more things that were generally recently mistaken for each other by the person who just said that, usually of similar spelling but wildly dissimilar meaning, often hilarious and/or wrong if one is substituted for the other. <br />
<br />
; UGT: Universal Greeting Time. http://www.total-knowledge.com/~ilya/mips/ugt.html Why "Good morning!" upon entering an IRC channel, regardless of anyone's local time, is a thing. <br />
<br />
; UTC: Co-ordinated Universal Time. The world standard baseline time, and generally server time as well. http://wwp.greenwichmeantime.com/info/utc.htm<br />
<br />
; WIP: Work-In-Progress. Often said of a piece of fanfiction that is still being written (especially a piece of fanfiction that is being posted serially as it is being written), but also applies to other projects. <br />
<br />
; wtf: Often "What the Fuck"; on Dreamwidth, also "Watch-Trust-Friend"; see Technical <br />
<br />
; WYSIWYG: What You See Is What You Get. <br />
<br />
; WYSINWYG, WYSI...: What You See Is Not What You Get, and other joke initialisms at the expense of the Rich Text Editor. What You See Has No Relation To What You Get. What You See Is Only Sometimes What You Get. What You See Just Ate What You Got. And so forth. <br />
<br />
; ymmv: Your Mileage May Vary; this is my experience or general experience, but yours may be different. ("your mileage may vary" is a disclaimer from auto commercials)<br />
<br />
== Other Resources ==<br />
very large [http://www.webopedia.com/quick_ref/textmessageabbreviations.asp Webopedia list of abbreviations]<br />
<br />
also very large [http://www.netlingo.com/acronyms.php Netlingo list of abbreviations]<br />
<br />
[http://www.abbreviations.com/acronyms/CHAT Abbreviations.com list of abbreviations]<br />
<br />
[http://www.gaarde.org/acronyms/ gaarde.org list of internet acronyms and initialisms]<br />
<br />
=Technical= <br />
<br />
; Beta: Contrary to the precedent set by things like Gmail, "beta" actually means "we expect that stuff is going to be broken, that's why it's not out of beta yet". (From geek jargon.) (OMG, Gmail is out of beta now!! WHAT IS THE WORLD COMING TO!?) ....Annnd Dreamwidth is out of beta as of [[Dreamwidth Timeline#April 2011 |2011 April 30]]! <br />
<br />
; Bikeshed(ding): Descending into increasingly-fine hair-splitting and world-ending pro/con over an issue that's rather small in the grander scheme of the project, particularly in a "push" environment such as e-mail. See [[Bikeshed]]. (From the Open Source technical community.) <br />
<br />
; bless, blessed, unblessed: [http://perldoc.perl.org/functions/bless.html Perl jargon involving objects]. <br />
<br />
; Blocking Launch: An obsolete priority classification status for Dreamwidth bugs. Items that <strong>must</strong> be fixed before Dreamwidth can be [[Roadmap#Milestone:_Site_Launch|launched]]/considered out of beta. Features that are listed as blocking launch will not be artificially delayed until the time of launch, but launch cannot happen until all of these are fixed/in place.<br />
<br />
; BML: A kind of scary language that Brad created to write parts of the site in. Stands for (Brad/Better/Block) Markup Language. See the [[BML]] article on this very wiki. [http://bradfitz.com/misc/bct/#bml Brad's History of BML] Dreamwidth is being migrated from BML to Template Toolkit, as BML makes it harder than it might be to separate code from design. <br />
<br />
; bug, b00g: Something that is broken (not working as intended), or broken-as-designed (working as intended, but "as intended" is not workable). <br />
: Any ticket filed in [http://bugs.dwscoalition.org Bugzilla], whether it is an actual bug, an enhancement, a new feature, a documentation request, or some other request-for-work. <br />
<br />
; Cacti: A [http://www.cacti.net/ network graphing tool] that Mark uses a lot. <br />
<br />
; CARL: Cross-site Authenticated Reading List, the planned mechanism by which one will eventually be able to read locked entries from friends on other sites. It was originally intended for reading LiveJournal entries, but [http://dw-news.dreamwidth.org/27853.html that had to be abandoned, and when implemented, it will likely be limited to sites running the Dreamwidth code]. <br />
<br />
; CARP: Cross-site Authenticated Reading Page, a previous term for CARL. [[Cross-site_authenticated_RSS | Discussion.]]<br />
<br />
; Chef: [http://wiki.opscode.com/display/chef/About+Opscode+Chef An open-source tool to automatically set up servers just right according to a pre-set recipe.] <br />
: On LiveJournal, Chef was a cluster named during the [http://en.wikipedia.org/wiki/South_Park South Park] character cluster naming era. It was infamous for dodgy performance. <br />
<br />
; Clone: An exact copy, or a copy that is identical in most major respects. In the context of the Dreamwidth project, this is generally used to refer to other journaling sites based on the LiveJournal code that have not made significant functional alterations to the code. Dreamwidth is not, strictly speaking, a clone of LiveJournal. See: Fork, [[LJ-based_Services]]. Dreamwidth itself now has a few daughter sites that could be termed clones. <br />
<br />
; Debian: [http://www.debian.org/ Debian] is a free operating system that uses the Linux kernel and some GNU operating system tools. <br />
:While Debian's logo, a spattered red line spiraling clockwise inward, reminiscent of the Fibonacci spiral, can at a casual glance and small resolutions be confused with the simplified version of Dreamwidth's logo (a smooth red line spiraling counterclockwise inward in a roughly circular shape, derived from Dreamwidth's stylized lower-case D), the organizations are separate. It is unknown how many Dreamwidth-affiliated developers and users prefer or use Debian. <br />
<br />
; Dragon: Dragon Naturally Speaking is dictation and accessibility software that can be used to give voice control of the computer. It can cause results similar to [http://damnyouautocorrect.com/ DamnYouAutoCorrect] (gallery of images of hilariously awful autocorrections, mostly iPhone, mostly not adequately alt-texted). <br />
<br />
; Edges: Data that makes <dwuser>foxfirefey</dwuser> very happy. See [[Data_Sources]]. <br />
<br />
; Enhancement: A change that improves or enhances an existing feature. Not quite a true bug, because the feature would have been working OK before that, and not a whole new feature, just something that makes an existing feature better. <br />
<br />
; ESN: Event-Subscription-Notification, the original development name for what eventually became the inbox/[http://www.dreamwidth.org/support/faq.bml#notify notification] system. (From LiveJournal developers.) <br />
<br />
; FCKEditor, FCKEd, CKEditor: [http://ckeditor.com/what-is-ckeditor FCKEditor] is the open-source WYSIWYG editor used by Dreamwidth and LiveJournal, more familiarly known as the Rich Text Editor, or RTE. The FCKEditor is named for its creator, Frederico Caldeira Knabben. With version 3.0, it was renamed the CKEditor. <br />
<br />
; Fork, code fork: Like a fork in a road, [http://en.wikipedia.org/wiki/Fork_(software_development) code that has been taken in a different developmental direction from the main project]. In the context of Dreamwidth development, this generally is used to refer to Dreamwidth's relationship to LiveJournal, as Dreamwidth has active development in other directions. [http://rosemaryedghill.livejournal.com/8481.html?thread=89377#t89377 Colorful explanation.]<br />
<br />
; Gearman: An asynchronous job scheduling engine, of the type "do this somewhere else". Benefits: somewhere else, fast. Flaws: currently if it dies jobs are lost (apparently the team that manages it is working on that). Name is an anagram of "manager"; from LiveJournal days. [http://azurelunatic.dreamwidth.org/6323528.html IRC log with history/discussion] <br />
* [[Production_Notes#Gearman|Gearman on Dreamwidth]] <br />
* [[Setting up Gearman]] for the Dreamhack<br />
* [http://gearman.org/ gearman.org]<br />
<br />
; Git: the new-to-us [http://en.wikipedia.org/wiki/Revision_control code version control system], to help make tracking/sorting out the contributions of infinitely many developers sweating over infinitely many keyboards be less like attempting to keep a torrential rainstorm away from the delicate electronics with a rake, and more like a well-ordered hackspace. [[Git Getting Started]]<br />
<br />
; Guru meditation: an [http://en.wikipedia.org/wiki/Guru_Meditation error code thrown by the Varnish cache server (and others, elsewhere, but DW uses Varnish)]. This is generally a temporary error, indicating that the server wants to be a lumberjack and has to take a moment to adjust its suspenders and/or bra. <br />
<br />
; i18n: [http://en.wikipedia.org/wiki/Numeronym abbreviation] for "internationalization", the ability of a software program to work with different languages, alphabets, cultural conventions, and so forth. <br />
<br />
; JAWS: a screenreader (assistive software for the visually impaired). [http://www.freedomscientific.com/products/fs/jaws-product-page.asp JAWS homepage]<br />
<br />
; Leaning Toothpick Syndrome: the \/ and \\\\ stuff that tends to happen a lot in regexes<br />
<br />
; MogileFS: Mogile FileSystem, the system that runs behind the userpics, is an anagram of OMG FILES. From LiveJournal development. <br />
<br />
; Nagios: A [http://www.nagios.org/ monitoring system] used to advise Mark (and IRC) about whether Dreamwidth is functioning properly. See [[#Volunteer/IRC-Specific|the Volunteer/IRC section]] for further info. <br />
<br />
; OpenID: A way for a website to know that you totally are who you claim to be from that other website over there. [http://azurelunatic.livejournal.com/6054113.html An informal explanation.] [http://www.dreamwidth.org/support/faqbrowse.bml?faqid=62 Dreamwidth OpenID FAQ] (From LiveJournal; Brad developed it!) <br />
<br />
; Peterstein, Disco King: The private support category that receives mail sent to the support@ email address. Blame Mark. ;) <br />
<br />
; Priv, privilege: Access to various special administrative site functions, such as viewing sensitive support requests, viewing screened proposed answers to support requests that other users have left, viewing spam reports, and taking various administrative actions. Privs are granted in a chain of trust that culminates with the site owners; one may be granted the priv to hand out more privs to others. Privs may be restricted by arguments or granted globally (unarged). "What privs do I have?" "Not enough to do your job. I'm granting you some more privs." (Inherited from LiveJournal.) See [[Privileges]]. <br />
<br />
; PubSubHubbub, PuSH: A way to make syndicated stuff update like greased lightning. From Google (and Brad!); the implementation is courtesy of our good friends in the LJ dev department. Sometimes also called Fred for short. <br />
<br />
; Puppet: an open source data center automation and configuration management framework. That is to say, a way for the system administrators to set up computers quickly. See [[Production Puppet]]<br />
<br />
; replicate, cannot replicate, replication: Dreamwidth has two master databases that are supposed to be identical copies of each other. Nagios freaks out when one copy is lagging behind the other. Nagios also cheerfully informs everyone when things are back to normal. <br />
<br />
; RFC: Request For Comment. An invitation for constructive and thorough criticism of the proposed concept. In general use in certain technical communities. Also, one of the founding documents describing standards that the internet attempts to abide by. Examples: [http://www.faqs.org/rfcs/rfc3330.html RFC 3330] [http://www.ietf.org/rfc/rfc2324.txt RFC 2324] <br />
<br />
; RTE: Rich Text Editor, something that lets you add formatting to text as well as just do plain text. Contrast with HTML editor (plain text, although you can type in HTML formatting manually). LJ's RTE gathered a lot of dislike from LJ volunteers. It is built based on the open source FCKEditor. The LiveJournal and Dreamwidth implementations have a reputation for being (pick your favorite) delicate, buggy, or broken. (From internet in general & LiveJournal.) <br />
<br />
; screenreader: an item of assistive technology used primarily by visually impaired users. Screenreaders read text on web pages aloud, allowing users to use websites without seeing them. <br />
<br />
; Test Driven Design: Uncanny_Kate explains: "One thing that a lot of people, including me, dig is something called Test Driven Design. Which means, to fix a bug or write a new feature, first you write a test for how it should work. It'll fail, until you write the code, but then you can be super confident your test works. And if you do that long enough, you can run the test suite and be super confident you didn't break anything else." <br />
<br />
; TheSchwartz: An asynchronous job scheduling engine of the "Do this and tell me later" type. Has persistent queue support. It was named after Brad's manager, Mike Schwartz, the VP of Engineering at Six Apart, and may also have been a reference to Spaceballs (with Brad you never know). Solid, has a lot of overhead and a lot of setup. [http://azurelunatic.dreamwidth.org/6323528.html IRC log with history/discussion] [[Production_Notes#TheSchwartz|TheSchwartz on Dreamwidth]] [http://search.cpan.org/~bradfitz/TheSchwartz-1.07/lib/TheSchwartz.pm TheSchwartz on cpan.org]<br />
<br />
; Template Toolkit, TT: The templating system that's replacing BML when building site pages; all existing BML pages are planned to eventually be migrated to using TT. Free Open Source Software, 99% less Eldritch Horror. See [[Routing and Template Toolkit]] and http://template-toolkit.org/<br />
<br />
; Upstream: A flag in Dreamwidth's implementation of Bugzilla that is a courtesy to LiveJournal developers, to alert them that a bug inherited from the LiveJournal codebase has been patched. LiveJournal is actively encouraged to pick up patches that have been flagged for upstreaming. Yay Open Source! <br />
<br />
; WTF/Project WTF: Rather than "What The Fuck", this is Watch-Trust-Friend(s), the project of splitting LiveJournal's original Friends into Watch/Trust (this eventually became Read/Access). (From LiveJournal development and then Dreamwidth development.)<br />
<br />
; WTF-8: When UTF-8 encoding, or lack thereof, causes problems.<br />
<br />
=People= <br />
==Staff==<br />
;<dwuser>Mark</dwuser>: Mark Smith is one half of the founding team of Dreamwidth. He is also known as <dwuser>xb95</dwuser>.<br />
;<dwuser>Denise</dwuser>: Denise Paolucci is one half of the founding team of the site. She is known as Rahaeli or rah on IRC. She is also known as D and <dwuser>synecdochic</dwuser>.<br />
;<dwuser>Fu</dwuser>: Afuna is the first full-time Dreamwidth employee. She answers to <dwuser>Afuna</dwuser> or Fu. <br />
;<dwuser>MissKat</dwuser>: Kat joined the team on January 1, 2013. She is also <dwuser>zarhooie</dwuser>. <br />
<br />
; [http://www.dreamwidth.org/site/staff Staff Page]: All staff, and most department heads.<br />
<br />
; <dwuser>Sarah</dwuser>: Married to <dwuser>denise</dwuser>, helps with technical support. <br />
; <dwuser>janinedog</dwuser>/Janine/J9: Was married to <dwuser>mark</dwuser>. A developer. <br />
; Ari: Mark's partner and co-parent. <br />
<br />
; MrsJ: Collectively, the people who can handle staff issues are sometimes known as "MrsJ", which was short for the owners and their wives at the time of site launch: Mark, Rah, Sarah, and Janine. This personnel lineup has since changed, and now includes Mark (co-owner), Rah (co-owner), Fu (employee), Sarah (Rah's wife), and sometimes Robby (backup sysadmin).<br />
<br />
==Other People==<br />
;<ljuser>Brad</ljuser>: [http://en.wikipedia.org/wiki/Brad_Fitzpatrick Brad Fitzpatrick] is the original creator of LiveJournal. While he is not affiliated with the Dreamwidth project, if someone name-drops "Brad", it's probably him. (However, <dwuser>brad</dwuser> is not him.)<br />
<br />
;People the owners have worked with/near in the past, partial list: Brad (<ljuser>bradfitz</ljuser>), Brad's Mom (<ljuser>sandy</ljuser>), Hachi (<ljuser>hachi</ljuser>), Abe (<ljuser>burr86</ljuser>), Mart (<ljuser>mart</ljuser>), MK, BB, Carrie (<ljuser>coffeechica</ljuser>), Dave "worst username evar" Recordon (<ljuser>daveman692</ljuser>), Tupshin (<ljuser>tupshin</ljuser>), Stacey (<dwuser>nova</dwuser>), Whitaker (<ljuser>whitaker</ljuser>) (but not [http://azurelunatic.dreamwidth.org/6353528.html Whitaker's Mom]).<br />
<br />
; Dave "Worst Username Evar" Recordon (<ljuser>daveman692</ljuser>): a legacy LiveJournal employee, involved with the creation of OpenID. <br />
: [05:20] <V_PauAmma_V> [...] I'm not sure how the "worst username ever" joke got started, but when LJ started listing the "purged, available to rename to" usernames list, that joke was enshrined on the LJ homepage blurb for that page.<br />
: [05:23] <rahaeli> it started because NONE OF US COULD EVER TYPE HIS USERNAME<br />
: [05:23] <rahaeli> it took us like two years to learn the numbers<br />
: [05:23] <rahaeli> so brad dubbed him "worst username evar"<br />
: [05:23] <rahaeli> (plz to note that it's 'evar' and not 'ever')<br />
<br />
MissHat: <dwuser>zarhooie</dwuser>|MissKat speaks fluent typo. <br />
<br />
; Momijizukamori: "... the kanji combo is 'guardian of the maple tree burial mound'. More or less. It's a really dorky reference to an old CLAMP [manga] series."<br />
<br />
; PauAmma: Pau's nickname is a reference to [http://www.online-literature.com/poe/164/ The Crab that Played with the Sea]. The 'V's are pincers. <br />
<br />
<br />
<br />
<br />
;<strong>Confusingly similar nicks</strong>: Some people in IRC/mentioned in IRC look similar but aren't the same person. <br />
<br />
;~aeli: rahaeli is not niqaeli, although they are certainly friends. <br />
<br />
; Alex: there are now at least three regulars who answer to Alex. <br />
<br />
;az*: There are at least four IRC-folks over time starting with 'az': <br />
: <dwuser>azurelunatic</dwuser>|Azz (two zs)<br />
: azureye<br />
: azetidine|aze, <br />
: the former azalais|az (one z) <br />
<br />
;fitz: <ljuser>bradfitz</ljuser> is not [http://foxfirefey.dreamwidth.org/tag/cats:+fitzwilliam Fitzwilliam], <dwuser>foxfirefey</dwuser>'s younger flame point cat. <br />
<br />
;j*c: jc|jc` and JDC|<dwuser>jd</dwuser> are not the same person, even though they've both been around since beginning days. <br />
<br />
;jl*: jlb and jld are different people, though they know each other. <br />
<br />
;pineapple: pineapple and pineapplechild are not the same person, nor is pineapple the mother of pineapplechild. Nor the other way around.<br />
<br />
; RH|: Nicks starting with RH are either <dwuser>RebelsHeart</dwuser> in some afk mode, or a specific member of the Rhymers' House (<dwuser>not_a_sniglet</dwuser>). Check the whois in your IRC client if uncertain. <br />
<br />
; Ricky: both jeshyr and Amianym answer to Ricky offline. <br />
<br />
;simon: _Simon_ and _NotSimon_ are both Simon, just the latter is afk. <br />
<br />
<br />
;<strong>Nicknames from DW-Drew</strong>: <dwuser>dreamatdrew</dwuser>|DW-Drew|Algol (the Ogre star) has many nicknames for many people, many of which are not self-explanatory unless you happened to be there at the time. Sometimes other people also use these nicknames, but sometimes not. <br />
<br />
; Assface: A typo that DW-Drew assiduously attempts to avoid but sometimes runs into anyway, for Azzface (<dwuser>azurelunatic</dwuser>|Azz). <br />
<br />
; bible-stud: vlion, based on the time when his attempted nick-change to vlion|biblestudy got truncated by one letter. <br />
<br />
; Dracca: DW-Drew's mother. <br />
<br />
; fish, fishen: <dwuser>ghoti</dwuser>, ghoti14 on IRC. While theoretically [http://en.wikipedia.org/wiki/Ghoti this is universal], in practice it is a mostly-from-Drew spelling. <br />
: "fish" may also refer to some of the "chatfish", members of a YA readers group of Azz's. <br />
: See also: [http://www.imdb.com/title/tt0266543/quotes?qt0396991 "Fish are friends, not food."] (ghoti is a friend-grade fish, not sushi-grade.) <br />
<br />
; frog: <dwuser>woggy</dwuser>, whose default userpic is a frog and whose username comes from "polliwog". <br />
<br />
; Herbie: jeshyr|<dwuser>rb</dwuser>, referencing an Asimov story in which a robot with the letters RB became Herbie. <br />
<br />
; Iggy: <dwuser>ivorygates</dwuser>, formed from the initials I.G.<br />
<br />
; Mr. Zog: Azz's Motorola [http://en.wikipedia.org/wiki/Mr._Zog's_Sex_Wax SURFboard] router. <br />
<br />
; Slaver: xb95; this references the game EVE Online, where xb95 has an [http://wiki.eveonline.com/en/wiki/Amarr Amarr] pilot.<br />
<br />
; throwrug: Allen. You sort of had to be there, for values of "there" that are YAPC:NA '13<br />
<br />
==Artificial, Fictional or Otherwise Questionable Reality==<br />
These individuals, while present or mentioned in IRC from time to time, are not always inhabiting the same reality as most of the rest of us. Sometimes it's not wise to follow them to their home dimension. <br />
<br />
; Alertsy: a Nagios IRC bot. <br />
<br />
; Anna: a Support-bot originally programmed by Sophie (with features from past bots), for #lj_support. Named for the Basshunter song "Boten Anna". Decommissioned with the decommissioning of LiveJournal's private server. <br />
<br />
; Bit: Originally a standalone bot in #lj_support. See: Fig|Bit. <br />
<br />
; Charlotte: a legacy LJ bot. <br />
<br />
; <dwuser>fairlight</dwuser>: Sometimes present in IRC. See [http://tiferet.dreamwidth.org/profile/ Tiferet's profile] for details. <br />
<br />
; Fig|Bit: An IRC bot, run by <dwuser>sophie</dwuser>. The bot gives different responses when addressed as "Fig" than when addressed as "Bit". Fig is a Support-bot, an infobot, and has some other features. Bit is a decision bot. Most of the time, the bot's answers are pre-programmed. Very occasionally, not. See [[IRC]]. <br />
<br />
; Frank: Frank the Goat, LiveJournal's mascot. <br />
<br />
; Goat: a legacy #lj_support Support-bot. Notably rude. <br />
<br />
;INGVA: [http://qdb.dreamwidth.net/dw/7 QUEEN] OF THE [http://azurelunatic.dreamwidth.org/6281178.html?thread=11191002#ljcmt11191002 WILD PLACES]<br />
<br />
; jdn: <dwuser>twopointoh</dwuser> & <dwuser>jdn</dwuser>. [http://qdb.dreamwidth.net/dw/248 Fictional character], written by a number of people but usually Rah, sometimes shows up in IRC (as jdn). See [http://www.kekkai.org/synecdochic/sg1/bw.html Broken Wings] and [http://www.kekkai.org/synecdochic/sg1/mezzanine/index.html Mezzanine]. (Warning: if you commence a scarily literary-crossed-with-lowbrow rant and find yourself losing your capital letters, you may have been channeling jdn. The standard cure is to finish writing the rant.) Not to be confused with <dwuser>jd</dwuser>, who is in IRC as JD or JDC.<br />
<br />
; RWHell: an IRC bot. See [[IRC]].<br />
<br />
=Volunteer/IRC-Specific=<br />
<br />
; #dw: (Previously) The Official Dreamwidth IRC Channel. Either refers to when the channel was on Mark's server (prior to [http://wiki.dwscoalition.org/notes/Dreamwidth_Timeline#March_2010 March 2010]) and was named #dw, or is shorthand for the current channel name. <br />
<br />
; #dreamwidth: The Official Dreamwidth IRC Channel, on irc.freenode.net, from [http://wiki.dwscoalition.org/notes/Dreamwidth_Timeline#March_2010 March 2010] onward. See [[IRC]]. Sometimes referred to as #dw for short. All official Dreamwidth IRC channels on Freenode actually start with #dreamwidth- although people may say #dw- instead, as it is both the usual shorthand and was the channel name on Mark's old server. Sometimes sub-channels are abbreviated further, such as # -bitch for #dreamwidth-bitch, # -dev for #dreamwidth-dev, and so on. Sometimes unofficial channels, like #dw-tmi, are actually #dw-. <br />
<br />
; <nowiki>$lj::will_not_work_without_steam_radiator</nowiki>: A [http://www.dreamwidth.org/interests?int=%24lj::will_not_work_without_steam_radiator popular interest], originating at a time that involved a lot of code refactoring that converted $lj methods over to generic methods, and when Rah needed an interest that started with a non-alphanumeric character to test something. A reference to http://qdb.dreamwidth.net/dw/73, which is itself a reference to http://wiki.lspace.org/mediawiki/index.php/Bergholt_Stuttley_Johnson<br />
<br />
; Alton Brown anal nachos: Alton Brown's perhaps unnecessarily fussy [http://www.foodnetwork.com/recipes/alton-brown/ultimate-nachos-recipe2/index.html recipe for nachos]. (From IRC. You really had to be there. [http://azurelunatic.dreamwidth.org/6222720.html For those who weren't there, a log: it was a bit too saucy for the QDB. Also long.]) <br />
<br />
; Anna: Usually a reference to the [http://www.basshunter.se/ Basshunter] song [http://basshunter.tgl0be.org/video,BotenAnna,English "Boten Anna"] ([http://www.youtube.com/watch?gl=GB&hl=en-GB&v=RYQUsp-jxDQ YouTube], [http://www.lyrics007.com/Basshunter%20Lyrics/Boten%20Anna%20%5BEnglish%20Ver.%5D%20Lyrics.html English lyrics]), about an IRC bot named Anna. LJ Support IRC had a support-bot named Anna, from whom the #dreamwidth bot [[IRC#Fig-Bit | Fig]] is descended/cloned. <br />
<br />
; axolotl: [http://rho.dreamwidth.org/12709.html Payments silliness.]<br />
<br />
; babydev: Affectionate term for a [[Dev_Getting_Started|beginning developer]]. Generally used of developers who are new at development in general, not just new to the project. Gender-neutral. Some neophytes may wish to not be referred to as "baby-" anything; do respect their wishes. <br />
<br />
; babydev-bait: An effort-minor bug that would be an excellent introductory bug for a beginning developer. See [[Newbie Guide: Getting Started on Windows]].<br />
<br />
; bananas: [http://dw-support-training.dreamwidth.org/1697.html Make like a banana in the presence of ice cream and split!] (Kat got bored)<br />
<br />
; bees, full of bees: A certain kind of metaphorical stingy badness. Brought to IRC mainly by <dwuser>jld</dwuser>. References include [http://www.youtube.com/watch?v=Xs-tl6GBOBo Eddie Izzard: "Covered in beeeees"], [http://en.wikipedia.org/wiki/Swarm_%28comics%29 the supervillain Swarm], [http://www.youtube.com/watch?v=_XcT49ms4yg Conan: Oprah bee giveaway sketch], [http://www.flickr.com/photos/keinsignal/468795874/ Urethra bees] and [http://community.livejournal.com/metaquotes/5989568.html "That'll get you bees."] See also: hivemind. <br />
<br />
; <dwcomm>beginningcocks</dwcomm>: In the early days of #dw, there was call for a 101-level cooking community. One person returned having created <dwcomm>boilingwater</dwcomm>. Another returned having created <dwcomm>beginningcooks</dwcomm>. Naturally, someone -- several someones -- mis-read the latter, in the same predictable way. And thus <dwcomm>beginningcocks</dwcomm> was created. <br />
<br />
; [[Book of Wholesome Hobbies]] (that Denise has forbidden her volunteers from taking part in): A list of ha-ha-only-serious rules for [[IRC]] denizens and volunteers. <br />
<br />
; Borg: Any of a generous number of possible monolithic large-corporate entities that certain members of channel may or may not work for. References the Star Trek villains. <br />
<br />
; botsmack: [http://qdb.dreamwidth.net/dw/533 Sometimes Bit likes a good spanking.] See also: botsnack. <br />
<br />
; botsnack: a treat given to any of the channel's bots. See also: botsmack. <br />
<br />
; Brad, in his dorm room, with BML: Reminiscent of the solution to a game of Clue, this occasionally is said of inherited code that has generally not been modified since its creation on LiveJournal. An Azz-ism. <br />
<br />
; bunneh: (verb) to do something (answer a question, approve an entry in a moderation queue, etc.) faster than someone else. Common uses are "Bunnehed!" or "You bunnehed me!" Compare to "Jinx!" when someone has done something at the same time. <br />
: (noun) one who is fast and likely to bunneh others often. From "quick like bunneh", through a "Wow, that was fast!" user comment on a LiveJournal support request that got an answer very fast. (Note: the division of LiveJournal volunteers into bunnehs and sharks based on which requests they prefer to answer or act on appears far less common among Dreamwidth volunteers.) ([http://wiki.livejournal.org/index.php/Bunneh Inherited from LiveJournal Support].) <br />
<br />
; butterfinger: A candy bar or a finger that is buttered. Mark branched out into [http://qdb.dreamwidth.net/dw/46 fanfiction]. (From IRC.) <br />
<br />
; bus (non-essential and/or metaphorical, often seen being sent to hEll): A reference to [http://www.slate.com/id/2223749/ "hit by a bus" as "unexpected tragedy"], and discussions about what would happen if both Mark and Denise were to be hit by a bus at the same time. [[Operating_Agreement]]<br />
<br />
; Camp Permabanned: Where particularly enthusiastic/persistent spammers are sent. (An Azz-ism, and also a joke based on Camp Permafrost from Bujold's Vorkosigan series.) <br />
<br />
; Cat: Short for Support Category. (From LiveJournal support.) <br />
: Public cat: support category where the requests are publicly viewable. <br />
: Private cat: support category where only a few people (staff, and possibly senior volunteers) have the privs to view and/or answer. <br />
<br />
; catgoat: freerangefatty's cat Mau nibbles on <em>everything</em>. [http://caturday.dreamwidth.org/tag/mau Pictures of Mau]<br />
<br />
; channelstaples: notional staples that are said to keep someone who keeps disconnecting from the server stapled there. (Popular in LJ IRC, and perhaps other places.) <br />
<br />
; chemla, the: [http://dw-support-training.dreamwidth.org/4161.html a dance]. Not to be confused with Chemla, who is <dwuser>ChemicalLace</dwuser> the volunteer. <br />
<br />
; chugga chugga: The sound made by a steam train chugging along. Also, the sound made by <dwuser>MissKat</dwuser> plowing through a bunch of requests. STEAM POWERED. <br />
; clocktower: If someone in IRC has 'clocktower' after their name, it means they're pretty mad about something. (From LJ Support IRC, an irreverent reference to crazed campus shooters.) <br />
<br />
; coed(s), invite coed(s): A deliberate misspelling of 'code', as in 'invite code(s)'. (From LiveJournal.) <br />
<br />
; Commit-and-Ditch pony: When someone does something that breaks stuff, and leaves everybody else with the mess, they are awarded the Commit-and-Ditch Pony. This can take the form of an actual toy pony, a pony virtual gift, or merely informing the offender that they now hold the pony. (From [http://desh.livejournal.com/269183.html OpenMoko development], via LiveJournal volunteers.)<br />
<br />
; (gone to) Costa Rica (with the Peace Corps): The default example for someone who has gone away from the internet for an extended length of time, but has not abandoned their journal despite lack of activity. From LiveJournal volunteers: long-time LJ volunteer <ljuser>christine</ljuser> did just this. <br />
<br />
; Disco: Support's private category is powered by this. (Mark started it; Kat continued it.) See Technical, Peterstein. <br />
<br />
; Drewspeak, DW-Drew (obscure things said by): <dwuser>dreamatdrew</dwuser> has a set of jargon all his own, including some unique nicknames given to assorted channel regulars. "Drew, 'splain!" is a relatively common refrain. (Feel free to ask if you don't understand something that was said.) <br />
<br />
; ELF: Enthusiastic Little Fucker. Said of particularly prolific spammers before they are sent to Camp Permabanned. <br />
<br />
; finfers: typo for "fingers" (easy on qwerty keyboard). Subject to fish jokes. <br />
<br />
; fish and whistles: A more derisive variant of [http://www.catb.org/jargon/html/B/bells-and-whistles.html "bells and whistles"], although it is probably useful to note that the power user is probably talking about [http://www.catb.org/jargon/html/C/chrome.html "chrome"]. Specifically refers to features requested by users that would play out badly if implemented. (Originates from a [http://news.livejournal.com/98192.html?thread=44350352#t44350352 mock flamewar in LiveJournal news], and references the classic IRC concept of trouting.) <br />
<br />
; football field: Azz is probably looking for/putting on/turning on/dropping her cellphone headset. ([http://azurelunatic.dreamwidth.org/7058342.html Azz lives in a Faraday cage. Azz talks on her cellphone to MissKat a lot.]) <br />
<br />
; Frank: LiveJournal's goat mascot. <br />
<br />
; Fred: a more friendly name for PubSubHubbub (see Technical). <br />
<br />
; fruit loops: Appropriate-answer silliness. <br />
:<code>[17:31] * ysobel dies giggling. you know, one of these days I really AM going to have to answer a request with gibberish</code><br />
:<code>[17:31] <MissKat> Even if she's like "and then the pink sparkley ponies will come and delete all your entries and replace them with froot loops!" I figure it's isa and she must know what she's talking about.</code><br />
:<code>[17:31] <domtheknight> OMG PINK SPARKLY PONIES</code><br />
:<code>[17:31] <domtheknight> FRUIT LOOPS</code><br />
:(from IRC) <br />
<br />
; gecko: Since Drew can't teleport very well, he sends a gecko to take care of his people. <br />
<br />
; Glitterhoof the Magic Fix Pony: <dwuser>mark</dwuser>, [http://dw-dev.dreamwidth.org/105483.html by way of] <dwuser>john</dwuser>. <br />
<br />
; Goat: Usually a reference to a legacy LiveJournal Support bot of that name. Goat reported on the current open support requests in a way similar to Anna, but with a different format. The command "Fig, be Goat" makes Fig give the report using Goat formatting. Goat made insulting comments to people who did not remember the syntax for his commands. Goat was probably named after LiveJournal's mascot, Frank the Goat. <br />
<br />
; going to the wiki: If you visit [http://wiki.dwscoalition.org http://wiki.dwscoalition.org] you see this message before it redirects to [http://wiki.dwscoalition.org/notes/Main_Page http://wiki.dwscoalition.org/notes/Main_Page]. It has therefore become customary to announce "Going to the wiki!" in varying stages of capslock upon going to the wiki (to look up something or edit). (Popularized on IRC.) <br />
<br />
; Green: a technical support question without an answer (or without an answer that has been reviewed and approved by senior support). Green is usually referred to numerically ("How much green?" "10."), which refers to the number of green requests. It can also be referred to in relative terms ("Lots.") or figurative ("Enough to fill a swimming pool!"). The support category "General/Unknown", commonly referred to as "G/Unk", spawned the phrase "green gunk", or "lime slime". (From LiveJournal support, based on the color coding of the Support system's user interface, which shows requests that are awaiting an approved response with a green background in the list of support requests.) <br />
<br />
; hEll, RWHell, Random Word hEll: An [[IRC]] bot in #dreamwidth. <br />
: One sends an item to hEll. hEll sneaks out a scaly hand and grabs the item. hEll's depths emit a sudden roar as it expels a previously entered item. Sometimes, hEll's depths continue to roar as it expels a second previously entered item. (Occasionally, hEll will burp and not expel any other items.) <br />
: hEll is neither endothermic nor exothermic, but maintains a fairly constant balance of items entered to items ejected. The rumor that hEll is sentient is just that, a rumor. (We hope.) <br />
: Read the origin story of [[Random Word Hell]]! And then one day Rah mentioned the bot in #dw, and Sophie got coding, and suddenly there was hEll. And then at the time of the server move, hEll became RWHell.<br />
<br />
; hooker: Crocheter: a person who works with a crochet hook. A Drew-ism. <br />
<br />
; HTH HAND: Hope This Helps, Have A Nice Day. Inherited from LiveJournal Support. A phrase that was used as a bad example: support answers were generally unsigned, and the specific phrase "hope this helps" implied some doubt that it might help at all. Picked up for sarcastic use to friends by some LJ volunteers. <br />
<br />
; kill you in the morning: A [http://www.imdb.com/title/tt0093779/quotes Princess Bride reference]. What else do you expect from the Dread Pirate Rah-berts? <br />
<br />
; kiwi: [http://qdb.dreamwidth.net/dw/321 Sometimes it's really hard to type 'wiki' correctly on the first try.]<br />
<br />
; Kitten: a support category that has very few requests in it. Wordplay. Support Category = Category = Cat; cat that is very small = kitten. (From LiveJournal support.) <br />
<br />
; mango, odd references to: at one point Azz said "what the mango-shitting fuck" as a random intensifier to "what the fuck". This caught on with a few people. <br />
<br />
; Mart bug death: Someone proposes something tiny and specialized, then Mart (a notable [http://www.joelonsoftware.com/articles/fog0000000018.html architecture astronaut]) generalized it to the abstract case and said "we should do it this way so it can be used for this other stuff", turning it from a five-minute fix to a five-month fix. Then (the death part) whoever came along who could do the five-minute fix, but not the five-month fix, would look at it and go "screw this" and <strong>never do it</strong>. There were approximately four people who could do the five-month version, so it would never get done, because they had a gazillion five-month projects. (From [http://community.livejournal.com/lj_dev/658149.html LiveJournal development], seen in the wild mentioned by <ljuser>mart</ljuser> in '04.) <br />
<br />
; mean hat: When a delegate ops up and tells everyone to stop talking by muting #dreamwidth. This is usually done to give people time to cool down after a particularly argumentative time. Usually, MissKat wears the mean hat on top of her tact hat.<br />
<br />
; minion: Assistant or direct report. (I think Rah started saying she had minions, asking for minions to do various tasks, calling people minions, and/or people started calling themselves Rah's minions?) <br />
<br />
; MrsJ: People who can handle staff issues (see [http://wiki.dwscoalition.org/notes/Common_Jargon#Staff Staff]. (DW Support shorthand.) Also, the regular communication sent from Support to staff listing issues that only members of MrsJ can handle. <br />
<br />
; Muppet: If people start calling Mark "Muppet", it's [http://dw-dev.dreamwidth.org/29363.html?thread=249523#cmt249523 MissKat's fault]. <br />
<br />
; nagios: In IRC, nick '''nagios''' (now '''Alertsy''' after the Freenode server move) is the monitoring bot. Various people will change their nicks to '''_nagios_''' or similar variations to make jokes about the bot. [http://qdb.dreamwidth.net/dw/137 History of the HEY MARK HEY MARK HEY MARK jokes] See Technical for more information. <br />
<br />
; nethic: Internet hiccup. Often accompanied by a pingout. Someone who had an internet hiccup probably missed the last several lines of chat. <br />
<br />
; notwork, nyetwork: The network in geekosaur's motel-of-residence sort of doesn't. Work, that is. It is built on fail hardware that is not watertight enough to stand up to local rain, and additionally has absurdly bad topology and hilariously bad oversaturation on certain access points. <br />
<br />
; !pleh: 'Help!' spelled backwards. (From LiveJournal Support.) <br />
<br />
; pillowfort: refers to the secret hiding place of the Triumvirate + pony<br />
<br />
; plumbing not compatible: a reference to a [http://qdb.unmutuals.com/view.cgi/support/125 somewhat inappropriate conversation about orientation between Rah and Abe]. Often accompanied by little hand gestures. <br />
<br />
; qdb: [http://qdb.dreamwidth.net/ Quotes Database], a collection of particularly funny and/or memorable quotes uttered in various Dreamwidth IRC channels. This is maintained by <dwuser>sophie</dwuser>. (The Dreamwidth QDB was previously hosted on the same server as the LiveJournal volunteer IRC QDB (the original has gone down, but there is a [http://qdb.unmutuals.com/ mirror]), which also contains quotes from some staff and volunteers' shared history.) <br />
<br />
; Rahversation: refers to a conversation involving Rah (<dwuser>denise</dwuser>). Coined by <dwuser>ysobel</dwuser><br />
<br />
; SKULLBUTT THE TORMENTOR: Once upon a time, an underwear designer put a flaming skull on the front and back of a pair of briefs. (Ed Hardy. 2 Sword Skull.) Assorted #dw and #dw_nsfw people in and around <dwcomm>amusing_underwear</dwcomm> pointed and laughed. <ljuser>mayerman</ljuser> coined the name, and <dwuser>remark</dwuser> elevated it into a catchphrase. [http://wiki.dwscoalition.org/notes/File:Skullbutt.jpg Of course there's an icon.]<br />
<br />
; SNH, Still Needs Help: A support request that has already received at least one answer, but the user has "regreened" (indicated that they still need help, moving it from "answered, awaiting close", to "green"), and has replied with a follow-up question or more information. <br />
<br />
; Speaking of <x>, hello <y>: You may be greeted this way upon entering IRC. Likely as not, <x> has nothing to do with you; it was just the topic the moment before you entered. (This greeting habit was more prevalent in LJ volunteer IRC but still persists.) <br />
<br />
; spider: Since Drew can't teleport very well, the spider is his enforcer, like when people *cough*Inoru*cough* need to go to bed but aren't. <br />
<br />
; stekpanna: Swedish: skillet, frying pan. In Drewspeak, this is usually short for the Swedish "domedagengjutjärnstekpanna", which translates to "cast-iron skillet of doom". It is more of a weapon than a cooking implement. <br />
<br />
; teapatty, *|teapatty: Someone making reference to "teapatty" or changing their IRC nick to incorporate "teapatty" is either drunk or pretending not to be. At one point Wyn attempted to say "Not drunk, repeat, not drunk." Unfortunately for them, they were drunk enough that it came out "Not drunk, teapatty, not drunk." (From LiveJournal Support IRC.) <br />
<br />
; Tits Against the RTE: References a campaign to get the Rich Text Editor removed (or vastly improved) at LiveJournal during <ljuser>tupshin</ljuser>'s time there. <br />
<br />
; Triumvirate, The: refers to the current [[Support_process|support]] wranglers: <dwuser>Domtheknight</dwuser> (The Bug-Squashing Boots), <dwuser>zarhooie</dwuser> (The Tact Hat) and <dwuser>chemicallace</dwuser> (The All-Purpose Boa). The Triumvirate + Pony is the Triumvirate with the addition of the Froot Loop Pony, also known as <dwuser>ysobel</dwuser>.<br />
<br />
; twix: A candy bar, or a play on words involving "twixt". Mark branched out into [http://qdb.dreamwidth.net/dw/46 fanfiction]. (From IRC.)<br />
<br />
; voluntold: A portmanteau of "volunteer" and "told". The natural result of not having enough to do when around Rah, resulting in "... and when I came to, I realized that I'd just completed three bugs and was in charge of a project" type situations. <br />
<br />
; wgw, what goes where: A document detailing how (what department and process) handles a support request of any given type. (From LiveJournal support.) [[What Goes Where]]<br />
<br />
; worst username evar: David Recordon <ljuser>daveman692</ljuser>. Refers to a LiveJournal ad for rename tokens that featured his username. (From LJ.)<br />
<br />
= Emoticons =<br />
Dreamwidth IRC does not have very many non-standard emoticons in frequent use. There are occasional discussions where different non-standard emoticons are created, proposed, or used, but these are infrequent, and the same weird emoticon is rarely used twice. <br />
For example, '''[||||||| 8] \o/''' might represent a bus and an alarmed pedestrian, but this is rarely seen in actual chat. <br />
<br />
; User or community: '''()''', '''@''', and '''<^>''' are variously used to denote a user or community in text-only environments like IRC. <br />
: '''()xb95''' - user ; '''()omnomnom''' - community (regular)<br />
: '''@mark''' - user (official Dreamwidth user, or Twitter-style direct address for any DW user or IRC nick - Bugsy objects to '@' starting lines, however); '''@dw_news''' - community (official); sometimes used for regular communities <br />
: '''<^>lj_support''' - (usually) LiveJournal community; sometimes used for Dreamwidth community<br />
<br />
; '''*''': Surrounding a phrase, can indicate action or emotion, or emphasis: *grin*, *hugs*, "I *really* like it". <br />
<br />
; '''. o O (something)''': Thought bubble, thinking but not saying. <br />
<br />
; '''<_<''', '''>_>''': Eyes looking to the left or right and mouth. Sometimes used to indicate untrustworthiness of a statement ("I have no idea who ate the last piece of cake >_>"). <br />
<br />
; '''>_<''': Eyes tightly closed and frown. Disgust, self-deprecation, annoyance. <br />
<br />
; ''':|a''': Eyes, a flat mouth, and chin-scratching. Deep thought of some description. <br />
<br />
; '''o/''', '''\o''': Head with single (right or left) arm raised (waving, in greeting, or farewell). <br />
<br />
; '''\o/''': Head with two upraised arms: arms in the air cheering (genuine or sarcastic: "I just got a promotion \o/", "my toaster is on fire \o/"); enthusiastic greeting; arms in the air in confusion or panic, arms up over your head in water (drowning). <br />
<br />
; '''\o?''': common typographical error for '''\o/'''; (rare) scratching head in confusion. <br />
<br />
; '''o7''': a salute<br />
<br />
; '''/o\''': Arms protecting head, hands clutching head, or bucket on head. <br />
<br />
; '''~~\o/~~''': Waving (head with arms raised and motion squiggles) or drowning (head with arms raised and waves of water). <br />
: Strong armpit odor (rarely). <br />
<br />
; '''*\o/*''': Head with two upraised arms and pompoms: cheering. <br />
<br />
; '''*****\*o/''': Head with two upraised arms and a line of asterisks: running around, either with head on fire, or waving a feather boa. (Inherited from LiveJournal volunteer IRC.) <br />
<br />
; ''':U''', '''8U''', ''':V''': 3/4 profile face with mouth open<br />
<br />
== Other Emoticon Resources ==<br />
[http://en.wikipedia.org/wiki/List_of_emoticons Wikipedia list of emoticons]<br />
<br />
=Other Resources=<br />
== Cultures ==<br />
;[http://fanlore.org/wiki/Wiki Fanlore fandom wiki]: Information on selected public forms of fannish expression, in convenient wiki format. From the Organization for Transformative Works folks. <br />
; [http://geekfeminism.wikia.com/wiki/Geek_Feminism_Wiki Geek Feminism wiki]: A resource for and about women and people who are perceived as women in geek communities.<br />
<br />
== Jargon == <br />
;[http://catb.org/jargon/ Jargon File]: Many words from a gentler, more precise era of technology, although some are still in use today. <br />
;[http://wiki.livejournal.org/index.php/Category:Support_Jargon LiveJournal Support jargon]: there is some overlap of vocabulary due to the number of volunteers and IRC inhabitants who are former or current LiveJournal volunteers. <br />
; [http://knowyourmeme.com/ Know Your Meme]: Various bits of internet culture, sometimes the sort you'd find in a petri dish. <br />
;[http://www.urbandictionary.com/ Urban Dictionary]: Let the reader beware. (Often not safe for work -- or for other things, for that matter.)<br />
;[http://www.sassydoesit.com/glossary/knitting-definitions/ Sassy Does It's Knitting Definitions] <br />
;[http://www.ravelry.com/wiki/pages/KnittingLingo Glossary: Ravelry and Knit and Crochet Lingo and Acronyms] (more extensive, however login is required, although accounts are free)<br />
<br />
== QDBs == <br />
<br />
QDB stands for "Quotes Database". <br />
<br />
;[http://qdb.dreamwidth.net/ Dreamwidth IRC QDB]: A collection of quotes from Dreamwidth's [[IRC]] channels<br />
; <dwcomm>metaquotes</dwcomm>: Hilarity from around Dreamwidth, after the example of <ljcomm>metaquotes</ljcomm><br />
;[http://qdb.unmutuals.com/ LiveJournal Support QDB]: Contains many quotes from the shared past of volunteers who originated in LiveJournal volunteer culture. (<strong>Note</strong>: This is a mirror hosted by <dwuser>idonotlikepeas</dwuser>, as the original is gone, likely forever.)<br />
;[http://www.bash.org/ bash.org]: A much larger, multi-network IRC quotes database. Contains notably uncensored language and potentially offensive content.<br />
; http://qdb.us/: Another QDB, a fork of the same source file as bash.org<br />
<br />
== Miscellaneous ==<br />
; [http://www.imdb.com IMDb]: the Internet Movie Database, with more information than you knew you needed to know about movies, TV shows, actors, directors, plots, and more. <br />
; [http://en.wikipedia.org Wikipedia]: A user-updated encyclopedia of everything notable in the world. Not generally accepted for academic research, nor updated frequently enough for current events, but good for background reading, general overviews, and a list of preliminary sources for proper research. <br />
; [http://www.freebase.com Freebase]: an open database of variously useful information. Now owned by Google. <br />
<br />
[[Category: Getting Started]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dev_MaintenanceDev Maintenance2013-05-16T18:25:40Z<p>Sophira: /* dwu - Updating the repos */ Fix --ff to --ff-only, and add position saving/restoring</p>
<hr />
<div>{{Note|text="We're in the middle of moving over to a git workflow. If you haven't yet moved over to git, see the [http://wiki.dwscoalition.org/wiki/index.php?title=Dev_Maintenance&oldid=10581 old instructions]. If you're looking to move over, first make sure you've finished [[Moving your Dreamwidth installation to use Github]]"}}<br />
<br />
== Updating the Dreamwidth code on your Dreamhack ==<br />
<br />
=== Shutting down apache ===<br />
<br />
It is best to shut your Apache instance down before doing the update process, to make sure that everything, especially scripts in cgi-bin/ are reloaded properly:<br />
<br />
stop-apache<br />
<br />
=== Updating dw-free ===<br />
<br />
Okay. Let's say you've been running your Dreamwidth install and you want to pull down the latest and greatest in fixes. This is pretty easy. First, if you are not somewhere in dw-free, get into that directory:<br />
<br />
cd $LJHOME<br />
<br />
If you have any uncommitted changes in your current branch (use <tt>git status</tt> to see), you can stash them to do this:<br />
<br />
git stash<br />
<br />
Then grab updates from the development and master branches of Dreamwidth's repository:<br />
<br />
git fetch dreamwidth<br />
git checkout develop && git pull --ff-only dreamwidth develop:develop<br />
git checkout master && git pull --ff-only dreamwidth master:master<br />
<br />
You will also want to push the Dreamwidth repository changes to your fork on Github:<br />
<br />
git push origin develop<br />
git push origin master<br />
<br />
Note: if you are working on uncommitted changes in a branch, any automerge will be canceled. Example:<br />
<br />
mw@memewidth:~/dw/src/jbackup$ git pull dreamwidth develop:develop<br />
remote: Counting objects: 180, done.<br />
remote: Compressing objects: 100% (54/54), done.<br />
remote: Total 116 (delta 90), reused 88 (delta 62)<br />
Receiving objects: 100% (116/116), 36.23 KiB, done.<br />
Resolving deltas: 100% (90/90), completed with 41 local objects.<br />
From https://github.com/dreamwidth/dw-free<br />
53294c1..19b8e73 develop -> develop<br />
error: Your local changes to 'src/jbackup/jbackup.pl' would be overwritten by merge. Aborting.<br />
Please, commit your changes or stash them before you can merge.<br />
<br />
After this, you can checkout the branch you were on previously and pop any work you stashed:<br />
<br />
git checkout YOURBRANCH<br />
git stash pop<br />
<br />
We will get into merging in changes in the following section.<br />
<br />
=== Pulling changes from Dreamwidth's develop branch your branch(es) ===<br />
<br />
{{Warn|text=Pay special attention to stashing unsaved changes! You can lose work if you are not careful about this!}}<br />
<br />
You should be doing your development in branches separate from the main Dreamwidth branches. You can check what branches you currently have in your repository with the command:<br />
<br />
git branch<br />
<br />
The current branch will have an asterisk next to it. Here is an example:<br />
<br />
yourhack@dreamhack.net:~/dw$ git branch<br />
develop<br />
* feature/Mobile<br />
master<br />
<br />
You can check to see if you have unsaved changes on your currently checked out branch with:<br />
<br />
git status<br />
<br />
To temporarily save these changes while you make your updates, use:<br />
<br />
git stash<br />
<br />
To have your branch pick up the changes made on Dreamwidth's development branch:<br />
<br />
git pull --rebase --ff-only dreamwidth develop<br />
<br />
And if you have saved changes using stash, you can recover them with:<br />
<br />
git stash pop<br />
<br />
You can change branches with <tt>git checkout BRANCH</tt>, example:<br />
<br />
git checkout feature/Mobile<br />
<br />
=== For those using DW non-free ===<br />
<br />
Repeat for dw-nonfree:<br />
<br />
cd $LJHOME/ext/dw-nonfree<br />
<br />
git checkout develop && git pull --ff-only dreamwidth develop:develop<br />
git checkout master && git pull --ff-only dreamwidth master:master<br />
git push origin develop<br />
git push origin master<br />
<br />
If you have any branches on dw-nonfree, they will also need to be merged with the development branch of dw-nonfree as described in the above section:<br />
<br />
git merge develop<br />
<br />
=== Update your database ===<br />
<br />
Now that your code has been updated, update the database:<br />
<br />
# order of commands is important<br />
$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
Remember that different branches might have different text strings you have added, and that you might need to update your database for different branches when you are working on them for those text strings to work. The same applies for any database changes made by different branches you are working on.<br />
<br />
=== Restart the server ===<br />
<br />
Now you can restart Apache:<br />
<br />
start-apache<br />
<br />
Of course, in a production environment, this whole process is not too recommended as you never know what kind of code you're going to get. But for the most part, it's fairly straightforward. (And if you're doing development, this is generally safe.)<br />
<br />
== Additional Information for Non-Dreamhack Users ==<br />
<br />
This section is only for you if you're running your own installation.<br />
<br />
Instead of using start-apache/stop-apache, which are Dreamhack-specific scripts, use these commands:<br />
<br />
sudo /etc/init.d/apache2 start<br />
sudo /etc/init.d/apache2 stop <br />
<br />
You'll also want to update packages on your system at some point. On Ubuntu, this would be done using:<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
Or, if you want an easy command to run on your dw account in one swoop:<br />
<br />
sudo apt-get update && sudo apt-get upgrade<br />
<br />
== Scripting ==<br />
<br />
{{Warn|text="These scripts have not been throughly tested yet with the new system; they might not be updated entirely or right."}}<br />
<br />
You can, of course, use scripts to make it easier for you to do some of this. <br />
<br />
There is an epic "omnibus" script by <dwuser>jeshyr</dwuser> available at http://dw-dev.dreamwidth.org/94822.html which incorporates all the individual scripts listed here and some other useful functions, and includes help information. It'll save you a heap of angst as a beginner!<br />
<br />
Some simpler example scripts are given below.<br />
<br />
=== dwu - Updating the repos ===<br />
<br />
Put this code in a file called '''~/bin/dwu''' and make it executable with '''chmod ugo+x ~/bin/dwu''':<br />
<br />
<source lang="bash">#!/bin/bash<br />
<br />
# make sure we are in the right directory;<br />
cd $LJHOME<br />
<br />
git fetch dreamwidth<br />
<br />
# save our position<br />
OLDDWPOS=$(git rev-parse --abbrev-ref HEAD)<br />
if [[ "$OLDDWPOS" == "HEAD" ]]; then<br />
OLDDWPOS=$(git rev-parse HEAD)<br />
fi<br />
<br />
# pull changes from dreamwidth<br />
git checkout develop<br />
git pull --ff-only dreamwidth develop<br />
git checkout master<br />
git pull --ff-only dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
<br />
# restore our old position<br />
git checkout "$OLDDWPOS"<br />
</source><br />
<br />
Now, when you type 'dwu', this script will update dw-free. If you need to update dw-nonfree as well, then use this code:<br />
<br />
<source lang="bash">#!/bin/bash<br />
<br />
# make sure we are in the right directory;<br />
cd $LJHOME<br />
<br />
git fetch dreamwidth<br />
<br />
# save our position<br />
OLDDWPOS=$(git rev-parse --abbrev-ref HEAD)<br />
if [[ "$OLDDWPOS" == "HEAD" ]]; then<br />
OLDDWPOS=$(git rev-parse HEAD)<br />
fi<br />
<br />
# pull changes from dreamwidth<br />
git checkout develop<br />
git pull --ff-only dreamwidth develop<br />
git checkout master<br />
git pull --ff-only dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
<br />
# restore our old position<br />
git checkout "$OLDDWPOS"<br />
<br />
# change to dw-nonfree<br />
cd $LJHOME/ext/dw-nonfree<br />
<br />
git fetch dreamwidth<br />
<br />
# save our position<br />
OLDDWNFPOS=$(git rev-parse --abbrev-ref HEAD)<br />
if [[ "$OLDDWNFPOS" == "HEAD" ]]; then<br />
OLDDWNFPOS=$(git rev-parse HEAD)<br />
fi<br />
<br />
# pull changes from dw-nonfree<br />
git checkout develop<br />
git pull --ff-only dreamwidth develop<br />
git checkout master<br />
git pull --ff-only dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
<br />
# restore our old position<br />
git checkout "$OLDDWNFPOS"<br />
</source><br />
<br />
=== dwdb - Updating the database ===<br />
<br />
Put this code in a file called '''~/bin/dwdb''' and make it executable with '''chmod ugo+x ~/bin/dwdb''':<br />
<br />
<source lang="bash">#!/bin/bash<br />
$LJHOME/bin/upgrading/update-db.pl -r -p --innodb && \<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb && \<br />
$LJHOME/bin/upgrading/texttool.pl load</source><br />
<br />
This will update the database when you type 'dwdb'.<br />
<br />
==Cleaning up your directories==<br />
<br />
If you do any amount of work, you'll find that your directories get cluttered with .orig and .rej files everywhere. This script will clean those up:<br />
<br />
<source lang="bash">git clean -f "*.rej" "*.orig"</source><br />
<br />
You can run it from the command line, or put it in a file called ~/bin/tidy and make it executable with "chmod +x ~/bin/tidy". If you do that, you'll be able to just type "tidy" to clean house.<br />
<br />
[[Category: Development]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamhack_Getting_StartedDreamhack Getting Started2013-05-13T17:29:44Z<p>Sophira: /* Edit the config files */ Updating filename.</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Dreamhack]]<br />
[[Category:Getting Started]]<br />
<br />
The [http://hack.dreamwidth.net Dreamhack] service is a hosted development sandbox environment where you can do Dreamwidth development without having to have your own server. Dreamhack accounts are available free of charge for anyone who's interested in working on the Dreamwidth code.<br />
<br />
When you get your Dreamhack account first created, most of the setup will be done for you. There are still a bunch of things you should do at first to make sure that your development environment is properly set up for you to work on, though. This guide is a walkthrough of all the steps you should take (in order) when you first log into your Dreamhack account. <br />
<br />
You should also read [[Beginning dev checklist]] for more background information; if you are on Windows, [[Newbie Guide: Getting Started on Windows]] might be useful. If you wind up in difficulty, take a look at [[Dreamhack Troubleshooting]].<br />
<br />
==Get a SSH client==<br />
<br />
To connect to your Dreamhack and work on things, you'll need a program that will do SSH, or "secure shell". It lets you connect to the Dreamhack server and work with the files, which you can't do through your browser. If you're running Windows, download [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. If you're on a Mac or a Linux distribution, you won't need a separate program; the Terminal (Applications/Utilities/Terminal on the Mac) will let you connect.<br />
<br />
==Connect to your Dreamhack==<br />
<br />
Once you have an SSH client, you can connect to Dreamhack. In PuTTY, put "hack.dreamwidth.net" for the server, and use the username and password you were given in your welcome email. In Terminal, type:<br />
<br />
<source lang="bash">ssh dh-username@hack.dreamwidth.net</source><br />
<br />
==Change your password==<br />
<br />
Change your password to something you can remember. Type:<br />
<br />
<source lang="bash">passwd</source><br />
<br />
and follow the prompts.<br />
<br />
==Set the system password==<br />
<br />
Your Dreamhack installation has a user named 'system', which has all the admin privs and owns all the system styles. The system account is the first account on the server. You need to set a password so you can log into it. Type:<br />
<br />
<source lang="bash">$LJHOME/bin/upgrading/make_system.pl</source><br />
<br />
Pick something you'll remember. (If you ever forget the system password, though, you can just run make_system.pl again and re-set it.)<br />
<br />
==Get acquainted with the command line==<br />
<br />
If you haven't used a command line before, it can be a strange experience. You may want to check out the [[Command line tutorial]] before carrying on, as it explains a few of the concepts that we'll be using in the sections below.<br />
<br />
==Edit the config files==<br />
<br />
You'll need to edit a few config files to make for easier development. Do the following:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w etc/config.pl</source><br />
<br />
(The "nano" text editor is probably the best one for new developers. If you're more experienced, or want to try something a little more powerful, check out the list of editors at the [[Configuring editors]] page.)<br />
<br />
You'll need to use the arrow keys to scroll through the file when using nano, because it won't respond to the mouse.<br />
<br />
Take a look for the following line:<br />
<br />
<source lang="bash">$USE_ACCT_CODES = 1;</source><br />
<br />
This line governs whether invite codes are used. If the value is 1, then new accounts will need invites before they can be created. If the value is 0, then anybody can create an account. You can edit this value, if you like.<br />
<br />
When you're done, press Ctrl-X to exit nano. It'll ask you if you want to save - press Y. It'll then ask you where you want to save the file. At this point, just press RETURN; you already told nano where to save it when you launched it, and pressing RETURN tells nano just to use that. You'll then find yourself back at the command line.<br />
<br />
You should also edit your <tt>$LJHOME/ext/local/etc/config-local.pl</tt> file for some other local settings:<br />
<br />
<source lang="bash">cd $LJHOME<br />
nano -w ext/local/etc/config-local.pl</source><br />
<br />
Values you may want to change and/or set:<br />
<br />
<source lang="bash">$SITENAME = "Some LiveJournal Site";<br />
$SITENAMESHORT = "YourSite";<br />
$SITENAMEABBREV = "YS";<br />
# these are all used in various places throughout the site</source><br />
<br />
Remember to save and exit when you're done.<br />
<br />
==Start Apache==<br />
<br />
Once all of this is done, you're ready to start Apache. Type:<br />
<br />
<source lang="bash">start-apache</source><br />
<br />
Your Dreamhack will now appear at http://www.yourusername.hack.dreamwidth.net.<br />
<br />
==Update your code regularly==<br />
<br />
Before you do any development work, it's a good idea to update your code to the most recent version. See [[Dev Maintenance]] for instructions.<br />
<br />
==Get familiar with version control==<br />
<br />
Read [[Version Control]] and get familiar with how things work.<br />
<br />
==Hack away!==<br />
<br />
You can now start hacking! For more information, check out the [[:Category: Development]] category, especially the [[Beginning dev checklist]], [[Dev Getting Started]], and [[Programming Guidelines]] pages. If you run into problems, the [irc://irc.freenode.net/dreamwidth-dev #dreamwidth-dev] [[IRC]] channel and the <dwcomm>dw_dev_training</dwcomm> community are good places to go for help. <br />
<br />
A quick and easy way to populate your Dreamhack with lots of users is to run Sophie's [[Script:_create-users]].<br />
<br />
We're looking forward to seeing your first patch!<br />
<br />
==A note about TheSchwartz==<br />
<br />
Previously, the Dreamhack setup process required you to set up [[TheSchwartz]] manually. You no longer need to do this as it's done for you automatically, but if you need to use TheSchwartz, you will still need to run the workers manually. This can generally be done with the command <code>$LJHOME/bin/worker-manager --debug</code>. However, please do not run this unless you need to; due to [http://bugs.dwscoalition.org/show_bug.cgi?id=1491 an issue with some of the workers], it can cause load for the server. It may be that the area you are working with does not need TheSchwartz for it to work.<br />
<br />
Using the <code>--debug</code> switch, as in the command above, will force the worker manager to remain in the foreground, which makes it easy to stop; you can just press Ctrl-C. Note that even with <code>--debug</code> on, you can run worker-manager in the shell and use your Web browser to access your Dreamhack at the same time.<br />
<br />
If you need to run <code>worker-manager</code> in the background, then you can leave off the <code>--debug</code> switch, which will make it go into the background. When you're done, you can then stop it with the command <code>killall worker-manager</code>. You may see a few "Operation not permitted" errors when you do this; you can ignore these, as they refer to other people's worker-manager processes, which you can't kill; you can only kill your own processes.<br />
<br />
(At some point, there will be a script to make it easier to do this! For now, though, this is what you need to so.)</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Git_How_ToGit How To2013-05-12T20:52:09Z<p>Sophira: /* How to use auto-completion */ I've had Git auto-completion in the Dreamhack setup sequence for some time now.</p>
<hr />
<div>{{Note|text=Feel free to correct, expand, do anything which could make this better and clearer. ^_^}}<br />
<br />
= How to get help with git commands =<br />
<br />
* To get a list of most used commands:<br />
<br />
<syntaxhighlight lang="bash">git help</syntaxhighlight><br />
<br />
* To open the Git manual:<br />
<br />
<syntaxhighlight lang="bash">man git</syntaxhighlight><br />
<br />
* To see a summary of options for a specific command:<br />
<br />
<syntaxhighlight lang="bash">git COMMAND -h</syntaxhighlight><br />
<br />
* To open the manual page for a specific command:<br />
<br />
<syntaxhighlight lang="bash">git help COMMAND</syntaxhighlight> or<br />
<br />
<syntaxhighlight lang="bash">git COMMAND --help</syntaxhighlight> or<br />
<br />
<syntaxhighlight lang="bash">man git-COMMAND</syntaxhighlight><br />
<br />
<br />
= How to use auto-completion =<br />
<br />
If you have auto-completion set up (new Dreamhacks have this set up automatically), hit the Tab key as you type to get suggestions. This works with commands and options.<br />
<br />
: See the [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Pro Git book] on how to set it up otherwise.<br />
<br />
= Basics =<br />
<br />
* To create a branch:<br />
<br />
<syntaxhighlight lang="bash">git branch BRANCH_NAME</syntaxhighlight><br />
<br />
* To switch to a branch:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME</syntaxhighlight><br />
<br />
* To create and switch to a branch at once:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME</syntaxhighlight><br />
<br />
* To move changes to the staging area:<br />
<br />
<syntaxhighlight lang="bash">git add</syntaxhighlight><br />
<br />
* To commit changes:<br />
<br />
<syntaxhighlight lang="bash">git commit</syntaxhighlight><br />
<br />
* To add and commit changes at once:<br />
<br />
<syntaxhighlight lang="bash">git commit -a</syntaxhighlight><br />
<br />
* To push changes:<br />
<br />
<syntaxhighlight lang="bash">git push origin BRANCH_NAME</syntaxhighlight><br />
<br />
<br />
= How to check things =<br />
<br />
Note: to exit code views, hit the 'q' key.<br />
<br />
* To check which local branch you're on (noted with an asterisk):<br />
<br />
<syntaxhighlight lang="bash">git branch</syntaxhighlight><br />
<br />
* To see local and remote branches (including deleted ones):<br />
<br />
<syntaxhighlight lang="bash">git branch -a</syntaxhighlight><br />
<br />
* To see latest commits on local branches:<br />
<br />
<syntaxhighlight lang="bash">git branch -v</syntaxhighlight><br />
<br />
* To see unstaged code changes:<br />
<br />
<syntaxhighlight lang="bash">git diff</syntaxhighlight><br />
<br />
* To see staged but uncommitted code changes:<br />
<br />
<syntaxhighlight lang="bash">git diff --cached</syntaxhighlight> or<br />
<br />
<syntaxhighlight lang="bash">git diff --staged</syntaxhighlight><br />
<br />
* To see staged but uncommitted file changes:<br />
<br />
<syntaxhighlight lang="bash">git status -s</syntaxhighlight><br />
<br />
* To see committed code changes (latest commit only):<br />
<br />
<syntaxhighlight lang="bash">git show</syntaxhighlight><br />
<br />
* To see past commits one at a time:<br />
<br />
<syntaxhighlight lang="bash">git log -1</syntaxhighlight><br />
<syntaxhighlight lang="bash">git log -2</syntaxhighlight><br />
<br />
and so on.<br />
<br />
* To see commits for a certain file:<br />
<br />
<syntaxhighlight lang="bash">git whatchanged FILE</syntaxhighlight><br />
<br />
* To see what you've done locally in the last 30 days:<br />
<br />
<syntaxhighlight lang="bash">git reflog</syntaxhighlight><br />
<br />
* To see branches on a graph: go to your profile page on github.com, click dw-free or dw-nonfree then on Network. Hit Shift and the right arrow to go to the most current part of the graph.<br />
<br />
<br />
= How to stash your changes =<br />
<br />
If you have work you haven't committed and don't want to yet you need to stash your work first. It's generally good practice to do this every time you have work you haven't committed.<br />
<br />
* Make sure you're on the right branch using the <code>checkout</code> command.<br />
<br />
* To put it away:<br />
<br />
<syntaxhighlight lang="bash">git stash</syntaxhighlight><br />
<br />
* To bring it back:<br />
<br />
<syntaxhighlight lang="bash">git stash pop</syntaxhighlight><br />
<br />
* To see what's stashed on a branch:<br />
<br />
<syntaxhighlight lang="bash">git stash show</syntaxhighlight><br />
<br />
<br />
= How to undo changes =<br />
<br />
* To unstage a file:<br />
<br />
<syntaxhighlight lang="bash">git reset HEAD FILE_PATH</syntaxhighlight><br />
<br />
: Note that the file is still modified. It's just no longer part of your current staging area.<br />
<br />
* To undo uncommitted changes:<br />
<br />
<syntaxhighlight lang="bash">git checkout -- FILE_PATH</syntaxhighlight><br />
<br />
* To update a commit with some new changes (you can do this as long as nothing has been pushed):<br />
<br />
<syntaxhighlight lang="bash">git commit --amend</syntaxhighlight><br />
<br />
* To reset everything to the latest commit:<br />
<br />
<syntaxhighlight lang="bash">git reset --hard</syntaxhighlight><br />
<br />
* To go back one commit:<br />
<br />
<syntaxhighlight lang="bash">git reset --hard HEAD~1</syntaxhighlight><br />
<br />
: Make sure there's a commit to go back to before you do this or you'll end up in [http://gitolite.com/concepts/detached-head.html detached HEAD] state, which is as bad as it sounds.<br />
<br />
<br />
= How to move and delete files =<br />
<br />
* To move files:<br />
<br />
<syntaxhighlight lang="bash">git mv OLD_PATH NEW_PATH</syntaxhighlight><br />
<br />
* To delete files:<br />
<br />
<syntaxhighlight lang="bash">git rm FILE_PATH</syntaxhighlight><br />
<br />
<br />
= How to rename and delete branches =<br />
<br />
* To rename a local branch:<br />
<br />
<syntaxhighlight lang="bash">git branch -m OLD_NAME NEW_NAME</syntaxhighlight><br />
<br />
: N.B. If you had already pushed some changes to GitHub, this will create a new identical branch there. You will need to delete the old one using the method described below.<br />
<br />
* To delete a local branch or a merged branch (i.e. pushed to github.com and committed to Dreamwidth):<br />
<br />
<syntaxhighlight lang="bash">git branch -d BRANCH_NAME</syntaxhighlight><br />
<br />
: The merge will only be detected if you've updated your code. Otherwise, you'll get an error saying the branch isn't fully merged.<br />
<br />
* To delete an unmerged branch (i.e. pushed to github.com but not committed to Dreamwidth or not fully so):<br />
<br />
<syntaxhighlight lang="bash">git branch -D BRANCH_NAME</syntaxhighlight><br />
<br />
* To delete a branch on GitHub:<br />
<br />
<syntaxhighlight lang="bash">git push origin :BRANCH_NAME</syntaxhighlight><br />
<br />
: You can also do this directly on GitHub once your branch has been merged into develop. Just click on the pull request (from the Activity list on your profile for example), scroll down and it'll ask if you want to delete the branch.<br />
<br />
<br />
= How to update your branch =<br />
<br />
* To update your branch so it has all the new code which has been added to develop since you created it:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME<br />
git pull --rebase --ff-only dreamwidth develop</syntaxhighlight><br />
<br />
: This will only work if your branch is empty or what you have has been committed and won't conflict with the new additions.<br />
<br />
* If you had already pushed some changes to GitHub, you will need to force a push to get it updated:<br />
<br />
<syntaxhighlight lang="bash">git push -f origin BRANCH_NAME</syntaxhighlight><br />
<br />
<br />
= How to squash several commits into one =<br />
<br />
If, for some reason, you'd like several commits to be just one, you can squash them. This is not reversible so proceed with caution.<br />
<br />
# Make sure everything is up-to-date.<br />
# Make sure you're on the correct bug branch using <code>git checkout</code>.<br />
# Load the interactive rebase interface using <syntaxhighlight lang="bash">git rebase -i develop</syntaxhighlight><br />
# The interface will show you all the successive commits on this branch, from the oldest at the top to the most recent at the bottom.<br />
# Edit the work 'pick' to the word 'squash' for the ones you want to squash into the previous commit.<br />
# When you're done hit Ctrl+X then type Y and Enter.<br />
# You'll be then shown the commit messages if you want to edit or remove them. When you're done hit Ctrl+X, Y and Enter again.<br />
# Note that if you had already pushed some changes to GitHub, you will need to force a push to get it updated:<br />
<br />
<syntaxhighlight lang="bash">git push -f origin BRANCHNAME</syntaxhighlight><br />
# Finally, you can skip some of these steps by using 'fixup' instead of 'squash' if you're happy with the commit message of the commit you want to squash others into.<br />
<br />
Also, [http://gitready.com/ git ready] has [http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html a nice guide to squashing commits] using the interactive rebaser (<tt>git rebase -i</tt>).<br />
<br />
FWIW, the interactive rebaser can also do many other nifty and powerful things. You can change commit messages, edit past commits, reorder commits, or discard individual commits entirely.<br />
<br />
<br />
= How to add/commit only part of a file =<br />
<br />
There are times when you want to commit only ''some'' of the changes you've made to a file. Maybe you've fixed one thing, and are in the midst of fixing a second thing somewhere else in that file when you decide you want to commit the first change. <br />
<br />
You don't have to back out the work you've done on the second fix in order to commit the first change by itself. Use the interactive option of <tt>git add</tt>:<br />
<br />
<syntaxhighlight lang="bash"><br />
# consider all changed files for addition <br />
git add -i <br />
# consider only the files specified <br />
git add -i FILE [FILE2 FILE3 ...]<br />
</syntaxhighlight><br />
<br />
You'll be shown the current staging status of the file(s), and how many lines in each of them are staged (added) or unstaged (not added yet).<br />
<br />
twilight:~/temp rick$ git add -i<br />
staged unstaged path<br />
1: unchanged +9/-8 bar.pl<br />
2: unchanged +2/-1 foo.pl<br />
3: unchanged +2/-0 index.html<br />
<br />
*** Commands ***<br />
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked<br />
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp<br />
What now> <br />
<br />
There are a lot of commands, but you really only need very few of them. Too, there's help available in each menu -- you can enter ? at any prompt for help, in addition to any visible help options.<br />
<br />
* 1: shows you the current staging status, just like when <tt>git add -i</tt> started.<br />
* 2: stage (add) whole files<br />
* 3: unstage (un-add) whole files <br />
* 4: add a currently-untracked file<br />
* 5: stage individual chunks in a file bit-by-bit <br />
* 6: show the diff between what's been staged so far & the previous commit<br />
<br />
Number 5 (patch) is the biggest winner of all these, and usually why you're running the command at all. Select 5 and you'll be presented with a menu like this one:<br />
<br />
staged unstaged path<br />
1: unchanged +9/-8 [b]ar.pl<br />
2: unchanged +2/-1 [f]oo.pl<br />
3: unchanged +2/-0 [i]ndex.html<br />
Patch update>> <br />
<br />
Pick the file or files you want to part-stage by entering their number(s), then hitting enter. When you're done picking files, hit enter once more at the empty <tt>Patch Update&gt;&gt;</tt> prompt. The program will show you every change in the files you've selected, one at a time, and ask you if you want to add it, eg: <br />
<br />
diff --git a/index.html b/index.html<br />
index 32870ee..416e0bd 100644<br />
--- a/index.html<br />
+++ b/index.html<br />
@@ -8,6 +8,7 @@<br />
<br />
<br />
<link rel="stylesheet" type="text/css" href="./css/base.css" /><br />
+ <link rel="stylesheet" type="text/css" href="./css/frontpage.css" /><br />
<br />
<title>Welcome!</title><br />
</head><br />
Stage this hunk [y/n/a/d/e/?]? <br />
<br />
Hit y to add this change, n to not add it for now. There are many more options, like splitting a change in two or adding every change left in the file -- you can hit ? to see those.<br />
<br />
When you're done, you're taken back to the main menu. If you're finished, hit 7 to quit. If you want, you can then review everything you've added by giving the command <br />
<br />
<syntaxhighlight lang="bash">git diff --cached</syntaxhighlight><br />
<br />
<br />
= How to create custom keywords for your most-used commands =<br />
<br />
* Tired of (mis)typing the same things over and over? You can create keywords for them. Open .gitconfig in your root folder. Add this at the bottom and edit as desired:<br />
<br />
<syntaxhighlight lang="bash">[alias]<br />
KEYWORD1= COMMAND1<br />
KEYWORD2= COMMAND2</syntaxhighlight><br />
<br />
: Warning! Make sure the keyword you're using isn't already a git command.<br />
<br />
* You can then use your keyword instead of typing the full command (e.g. <code>git c</code> instead of <code>git checkout -b</code>).<br />
<br />
= How to create a default commit message =<br />
<br />
Easy peasy! In your root folder, create a file called <code>.gitmessage.txt</code> with whatever default message you wanna use then edit .gitconfig to use it:<br />
<br />
<syntaxhighlight lang="bash">git config --global commit.template $HOME/.gitmessage.txt</syntaxhighlight><br />
<br />
<br />
= How to automatically insert the bug number into your commit message=<br />
<br />
Important! This will only work if 'bug XXX' where XXX is the bug number is in your branch name. This is meant as a way not to have to type it or paste it *again* in your commit messages.<br />
<br />
Go to ~/dw/.git/hooks/ and create a filed called <code>prepare-commit-msg</code>. [https://gist.github.com/afuna/ae9386b122d6a490eaf9 Paste this gist] made by the brilliant <dwuser>fu</dwuser> and save. Finally make it executable by running:<br />
<br />
<syntaxhighlight lang="bash">chmod u+x ~/dw/.git/hooks/prepare-commit-msg</syntaxhighlight><br />
<br />
: N.B. This can be used in conjunction with the default commit message mentioned in the previous section.<br />
<br />
<br />
= How to configure git =<br />
<br />
See [[Git_settings|this article]] for some of the most useful settings.<br />
<br />
[[Category:Development]]<br />
[[Category:Getting Started]]<br />
[[Category:Git]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Newbie_Guide:_Getting_Started_on_WindowsNewbie Guide: Getting Started on Windows2013-05-11T18:14:55Z<p>Sophira: Moving this section up to the top since it's necessary now before you get a 'hack.</p>
<hr />
<div>{{Note|text=Feel free to correct, expand, do anything which could make this better and clearer. ^_^}}<br />
<br />
{{Note|text=If you have a different OS you may find this still helpful. Just skip the parts which aren't relevant.}}<br />
<br />
= Contributor Licensing Agreement =<br />
<br />
The very first thing you need to do is [[Contributor_Licensing_Agreement|read and sign your CLA]] and mail it to Denise. If you don't agree with its terms Dreamwidth won't be able to accept your code; if you've submitted code but Denise doesn't have your CLA your code can't be added. So read, think it over, sign, mail then wait until you're told it's been received. You can then get started.<br />
<br />
<br />
= What do you need and why? =<br />
<br />
Because you're on Windows, you have to use quite a number of tools to access and manage things so this part might seem a little daunting. The good news is that 1) you're used to being flexible and resourceful, right? 2) once you've got everything set up things will be much simpler and intuitive.<br />
<br />
So what do you need?<br />
<br />
# You need a github.com account to be able to fetch the Dreamwith code, create your own copies of it, and upload your own changes. This is both where all the Dreamwidth code comes from and where your own code will end on but it's only a gateway: you can't do much on the site itself.<br />
# You need a Dreamhack to see what your changes will do on the site for real. Think of a Dreamhack as an online mirror of the Dreamwidth site which you get to play with and modify.<br />
# You need PuTTY to connect GitHub to your Dreamhack, to connect your Dreamhack to GitHub, and access and manage everything. In short, PuTTY is your true command center.<br />
# You need WinSCP to visualize your Dreamhack files and be able to open them in a text editor. It's pretty much like Explorer for your Dreamhack.<br />
# You need a text editor to edit your files.<br />
# You need a Bugzilla account to find and files bugs.<br />
<br />
Each section mentions where you need to do things so you won't get lost.<br />
<br />
== Create an account on GitHub ==<br />
<br />
Go to [http://www.github.com/ GitHub], click on 'sign up and pricing' and create a free account. I suggest you pick a username people are familiar with and the same username you'll have on your Bugzilla account.<br />
<br />
<br />
== On your GitHub account ==<br />
<br />
You need to fork the Dreamwidth code onto your own account. Forking is like cloning and branching. It will copy the code and also label your copy as being a branch (a fork) of the original Dreamwidth code so that everybody knows the two are connected.<br />
<br />
Dreamwidth is divided into two parts: an open-source part called 'dw-free', and a private part called 'dw-nonfree'. The private part is composed of elements which are specific to dreamwidth.org and can't be used on other sites (e.g. the logo) and external elements Dreamwidth is allowed to use on its own site but not redistribute to other sites. <br />
<br />
* To fork the free part go to https://github.com/dreamwidth/dw-free and click on Fork on the upper right corner.<br />
<br />
* To fork the nonfree part go to to https://github.com/dreamwidth/dw-nonfree and do the same.<br />
<br />
<br />
== Get a Dreamhack ==<br />
<br />
Apply for a Dreamhack by [http://hack.dreamwidth.net/apply.shtml filling this form]. The two important fields are 'your desired username' and 'your email address'. Your username is used to manage your Dreamhack and create the URL where your Dreamhack will be located at so you can pick anything. Your email address is used to send you a welcome e-mail which contains important information as well as various alerts. You can pick any of your existing email addresses or choose to create an email account entirely devoted to your development work.<br />
<br />
Once you're done, you should get an e-mail with your login username and a password. Don't lose it.<br />
<br />
<br />
== Install PuTTY ==<br />
<br />
* Download 'Windows installer for everything except PuTTYtel' .exe file at [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] and install it.<br />
<br />
* Run PuTTY. In the configuration window, enter "hack.dreamwidth.net" for the host name. Go to Connection/Data and enter the username/login given to you in the welcome e-mail. It should be something like dh-username.<br />
<br />
* Click on Open. If you get a pop-up message about a key, click Yes.<br />
<br />
* Enter the password given to you in the welcome e-mail when asked. Note that no characters are displayed and the cursor won't move. It's normal.<br />
<br />
* Change your password by typing:<br />
<syntaxhighlight lang="bash">passwd</syntaxhighlight><br />
<br />
* Your default Dreamhack account is called 'system'. Set its password with this command:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/make_system.pl</syntaxhighlight><br />
<br />
<br />
== Install WinSCP ==<br />
<br />
* Install [http://winscp.net/eng/download.php WinSCP]. During the installation, you may be asked about the mode you prefer: Commander and Explorer. Commander works like an FTP client: a partitioned window with your computer files on one side and the Dreamhack files on the other. Explorer will only display your Dreamhack files and works like Windows's Explorer. Either mode is fine. Pick what you're most used to.<br />
<br />
* Use "hack.dreamwidth.net" for the host name. Enter your username and the password you typed when you did <code>passwd</code> on PuTTY. Click on Save then on Login.<br />
<br />
<br />
== Get a good text editor ==<br />
<br />
While you can use Notepad, I recommend [http://notepad-plus-plus.org/download/ Notepad++] instead. It's free, simple and will make editing much easier.<br />
<br />
<br />
== Create a Bugzilla account ==<br />
<br />
Simply [http://bugs.dwscoalition.org/createaccount.cgi click here]. Go to [http://bugs.dwscoalition.org/userprefs.cgi?tab=account Name and Password] and enter your name following this format: <code>Name [:username]</code> as per <dwuser>mark</dwuser>'s [http://dw-dev.dreamwidth.org/17146.html instructions.] 'Name' can be your real name, a nickname, your username again, etc. Pick what you're comfortable with.<br />
<br />
<br />
= Set things up =<br />
<br />
== Further configuration steps ==<br />
<br />
These are not mandatory but will certainly make your life easier.<br />
<br />
=== Change some git settings ===<br />
<br />
In PuTTY, I suggest going through [[Git_settings#Recommended_settings|all the steps mentioned in this section]].<br />
<br />
<br />
=== Give special abilities to your system account ===<br />
<br />
* Log in to your Dreamhack (http://www.USERNAME.hack.dreamwidth.net/) using system and your password for this account.<br />
<br />
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/priv/ http://www.USERNAME.hack.dreamwidth.net/admin/priv/]. Click on 'payments' type 'system' in the User field then click on 'Make Changes'. The system account now has the ability (called 'privilege' or 'priv') to give paid time to any account.<br />
<br />
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/pay http://www.USERNAME.hack.dreamwidth.net/admin/pay]. Type 'system' in the Edit user field and click on Go. Make your account a seed one.<br />
<br />
<br />
=== Get rid of invite codes ===<br />
<br />
* In WinSCP, go to <code>/dw/ext/local/etc/</code>, and double-click on <code>config.pl</code>. Find <code>$USE_ACCT_CODES = 1;</code> and change 1 to <code>0</code>. Save your file.<br />
<br />
* In PuTTY, type this to make the changes go live on your Dreamhack:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load</syntaxhighlight><br />
<br />
* If you're concerned about spam, you may want to create a promo code instead. Go to http://www.USERNAME.hack.dreamwidth.net/admin/invites/promo?state=active and click on 'Create New'. Enter a code name and a number (you can edit the number later if you're about to run out of invites).<br />
<br />
<br />
=== Customize PuTTY and Notepad++ ===<br />
<br />
See these articles for details: [[SSH_Client:_PuTTY| PuTTY]], [[Editor:_Notepad_plus_plus | Notepad++]].<br />
<br />
= Make sure things are up-to-date =<br />
<br />
Important: in PuTTY, you can get explanations about bash commands using <code>help COMMAND</code> (e.g. <code>help cd</code>) and any git commands using <code>git COMMAND -h</code> (e.g <code>git pull -h</code>).<br />
<br />
<br />
== Update your code ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
Code is committed by developers all the time. You must always update your repositories before you do anything else.<br />
<br />
* Go to [[Dev_Maintenance#dwu_-_Updating_the_repos | this article]] and enter all the code listed in the second, bigger section for both dw-free and dw-nonfree (but don't enter the lines starting with #).<br />
<br />
* You can also create a script to make this process simpler as explained in the article.<br />
<br />
* Make sure to check for updates to see if the script has changed.<br />
<br />
: N.B. To create a new file open WinSCP, right click into the correct folder (<code>/bin</code> here) then click on New/File.<br />
<br />
<br />
== Update your database ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* We're already seen this once but here it is again:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load</syntaxhighlight><br />
<br />
* You can also create a script to make this process simpler: see [[Dev_Maintenance#dwdb_-_Updating_the_database | this article]].<br />
<br />
<br />
= Make changes to your local code =<br />
<br />
== Find or file a bug ==<br />
<br />
<strong>--> in Bugzilla</strong><br />
<br />
* To find: you can use [http://bugs.dwscoalition.org/userprefs.cgi?tab=saved-searches predefined searches] such as [http://bugs.dwscoalition.org/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=unassigned%20effort-minor&sharer_id=2 unassigned effort-minor].<br />
<br />
: Some of these bugs may not appear to be 'minor' to you. No worries. There are usually a few tiny bugs which only require small changed to be done on one of the site pages (text to edit; elements to move, remove, add or hide from certain categories of users, etc.).<br />
<br />
* To file: make sure it's not already been filed using [http://bugs.dwscoalition.org/query.cgi?format=specific simple search] or [http://bugs.dwscoalition.org/query.cgi?format=advanced advanced search] then [http://bugs.dwscoalition.org/enter_bug.cgi?product=Dreamwidth%20Development use this form] to file a new bug. Fill and edit the fields as needed.<br />
<br />
* To assign a bug to yourself, click on Take next to Assign To and set the status to IN_PROGRESS.<br />
<br />
<br />
== Create a local branch stemming from develop ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* Pick the correct repository:<br />
** if you want to work in dw-free you need to be in <code>~/dw$</code>. If you're not type <code>cd $LJHOME</code>.<br />
** if you want to work in dw-nonfree you need to be in <code>~/dw/ext/dw-nonfree$</code>. If you're not type <code>cd $LJHOME/ext/dw-nonfree</code><br />
<br />
* Then make sure you're in the develop branch using the <code>checkout</code> command:<br />
<br />
<syntaxhighlight lang="bash">git checkout develop</syntaxhighlight><br />
<br />
* Now you can create a new branch specifically dedicated to the bug you want to work on:<br />
<br />
<syntaxhighlight lang="bash">git branch BRANCH_NAME</syntaxhighlight><br />
<br />
: N.B. It is best if you use the bug number and a short description as your branch name: <code>bug####/short_description</code><br />
<br />
* To switch to this branch, use the <code>checkout</code> command again:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME</syntaxhighlight><br />
<br />
* To create and switch to a branch at once:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME</syntaxhighlight><br />
<br />
* To do everything at once:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME develop</syntaxhighlight><br />
<br />
* And that's it. Now you can start coding!<br />
<br />
<br />
== Work, work, work ==<br />
<br />
<strong>--> in WinSCP and your editor</strong><br />
<br />
* In WinSCP right click to edit the file you want to work on.<br />
<br />
* Remember that the free part of the code is in <code>~/dw/*</code> while the non-free part is in <code>~/dw/ext/dw-nonfree/*</code>.<br />
<br />
* Site pages are either [[BML|.bml]] or [[TT|.tt]] files. You can find them in <code>~dw/htdocs/</code> and <code>~dw/views/</code>. They may use .pm modules/widgets, found in <code>~dw/cgi-bin/LJ/</code> and <code>~dw/cgi-bin/DW/</code>.<br />
<br />
* Text strings which are not in <code>~dw/htdocs/xxx.bml.text</code> and <code>~dw/views/xxx.tt.text</code> are in <code>~dw/bin/upgrading/en.dat</code>.<br />
<br />
* For more specific searches, see [[Dev_Finding_Things|this article]] on how to use <code>rgrep</code> and <code>find</code>.<br />
<br />
<br />
== Test your changes ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* Stop your Dreamhack:<br />
<syntaxhighlight lang="bash">stop-apache</syntaxhighlight><br />
<br />
* [[#Update_your_database|Update your database]] (type <code>dwdb</code> instead if you've created a script for it).<br />
<br />
* Start your Dreamhack again:<br />
<syntaxhighlight lang="bash">start-apache</syntaxhighlight><br />
<br />
<strong>--> on your Dreamhack</strong><br />
<br />
* Go to your Dreamhack and test. Edit the files again in WinSCP if more changes are needed. Go through these steps again to test your new changes.<br />
<br />
<br />
== Mark your local changes as ready to be committed ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
Before being committed, work is moved to a staging area. Think of it as the "Ready? Steady?" before the "Go!". At this point nothing is definite and you can easily change things.<br />
<br />
* Add your changes to the staging ('pre-commit') area:<br />
<br />
<syntaxhighlight lang="bash">git add FILE_NAME</syntaxhighlight><br />
<br />
* To add all files which have been updated or deleted at once:<br />
<br />
<syntaxhighlight lang="bash">git add -u</syntaxhighlight><br />
<br />
* To add all files which have been added, deleted or updated at once:<br />
<br />
<syntaxhighlight lang="bash">git add .</syntaxhighlight><br />
<br />
* If you realize you need to do some more work, edit files again and use <code>add</code> again when you're done. It's that simple.<br />
<br />
<br />
== Commit your changes locally ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* If you think you're done with your work at this point you can commit your changes locally:<br />
<br />
<syntaxhighlight lang="bash">git commit</syntaxhighlight><br />
<br />
* This will open the nano editor so you can type a commit message. Unfortunately, nano isn't very easy to type into (you can't use the number pad for instance) so I advise you to type your commit message in your text editor then paste it in nano (right click in PuTTY to paste).<br />
<br />
* Here's an example of commit message (try and keep line shorts):<br />
<br />
<code>Bug #123 - Subject<br />
<br />
Bugzilla URL<br />
<br />
Patch description<br />
<br />
Description can go on several short lines.</code><br />
<br />
* Hit Ctrl+X, 'y' then enter to save your message.<br />
<br />
* If you you need to do some more work later you can update your commit:<br />
<br />
<syntaxhighlight lang="bash">git commit --amend</syntaxhighlight><br />
<br />
: N.B. You can also do this if you need to edit your commit message.<br />
<br />
* If you want to pace yourself or be easily able to go back to a certain point in your work you can do successive commits instead of one big final one.<br />
<br />
<br />
= Go from local to global =<br />
<br />
== Push the changes to your github.com repository ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
You should only push your local changes to your develop branch on github.com once you're happy with your patch as things are a bit harder to change at this point. Once you've finished your work use the <code>push</code> command and the branch name:<br />
<br />
<syntaxhighlight lang="bash">git push origin BRANCH_NAME</syntaxhighlight><br />
<br />
<br />
== Request your changes to be pulled into the original Dreamwidth repository ==<br />
<br />
<strong>--> on github.com</strong><br />
<br />
Go to your profile page on GitHub. Select the Public Activity tab. Spot the line where it says you've created a new branch. Click on the branch name. Click on Compare to make sure things are how you want them to be. Once you've checked things over, click on Pull Request at the top.<br />
<br />
: N.B. If there's an unusual delay between the moment you pushed your branch and the moment it appears on GitHub, [https://status.github.com/ check the status page].<br />
<br />
<br />
== What now? ==<br />
<br />
<strong>--> in Bugzilla</strong><br />
<br />
* You can comment on the bug with a link to your pull request if you want. Once your changes have been accepted and pulled into the Dreamwidth code (i.e. merged into the original develop branch), you'll get an email notification and the bug will be closed if no more work is needed.<br />
<br />
<strong>--> on github.com</strong><br />
<br />
* On GitHub your request will be marked as merged on your profile page.<br />
<br />
* That's it! You're done. Congratulations!<br />
<br />
<br />
= Extra case: the release branch =<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
If you need to make urgent fixes after a code push, first create a copy of the release branch. Like so:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b release-X.X dreamwidth/release-X.X</syntaxhighlight><br />
<br />
:X-X is the number given to the release on the GitHub repo branch. Make sure it matches.<br />
<br />
Then follow the usual steps (edit, add, commit, push) and when you request your changes to be pulled on GitHub make sure to select the release branch as your base branch and your head branch.<br />
<br />
<br />
= Help! Troubleshooting tips =<br />
<br />
== My branch has commits from another user! ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
If you realize once you've pushed your branch to github.com that you built it upon another pull request that has been merged since then and that your branch now has commits from another user, don't panic. If these commits don't affect yours, you can easily rebase your branch against develop as explained in [[#How_to_update_your_branch|this how to]]. The system will see that some of the commits on your branch have already been merged into develop and will skip them, thus leaving only your own unmerged commits on your branch. There, all clean! All you have to do is push your branch again.<br />
<br />
<br />
== Issues with text strings ==<br />
<br />
* As <dwuser>denise</dwuser> explained [http://dw-dev-training.dreamwidth.org/13233.html here], you need to delete old text strings and create new ones when you edit .text files or en.dat instead of simply editing the text. If the change isn't critical - the string doesn't need to be renamed or the text change is minor - it's better to notify the site copy team so that text can be changed locally and the original file left alone.<br />
<br />
* If text you've modified doesn't appear on the site after a code push, append <code>?uselang=debug</code> to the page URL to make sure it's using the right string. If it is and it still doesn't display after a while, comment on <dwcomm>dw_maintenance</dwcomm>.<br />
<br />
<br />
== Starting over ==<br />
<br />
If something's wrong you can:<br />
* delete your GitHub repositories on github.com: go to your repository, click on Admin then scroll down to 'Delete this repository'.<br />
* then [[Moving_your_Dreamwidth_installation_to_use_Github#Stop_the_server_and_all_workers | go through these steps again]].<br />
<br />
If something's *really* wrong you can also [[Dreamhack_Troubleshooting#I_want_to_wipe_my_install_and_start_over|rebuild you Dreamhack completely and start over from scratch]].<br />
<br />
<br />
= Going further / References =<br />
<br />
To understand things better, I suggest reading relevant sections of [http://rogerdudler.github.com/git-guide/index.html Git - The Simple Guide], watching part of <em>Git for Ages 4 and Up</em> ([http://www.youtube.com/watch?v=1ffBJ4sVUb4 Watch on YouTube] or [http://mirror.internode.on.net/pub/linux.conf.au/2013/mp4/Git_For_Ages_4_And_Up.mp4 Download]), and reading the first three chapters of [http://git-scm.com/book Pro Git].<br />
<br />
For lots of useful commands, see [[How-To_on_Git_for_Newbies|these how-tos]].<br />
<br />
Other useful references:<br />
<br />
* [[Moving_your_Dreamwidth_installation_to_use_Github|Moving to GitHub]]<br />
* [[Dev_Maintenance|Development Maintenance]]<br />
* [[Draft:_Github_development_process|Github Development Process]]<br />
* [http://ss64.com/bash/ Bash commands]<br />
* [[Git_Getting_Started|Git: Getting Started]]<br />
* [http://git-scm.com/book Pro Git]<br />
* [http://git-scm.com/book/commands Pro Git - Index of Commands]<br />
* [http://git-scm.com/docs Git Reference]<br />
<br />
[[Category:Dreamhack]]<br />
[[Category:Development]]<br />
[[Category:Getting Started]]<br />
[[Category:Git]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Newbie_Guide:_Getting_Started_on_WindowsNewbie Guide: Getting Started on Windows2013-05-11T18:13:12Z<p>Sophira: /* Set things up */ This part about extra stuff to do on the Dreamhack is no longer necessary; Dreamhacks are set up with GitHub automatically.</p>
<hr />
<div>{{Note|text=Feel free to correct, expand, do anything which could make this better and clearer. ^_^}}<br />
<br />
{{Note|text=If you have a different OS you may find this still helpful. Just skip the parts which aren't relevant.}}<br />
<br />
= Contributor Licensing Agreement =<br />
<br />
The very first thing you need to do is [[Contributor_Licensing_Agreement|read and sign your CLA]] and mail it to Denise. If you don't agree with its terms Dreamwidth won't be able to accept your code; if you've submitted code but Denise doesn't have your CLA your code can't be added. So read, think it over, sign, mail then wait until you're told it's been received. You can then get started.<br />
<br />
<br />
= What do you need and why? =<br />
<br />
Because you're on Windows, you have to use quite a number of tools to access and manage things so this part might seem a little daunting. The good news is that 1) you're used to being flexible and resourceful, right? 2) once you've got everything set up things will be much simpler and intuitive.<br />
<br />
So what do you need?<br />
<br />
# You need a github.com account to be able to fetch the Dreamwith code, create your own copies of it, and upload your own changes. This is both where all the Dreamwidth code comes from and where your own code will end on but it's only a gateway: you can't do much on the site itself.<br />
# You need a Dreamhack to see what your changes will do on the site for real. Think of a Dreamhack as an online mirror of the Dreamwidth site which you get to play with and modify.<br />
# You need PuTTY to connect GitHub to your Dreamhack, to connect your Dreamhack to GitHub, and access and manage everything. In short, PuTTY is your true command center.<br />
# You need WinSCP to visualize your Dreamhack files and be able to open them in a text editor. It's pretty much like Explorer for your Dreamhack.<br />
# You need a text editor to edit your files.<br />
# You need a Bugzilla account to find and files bugs.<br />
<br />
Each section mentions where you need to do things so you won't get lost.<br />
<br />
== Create an account on GitHub ==<br />
<br />
Go to [http://www.github.com/ GitHub], click on 'sign up and pricing' and create a free account. I suggest you pick a username people are familiar with and the same username you'll have on your Bugzilla account.<br />
<br />
<br />
== Get a Dreamhack ==<br />
<br />
Apply for a Dreamhack by [http://hack.dreamwidth.net/apply.shtml filling this form]. The two important fields are 'your desired username' and 'your email address'. Your username is used to manage your Dreamhack and create the URL where your Dreamhack will be located at so you can pick anything. Your email address is used to send you a welcome e-mail which contains important information as well as various alerts. You can pick any of your existing email addresses or choose to create an email account entirely devoted to your development work.<br />
<br />
Once you're done, you should get an e-mail with your login username and a password. Don't lose it.<br />
<br />
<br />
== Install PuTTY ==<br />
<br />
* Download 'Windows installer for everything except PuTTYtel' .exe file at [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] and install it.<br />
<br />
* Run PuTTY. In the configuration window, enter "hack.dreamwidth.net" for the host name. Go to Connection/Data and enter the username/login given to you in the welcome e-mail. It should be something like dh-username.<br />
<br />
* Click on Open. If you get a pop-up message about a key, click Yes.<br />
<br />
* Enter the password given to you in the welcome e-mail when asked. Note that no characters are displayed and the cursor won't move. It's normal.<br />
<br />
* Change your password by typing:<br />
<syntaxhighlight lang="bash">passwd</syntaxhighlight><br />
<br />
* Your default Dreamhack account is called 'system'. Set its password with this command:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/make_system.pl</syntaxhighlight><br />
<br />
<br />
== Install WinSCP ==<br />
<br />
* Install [http://winscp.net/eng/download.php WinSCP]. During the installation, you may be asked about the mode you prefer: Commander and Explorer. Commander works like an FTP client: a partitioned window with your computer files on one side and the Dreamhack files on the other. Explorer will only display your Dreamhack files and works like Windows's Explorer. Either mode is fine. Pick what you're most used to.<br />
<br />
* Use "hack.dreamwidth.net" for the host name. Enter your username and the password you typed when you did <code>passwd</code> on PuTTY. Click on Save then on Login.<br />
<br />
<br />
== Get a good text editor ==<br />
<br />
While you can use Notepad, I recommend [http://notepad-plus-plus.org/download/ Notepad++] instead. It's free, simple and will make editing much easier.<br />
<br />
<br />
== Create a Bugzilla account ==<br />
<br />
Simply [http://bugs.dwscoalition.org/createaccount.cgi click here]. Go to [http://bugs.dwscoalition.org/userprefs.cgi?tab=account Name and Password] and enter your name following this format: <code>Name [:username]</code> as per <dwuser>mark</dwuser>'s [http://dw-dev.dreamwidth.org/17146.html instructions.] 'Name' can be your real name, a nickname, your username again, etc. Pick what you're comfortable with.<br />
<br />
<br />
= Set things up =<br />
<br />
== On your GitHub account ==<br />
<br />
You need to fork the Dreamwidth code onto your own account. Forking is like cloning and branching. It will copy the code and also label your copy as being a branch (a fork) of the original Dreamwidth code so that everybody knows the two are connected.<br />
<br />
Dreamwidth is divided into two parts: an open-source part called 'dw-free', and a private part called 'dw-nonfree'. The private part is composed of elements which are specific to dreamwidth.org and can't be used on other sites (e.g. the logo) and external elements Dreamwidth is allowed to use on its own site but not redistribute to other sites. <br />
<br />
* To fork the free part go to https://github.com/dreamwidth/dw-free and click on Fork on the upper right corner.<br />
<br />
* To fork the nonfree part go to to https://github.com/dreamwidth/dw-nonfree and do the same.<br />
<br />
<br />
== Further configuration steps ==<br />
<br />
These are not mandatory but will certainly make your life easier.<br />
<br />
=== Change some git settings ===<br />
<br />
In PuTTY, I suggest going through [[Git_settings#Recommended_settings|all the steps mentioned in this section]].<br />
<br />
<br />
=== Give special abilities to your system account ===<br />
<br />
* Log in to your Dreamhack (http://www.USERNAME.hack.dreamwidth.net/) using system and your password for this account.<br />
<br />
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/priv/ http://www.USERNAME.hack.dreamwidth.net/admin/priv/]. Click on 'payments' type 'system' in the User field then click on 'Make Changes'. The system account now has the ability (called 'privilege' or 'priv') to give paid time to any account.<br />
<br />
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/pay http://www.USERNAME.hack.dreamwidth.net/admin/pay]. Type 'system' in the Edit user field and click on Go. Make your account a seed one.<br />
<br />
<br />
=== Get rid of invite codes ===<br />
<br />
* In WinSCP, go to <code>/dw/ext/local/etc/</code>, and double-click on <code>config.pl</code>. Find <code>$USE_ACCT_CODES = 1;</code> and change 1 to <code>0</code>. Save your file.<br />
<br />
* In PuTTY, type this to make the changes go live on your Dreamhack:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load</syntaxhighlight><br />
<br />
* If you're concerned about spam, you may want to create a promo code instead. Go to http://www.USERNAME.hack.dreamwidth.net/admin/invites/promo?state=active and click on 'Create New'. Enter a code name and a number (you can edit the number later if you're about to run out of invites).<br />
<br />
<br />
=== Customize PuTTY and Notepad++ ===<br />
<br />
See these articles for details: [[SSH_Client:_PuTTY| PuTTY]], [[Editor:_Notepad_plus_plus | Notepad++]].<br />
<br />
= Make sure things are up-to-date =<br />
<br />
Important: in PuTTY, you can get explanations about bash commands using <code>help COMMAND</code> (e.g. <code>help cd</code>) and any git commands using <code>git COMMAND -h</code> (e.g <code>git pull -h</code>).<br />
<br />
<br />
== Update your code ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
Code is committed by developers all the time. You must always update your repositories before you do anything else.<br />
<br />
* Go to [[Dev_Maintenance#dwu_-_Updating_the_repos | this article]] and enter all the code listed in the second, bigger section for both dw-free and dw-nonfree (but don't enter the lines starting with #).<br />
<br />
* You can also create a script to make this process simpler as explained in the article.<br />
<br />
* Make sure to check for updates to see if the script has changed.<br />
<br />
: N.B. To create a new file open WinSCP, right click into the correct folder (<code>/bin</code> here) then click on New/File.<br />
<br />
<br />
== Update your database ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* We're already seen this once but here it is again:<br />
<br />
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load</syntaxhighlight><br />
<br />
* You can also create a script to make this process simpler: see [[Dev_Maintenance#dwdb_-_Updating_the_database | this article]].<br />
<br />
<br />
= Make changes to your local code =<br />
<br />
== Find or file a bug ==<br />
<br />
<strong>--> in Bugzilla</strong><br />
<br />
* To find: you can use [http://bugs.dwscoalition.org/userprefs.cgi?tab=saved-searches predefined searches] such as [http://bugs.dwscoalition.org/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=unassigned%20effort-minor&sharer_id=2 unassigned effort-minor].<br />
<br />
: Some of these bugs may not appear to be 'minor' to you. No worries. There are usually a few tiny bugs which only require small changed to be done on one of the site pages (text to edit; elements to move, remove, add or hide from certain categories of users, etc.).<br />
<br />
* To file: make sure it's not already been filed using [http://bugs.dwscoalition.org/query.cgi?format=specific simple search] or [http://bugs.dwscoalition.org/query.cgi?format=advanced advanced search] then [http://bugs.dwscoalition.org/enter_bug.cgi?product=Dreamwidth%20Development use this form] to file a new bug. Fill and edit the fields as needed.<br />
<br />
* To assign a bug to yourself, click on Take next to Assign To and set the status to IN_PROGRESS.<br />
<br />
<br />
== Create a local branch stemming from develop ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* Pick the correct repository:<br />
** if you want to work in dw-free you need to be in <code>~/dw$</code>. If you're not type <code>cd $LJHOME</code>.<br />
** if you want to work in dw-nonfree you need to be in <code>~/dw/ext/dw-nonfree$</code>. If you're not type <code>cd $LJHOME/ext/dw-nonfree</code><br />
<br />
* Then make sure you're in the develop branch using the <code>checkout</code> command:<br />
<br />
<syntaxhighlight lang="bash">git checkout develop</syntaxhighlight><br />
<br />
* Now you can create a new branch specifically dedicated to the bug you want to work on:<br />
<br />
<syntaxhighlight lang="bash">git branch BRANCH_NAME</syntaxhighlight><br />
<br />
: N.B. It is best if you use the bug number and a short description as your branch name: <code>bug####/short_description</code><br />
<br />
* To switch to this branch, use the <code>checkout</code> command again:<br />
<br />
<syntaxhighlight lang="bash">git checkout BRANCH_NAME</syntaxhighlight><br />
<br />
* To create and switch to a branch at once:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME</syntaxhighlight><br />
<br />
* To do everything at once:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b BRANCH_NAME develop</syntaxhighlight><br />
<br />
* And that's it. Now you can start coding!<br />
<br />
<br />
== Work, work, work ==<br />
<br />
<strong>--> in WinSCP and your editor</strong><br />
<br />
* In WinSCP right click to edit the file you want to work on.<br />
<br />
* Remember that the free part of the code is in <code>~/dw/*</code> while the non-free part is in <code>~/dw/ext/dw-nonfree/*</code>.<br />
<br />
* Site pages are either [[BML|.bml]] or [[TT|.tt]] files. You can find them in <code>~dw/htdocs/</code> and <code>~dw/views/</code>. They may use .pm modules/widgets, found in <code>~dw/cgi-bin/LJ/</code> and <code>~dw/cgi-bin/DW/</code>.<br />
<br />
* Text strings which are not in <code>~dw/htdocs/xxx.bml.text</code> and <code>~dw/views/xxx.tt.text</code> are in <code>~dw/bin/upgrading/en.dat</code>.<br />
<br />
* For more specific searches, see [[Dev_Finding_Things|this article]] on how to use <code>rgrep</code> and <code>find</code>.<br />
<br />
<br />
== Test your changes ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* Stop your Dreamhack:<br />
<syntaxhighlight lang="bash">stop-apache</syntaxhighlight><br />
<br />
* [[#Update_your_database|Update your database]] (type <code>dwdb</code> instead if you've created a script for it).<br />
<br />
* Start your Dreamhack again:<br />
<syntaxhighlight lang="bash">start-apache</syntaxhighlight><br />
<br />
<strong>--> on your Dreamhack</strong><br />
<br />
* Go to your Dreamhack and test. Edit the files again in WinSCP if more changes are needed. Go through these steps again to test your new changes.<br />
<br />
<br />
== Mark your local changes as ready to be committed ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
Before being committed, work is moved to a staging area. Think of it as the "Ready? Steady?" before the "Go!". At this point nothing is definite and you can easily change things.<br />
<br />
* Add your changes to the staging ('pre-commit') area:<br />
<br />
<syntaxhighlight lang="bash">git add FILE_NAME</syntaxhighlight><br />
<br />
* To add all files which have been updated or deleted at once:<br />
<br />
<syntaxhighlight lang="bash">git add -u</syntaxhighlight><br />
<br />
* To add all files which have been added, deleted or updated at once:<br />
<br />
<syntaxhighlight lang="bash">git add .</syntaxhighlight><br />
<br />
* If you realize you need to do some more work, edit files again and use <code>add</code> again when you're done. It's that simple.<br />
<br />
<br />
== Commit your changes locally ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
* If you think you're done with your work at this point you can commit your changes locally:<br />
<br />
<syntaxhighlight lang="bash">git commit</syntaxhighlight><br />
<br />
* This will open the nano editor so you can type a commit message. Unfortunately, nano isn't very easy to type into (you can't use the number pad for instance) so I advise you to type your commit message in your text editor then paste it in nano (right click in PuTTY to paste).<br />
<br />
* Here's an example of commit message (try and keep line shorts):<br />
<br />
<code>Bug #123 - Subject<br />
<br />
Bugzilla URL<br />
<br />
Patch description<br />
<br />
Description can go on several short lines.</code><br />
<br />
* Hit Ctrl+X, 'y' then enter to save your message.<br />
<br />
* If you you need to do some more work later you can update your commit:<br />
<br />
<syntaxhighlight lang="bash">git commit --amend</syntaxhighlight><br />
<br />
: N.B. You can also do this if you need to edit your commit message.<br />
<br />
* If you want to pace yourself or be easily able to go back to a certain point in your work you can do successive commits instead of one big final one.<br />
<br />
<br />
= Go from local to global =<br />
<br />
== Push the changes to your github.com repository ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
You should only push your local changes to your develop branch on github.com once you're happy with your patch as things are a bit harder to change at this point. Once you've finished your work use the <code>push</code> command and the branch name:<br />
<br />
<syntaxhighlight lang="bash">git push origin BRANCH_NAME</syntaxhighlight><br />
<br />
<br />
== Request your changes to be pulled into the original Dreamwidth repository ==<br />
<br />
<strong>--> on github.com</strong><br />
<br />
Go to your profile page on GitHub. Select the Public Activity tab. Spot the line where it says you've created a new branch. Click on the branch name. Click on Compare to make sure things are how you want them to be. Once you've checked things over, click on Pull Request at the top.<br />
<br />
: N.B. If there's an unusual delay between the moment you pushed your branch and the moment it appears on GitHub, [https://status.github.com/ check the status page].<br />
<br />
<br />
== What now? ==<br />
<br />
<strong>--> in Bugzilla</strong><br />
<br />
* You can comment on the bug with a link to your pull request if you want. Once your changes have been accepted and pulled into the Dreamwidth code (i.e. merged into the original develop branch), you'll get an email notification and the bug will be closed if no more work is needed.<br />
<br />
<strong>--> on github.com</strong><br />
<br />
* On GitHub your request will be marked as merged on your profile page.<br />
<br />
* That's it! You're done. Congratulations!<br />
<br />
<br />
= Extra case: the release branch =<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
If you need to make urgent fixes after a code push, first create a copy of the release branch. Like so:<br />
<br />
<syntaxhighlight lang="bash">git checkout -b release-X.X dreamwidth/release-X.X</syntaxhighlight><br />
<br />
:X-X is the number given to the release on the GitHub repo branch. Make sure it matches.<br />
<br />
Then follow the usual steps (edit, add, commit, push) and when you request your changes to be pulled on GitHub make sure to select the release branch as your base branch and your head branch.<br />
<br />
<br />
= Help! Troubleshooting tips =<br />
<br />
== My branch has commits from another user! ==<br />
<br />
<strong>--> in PuTTY</strong><br />
<br />
If you realize once you've pushed your branch to github.com that you built it upon another pull request that has been merged since then and that your branch now has commits from another user, don't panic. If these commits don't affect yours, you can easily rebase your branch against develop as explained in [[#How_to_update_your_branch|this how to]]. The system will see that some of the commits on your branch have already been merged into develop and will skip them, thus leaving only your own unmerged commits on your branch. There, all clean! All you have to do is push your branch again.<br />
<br />
<br />
== Issues with text strings ==<br />
<br />
* As <dwuser>denise</dwuser> explained [http://dw-dev-training.dreamwidth.org/13233.html here], you need to delete old text strings and create new ones when you edit .text files or en.dat instead of simply editing the text. If the change isn't critical - the string doesn't need to be renamed or the text change is minor - it's better to notify the site copy team so that text can be changed locally and the original file left alone.<br />
<br />
* If text you've modified doesn't appear on the site after a code push, append <code>?uselang=debug</code> to the page URL to make sure it's using the right string. If it is and it still doesn't display after a while, comment on <dwcomm>dw_maintenance</dwcomm>.<br />
<br />
<br />
== Starting over ==<br />
<br />
If something's wrong you can:<br />
* delete your GitHub repositories on github.com: go to your repository, click on Admin then scroll down to 'Delete this repository'.<br />
* then [[Moving_your_Dreamwidth_installation_to_use_Github#Stop_the_server_and_all_workers | go through these steps again]].<br />
<br />
If something's *really* wrong you can also [[Dreamhack_Troubleshooting#I_want_to_wipe_my_install_and_start_over|rebuild you Dreamhack completely and start over from scratch]].<br />
<br />
<br />
= Going further / References =<br />
<br />
To understand things better, I suggest reading relevant sections of [http://rogerdudler.github.com/git-guide/index.html Git - The Simple Guide], watching part of <em>Git for Ages 4 and Up</em> ([http://www.youtube.com/watch?v=1ffBJ4sVUb4 Watch on YouTube] or [http://mirror.internode.on.net/pub/linux.conf.au/2013/mp4/Git_For_Ages_4_And_Up.mp4 Download]), and reading the first three chapters of [http://git-scm.com/book Pro Git].<br />
<br />
For lots of useful commands, see [[How-To_on_Git_for_Newbies|these how-tos]].<br />
<br />
Other useful references:<br />
<br />
* [[Moving_your_Dreamwidth_installation_to_use_Github|Moving to GitHub]]<br />
* [[Dev_Maintenance|Development Maintenance]]<br />
* [[Draft:_Github_development_process|Github Development Process]]<br />
* [http://ss64.com/bash/ Bash commands]<br />
* [[Git_Getting_Started|Git: Getting Started]]<br />
* [http://git-scm.com/book Pro Git]<br />
* [http://git-scm.com/book/commands Pro Git - Index of Commands]<br />
* [http://git-scm.com/docs Git Reference]<br />
<br />
[[Category:Dreamhack]]<br />
[[Category:Development]]<br />
[[Category:Getting Started]]<br />
[[Category:Git]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2012-11-30T21:25:58Z<p>Sophira: /* Installing necessary packages */ Removing duplicated libhash-multivalue-perl.</p>
<hr />
<div><br />
Firstly, you'll need to set up a Linux system; these instructions assume Ubuntu 12.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should log in as root and update the packages on your system:<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
apt-get install git-core subversion apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libdatetime-perl libcache-memcached-perl libhash-multivalue-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtest-simpleunit-perl libtemplate-perl libterm-readkey-perl \<br />
gcc libtest-most-perl libgearman-client-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl<br />
<br />
This will download about 64MB of files and use around 215MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter.<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN # this will guide you through setting up CPAN<br />
cpan GTop <br />
cpan Digest::SHA1<br />
cpan Unicode::CheckUTF8<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
cpan TheSchwartz::Worker::PubSubHubbubPublish<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Set Timezone to UTC ==<br />
<br />
Dreamwidth will complain if you aren't running in UTC. If you're not configured for UTC already, you can reset it (on Ubuntu/Debian) using<br />
<br />
dpkg-reconfigure tzdata<br />
<br />
and choose Etc/UTC.<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw<br />
<br />
Or whatever your user account's home directory is. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of your user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see /home/dw or whatever you set it to. If you don't, then you didn't get the export line in the right place. (Hey, I'm not here to teach basic sysadmin stuff. You should know how to set environment variables.)<br />
<br />
== Get the Dreamwidth code ==<br />
<br />
=== Set up GitHub ===<br />
<br />
First, create an account on Github. Then, you will need to fork these two repositories:<br />
<br />
* https://github.com/dreamwidth/dw-free<br />
* https://github.com/dreamwidth/dw-nonfree<br />
<br />
Go to each of their pages, and click the "Fork" button. This sets up your own copy of Dreamwidth's code which use to make and submit your changes.<br />
<br />
Here's a quick overview of how the repositories will work together:<br />
<br />
* dw-free is the main repository and goes into $LJHOME<br />
* other repositories will go into $LJHOME/ext<br />
* personal config files go into $LJHOME/ext/local<br />
* All code from dw-free ($LJHOME) and the additional repos under $LJHOME/ext are automatically live when you start your server. There's no need to run any additional syncing steps anymore.<br />
<br />
=== Set up dw-free ===<br />
<br />
Replace the USERNAME sections of the URL with your Github username. This will make your repository an authenticated version that can push changes back to Github, as opposed to only being able to pull them.<br />
<br />
# clone a copy of the repository onto your machine<br />
cd ~/<br />
git clone https://USERNAME@github.com/USERNAME/dw-free.git $LJHOME<br />
cd $LJHOME<br />
<br />
# and let's make it aware of the dreamwidth repository so we can grab updates later<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-free<br />
git fetch dreamwidth<br />
# we also want to sync up with the main branches<br />
git branch --set-upstream develop dreamwidth/develop <br />
git branch --set-upstream master dreamwidth/master<br />
<br />
# now set up the folder for external repositories / modules<br />
cd $LJHOME/ext<br />
<br />
=== Set up dw-nonfree ===<br />
<br />
{{ Warn|text=For dev servers (not clone sites) set up dw-nonfree}} <br />
<br />
cd $LJHOME/ext<br />
git clone https://USERNAME@github.com/USERNAME/dw-nonfree.git<br />
cd dw-nonfree<br />
git remote add dreamwidth https://github.com/dreamwidth/dw-nonfree<br />
git fetch dreamwidth<br />
git branch --set-upstream develop dreamwidth/develop <br />
git branch --set-upstream master dreamwidth/master<br />
cd ..<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
quit;<br />
<br />
You might want to pick a more appropriate database username/database name/password.<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
## copy over your config files, and tell them to take priority<br />
## over config files in any of the repos<br />
cd $LJHOME<br />
mkdir -p ext/local/etc<br />
echo "highest" > ext/local/.dir_scope<br />
cp doc/config-private.pl.txt ext/local/etc/config-private.pl<br />
vim ext/local/etc/config-private.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt etc/config-private.pl<br />
chmod go-rwx etc/config-private.pl<br />
vim etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, please see [http://bugs.dwscoalition.org/show_bug.cgi?id=165] first. Then you can edit it:<br />
<br />
vim etc/config.pl<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC or the mailing list.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
The list of things that need doing are in [http://bugs.dwscoalition.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfie Bugzilla]. You can keep your code up to date with the instructions in [[Dev Maintenance]]. Instructions on submitting patches are in [[Dev Patches]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dev_MaintenanceDev Maintenance2012-11-30T21:21:12Z<p>Sophira: /* dwu - Updating the repos */ Adding a newline.</p>
<hr />
<div>{{Note|text="We're in the middle of moving over to a git workflow. If you haven't yet moved over to git, see the [http://wiki.dwscoalition.org/wiki/index.php?title=Dev_Maintenance&oldid=10581 old instructions]. If you're looking to move over, first make sure you've finished [[Moving your Dreamwidth installation to use Github]]"}}<br />
<br />
== Updating the Dreamwidth code on your Dreamhack ==<br />
<br />
=== Shutting down apache ===<br />
<br />
It is best to shut your Apache instance down before doing the update process, to make sure that everything, especially scripts in cgi-bin/ are reloaded properly:<br />
<br />
stop-apache<br />
<br />
=== Updating dw-free ===<br />
<br />
Okay. Let's say you've been running your Dreamwidth install and you want to pull down the latest and greatest in fixes. This is pretty easy. First, if you are not somewhere in dw-free, get into that directory:<br />
<br />
cd $LJHOME<br />
<br />
Then grab updates from the development and master branches of Dreamwidth's repository:<br />
<br />
git fetch dreamwidth<br />
git pull --ff-only dreamwidth develop:develop<br />
git pull --ff-only dreamwidth master:master<br />
<br />
You will also want to push the Dreamwidth repository changes to your fork on Github:<br />
<br />
git push origin develop<br />
git push origin master<br />
<br />
Note: if you are working on uncommitted changes in a branch, any automerge will be canceled. Example:<br />
<br />
mw@memewidth:~/dw/src/jbackup$ git pull dreamwidth develop:develop<br />
remote: Counting objects: 180, done.<br />
remote: Compressing objects: 100% (54/54), done.<br />
remote: Total 116 (delta 90), reused 88 (delta 62)<br />
Receiving objects: 100% (116/116), 36.23 KiB, done.<br />
Resolving deltas: 100% (90/90), completed with 41 local objects.<br />
From https://github.com/dreamwidth/dw-free<br />
53294c1..19b8e73 develop -> develop<br />
error: Your local changes to 'src/jbackup/jbackup.pl' would be overwritten by merge. Aborting.<br />
Please, commit your changes or stash them before you can merge.<br />
<br />
We will get into merging in changes in the following section.<br />
<br />
=== Merge the changes with your branch(es) ===<br />
<br />
{{Warn|text=Pay special attention to stashing unsaved changes! You can lose work if you are not careful about this!}}<br />
<br />
You should be doing your development in branches separate from the main Dreamwidth branches. You can check what branches you currently have in your repository with the command:<br />
<br />
git branch<br />
<br />
The current branch will have an asterisk next to it. Here is an example:<br />
<br />
yourhack@dreamhack.net:~/dw$ git branch<br />
develop<br />
* feature/Mobile<br />
master<br />
<br />
You can check to see if you have unsaved changes on your currently checked out branch with:<br />
<br />
git status<br />
<br />
To temporarily save these changes while you make your updates, use:<br />
<br />
git stash<br />
<br />
You can then merge your independent branch with the changes made with Dreamwidth's development branch:<br />
<br />
git merge develop<br />
<br />
And if you have saved changes using stash, you can recover them with:<br />
<br />
git stash pop<br />
<br />
You can change branches with <tt>git checkout BRANCH</tt>, example:<br />
<br />
git checkout feature/Mobile<br />
<br />
=== For those using DW non-free ===<br />
<br />
Repeat for dw-nonfree:<br />
<br />
cd $LJHOME/ext/dw-nonfree<br />
<br />
git pull dreamwidth develop:develop<br />
git pull dreamwidth master:master<br />
git push origin develop<br />
git push origin master<br />
<br />
If you have any branches on dw-nonfree, they will also need to be merged with the development branch of dw-nonfree as described in the above section:<br />
<br />
git merge develop<br />
<br />
=== Update your database ===<br />
<br />
Now that your code has been updated, update the database:<br />
<br />
# order of commands is important<br />
$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
Remember that different branches might have different text strings you have added, and that you might need to update your database for different branches when you are working on them for those text strings to work. The same applies for any database changes made by different branches you are working on.<br />
<br />
=== Restart the server ===<br />
<br />
Now you can restart Apache:<br />
<br />
start-apache<br />
<br />
Of course, in a production environment, this whole process is not too recommended as you never know what kind of code you're going to get. But for the most part, it's fairly straightforward. (And if you're doing development, this is generally safe.)<br />
<br />
== Additional Information for Non-Dreamhack Users ==<br />
<br />
This section is only for you if you're running your own installation.<br />
<br />
Instead of using start-apache/stop-apache, which are Dreamhack-specific scripts, use these commands:<br />
<br />
sudo /etc/init.d/apache2 start<br />
sudo /etc/init.d/apache2 stop <br />
<br />
You'll also want to update packages on your system at some point. On Ubuntu, this would be done using:<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
Or, if you want an easy command to run on your dw account in one swoop:<br />
<br />
sudo apt-get update && sudo apt-get upgrade<br />
<br />
== Scripting ==<br />
<br />
{{Warn|text="These scripts have not been throughly tested yet with the new system; they might not be updated entirely or right."}}<br />
<br />
You can, of course, use scripts to make it easier for you to do some of this. <br />
<br />
There is an "omnibus" script available at http://dw-dev.dreamwidth.org/94822.html which incorporates all the individual scripts listed here and some other functions, and includes help information.<br />
<br />
Some simpler example scripts are given below.<br />
<br />
=== dwu - Updating the repos ===<br />
<br />
Put this code in a file called '''~/bin/dwu''' and make it executable with '''chmod ugo+x ~/bin/dwu''':<br />
<br />
<source lang="bash">#!/bin/bash<br />
<br />
# make sure we are in the right directory;<br />
cd $LJHOME<br />
<br />
git fetch dreamwidth<br />
<br />
# pull changes from dreamwidth<br />
git checkout develop<br />
git pull --ff-only dreamwidth develop<br />
git checkout master<br />
git pull --ff-only dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
</source><br />
<br />
Now, when you type 'dwu', this script will update dw-free. If you need to update dw-nonfree as well, then use this code:<br />
<br />
<source lang="bash">#!/bin/bash<br />
<br />
# make sure we are in the right directory;<br />
cd $LJHOME<br />
<br />
git fetch dreamwidth<br />
<br />
# pull changes from dreamwidth<br />
git checkout develop<br />
git pull --ff dreamwidth develop<br />
git checkout master<br />
git pull --ff dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
<br />
# change to dw-nonfree<br />
cd $LJHOME/ext/dw-nonfree<br />
<br />
git fetch dreamwidth<br />
<br />
# pull changes from dw-nonfree<br />
git checkout develop<br />
git pull --ff dreamwidth develop<br />
git checkout master<br />
git pull --ff dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
</source><br />
<br />
=== dwdb - Updating the database ===<br />
<br />
Put this code in a file called '''~/bin/dwdb''' and make it executable with '''chmod ugo+x ~/bin/dwdb''':<br />
<br />
<source lang="bash">#!/bin/bash<br />
$LJHOME/bin/upgrading/update-db.pl -r -p --innodb && \<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb && \<br />
$LJHOME/bin/upgrading/texttool.pl load</source><br />
<br />
This will update the database when you type 'dwdb'.<br />
<br />
==Cleaning up your directories==<br />
<br />
If you do any amount of work, you'll find that your directories get cluttered with .orig and .rej files everywhere. This script will clean those up:<br />
<br />
<source lang="bash">git clean -f "*.rej" "*.orig"</source><br />
<br />
You can run it from the command line, or put it in a file called ~/bin/tidy and make it executable with "chmod +x ~/bin/tidy". If you do that, you'll be able to just type "tidy" to clean house.<br />
<br />
[[Category: Development]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dev_MaintenanceDev Maintenance2012-11-30T21:20:51Z<p>Sophira: /* dwu - Updating the repos */ You don't actually need to save the old directories in scripts; they're executed in a new process anyway.</p>
<hr />
<div>{{Note|text="We're in the middle of moving over to a git workflow. If you haven't yet moved over to git, see the [http://wiki.dwscoalition.org/wiki/index.php?title=Dev_Maintenance&oldid=10581 old instructions]. If you're looking to move over, first make sure you've finished [[Moving your Dreamwidth installation to use Github]]"}}<br />
<br />
== Updating the Dreamwidth code on your Dreamhack ==<br />
<br />
=== Shutting down apache ===<br />
<br />
It is best to shut your Apache instance down before doing the update process, to make sure that everything, especially scripts in cgi-bin/ are reloaded properly:<br />
<br />
stop-apache<br />
<br />
=== Updating dw-free ===<br />
<br />
Okay. Let's say you've been running your Dreamwidth install and you want to pull down the latest and greatest in fixes. This is pretty easy. First, if you are not somewhere in dw-free, get into that directory:<br />
<br />
cd $LJHOME<br />
<br />
Then grab updates from the development and master branches of Dreamwidth's repository:<br />
<br />
git fetch dreamwidth<br />
git pull --ff-only dreamwidth develop:develop<br />
git pull --ff-only dreamwidth master:master<br />
<br />
You will also want to push the Dreamwidth repository changes to your fork on Github:<br />
<br />
git push origin develop<br />
git push origin master<br />
<br />
Note: if you are working on uncommitted changes in a branch, any automerge will be canceled. Example:<br />
<br />
mw@memewidth:~/dw/src/jbackup$ git pull dreamwidth develop:develop<br />
remote: Counting objects: 180, done.<br />
remote: Compressing objects: 100% (54/54), done.<br />
remote: Total 116 (delta 90), reused 88 (delta 62)<br />
Receiving objects: 100% (116/116), 36.23 KiB, done.<br />
Resolving deltas: 100% (90/90), completed with 41 local objects.<br />
From https://github.com/dreamwidth/dw-free<br />
53294c1..19b8e73 develop -> develop<br />
error: Your local changes to 'src/jbackup/jbackup.pl' would be overwritten by merge. Aborting.<br />
Please, commit your changes or stash them before you can merge.<br />
<br />
We will get into merging in changes in the following section.<br />
<br />
=== Merge the changes with your branch(es) ===<br />
<br />
{{Warn|text=Pay special attention to stashing unsaved changes! You can lose work if you are not careful about this!}}<br />
<br />
You should be doing your development in branches separate from the main Dreamwidth branches. You can check what branches you currently have in your repository with the command:<br />
<br />
git branch<br />
<br />
The current branch will have an asterisk next to it. Here is an example:<br />
<br />
yourhack@dreamhack.net:~/dw$ git branch<br />
develop<br />
* feature/Mobile<br />
master<br />
<br />
You can check to see if you have unsaved changes on your currently checked out branch with:<br />
<br />
git status<br />
<br />
To temporarily save these changes while you make your updates, use:<br />
<br />
git stash<br />
<br />
You can then merge your independent branch with the changes made with Dreamwidth's development branch:<br />
<br />
git merge develop<br />
<br />
And if you have saved changes using stash, you can recover them with:<br />
<br />
git stash pop<br />
<br />
You can change branches with <tt>git checkout BRANCH</tt>, example:<br />
<br />
git checkout feature/Mobile<br />
<br />
=== For those using DW non-free ===<br />
<br />
Repeat for dw-nonfree:<br />
<br />
cd $LJHOME/ext/dw-nonfree<br />
<br />
git pull dreamwidth develop:develop<br />
git pull dreamwidth master:master<br />
git push origin develop<br />
git push origin master<br />
<br />
If you have any branches on dw-nonfree, they will also need to be merged with the development branch of dw-nonfree as described in the above section:<br />
<br />
git merge develop<br />
<br />
=== Update your database ===<br />
<br />
Now that your code has been updated, update the database:<br />
<br />
# order of commands is important<br />
$LJHOME/bin/upgrading/update-db.pl -r -p --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
Remember that different branches might have different text strings you have added, and that you might need to update your database for different branches when you are working on them for those text strings to work. The same applies for any database changes made by different branches you are working on.<br />
<br />
=== Restart the server ===<br />
<br />
Now you can restart Apache:<br />
<br />
start-apache<br />
<br />
Of course, in a production environment, this whole process is not too recommended as you never know what kind of code you're going to get. But for the most part, it's fairly straightforward. (And if you're doing development, this is generally safe.)<br />
<br />
== Additional Information for Non-Dreamhack Users ==<br />
<br />
This section is only for you if you're running your own installation.<br />
<br />
Instead of using start-apache/stop-apache, which are Dreamhack-specific scripts, use these commands:<br />
<br />
sudo /etc/init.d/apache2 start<br />
sudo /etc/init.d/apache2 stop <br />
<br />
You'll also want to update packages on your system at some point. On Ubuntu, this would be done using:<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
Or, if you want an easy command to run on your dw account in one swoop:<br />
<br />
sudo apt-get update && sudo apt-get upgrade<br />
<br />
== Scripting ==<br />
<br />
{{Warn|text="These scripts have not been throughly tested yet with the new system; they might not be updated entirely or right."}}<br />
<br />
You can, of course, use scripts to make it easier for you to do some of this. <br />
<br />
There is an "omnibus" script available at http://dw-dev.dreamwidth.org/94822.html which incorporates all the individual scripts listed here and some other functions, and includes help information.<br />
<br />
Some simpler example scripts are given below.<br />
<br />
=== dwu - Updating the repos ===<br />
<br />
Put this code in a file called '''~/bin/dwu''' and make it executable with '''chmod ugo+x ~/bin/dwu''':<br />
<br />
<source lang="bash">#!/bin/bash<br />
<br />
# make sure we are in the right directory;<br />
cd $LJHOME<br />
git fetch dreamwidth<br />
<br />
# pull changes from dreamwidth<br />
git checkout develop<br />
git pull --ff-only dreamwidth develop<br />
git checkout master<br />
git pull --ff-only dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
</source><br />
<br />
Now, when you type 'dwu', this script will update dw-free. If you need to update dw-nonfree as well, then use this code:<br />
<br />
<source lang="bash">#!/bin/bash<br />
<br />
# make sure we are in the right directory;<br />
cd $LJHOME<br />
<br />
git fetch dreamwidth<br />
<br />
# pull changes from dreamwidth<br />
git checkout develop<br />
git pull --ff dreamwidth develop<br />
git checkout master<br />
git pull --ff dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
<br />
# change to dw-nonfree<br />
cd $LJHOME/ext/dw-nonfree<br />
<br />
git fetch dreamwidth<br />
<br />
# pull changes from dw-nonfree<br />
git checkout develop<br />
git pull --ff dreamwidth develop<br />
git checkout master<br />
git pull --ff dreamwidth master<br />
<br />
# push them to Github forks<br />
git push origin develop<br />
git push origin master<br />
</source><br />
<br />
=== dwdb - Updating the database ===<br />
<br />
Put this code in a file called '''~/bin/dwdb''' and make it executable with '''chmod ugo+x ~/bin/dwdb''':<br />
<br />
<source lang="bash">#!/bin/bash<br />
$LJHOME/bin/upgrading/update-db.pl -r -p --innodb && \<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb && \<br />
$LJHOME/bin/upgrading/texttool.pl load</source><br />
<br />
This will update the database when you type 'dwdb'.<br />
<br />
==Cleaning up your directories==<br />
<br />
If you do any amount of work, you'll find that your directories get cluttered with .orig and .rej files everywhere. This script will clean those up:<br />
<br />
<source lang="bash">git clean -f "*.rej" "*.orig"</source><br />
<br />
You can run it from the command line, or put it in a file called ~/bin/tidy and make it executable with "chmod +x ~/bin/tidy". If you do that, you'll be able to just type "tidy" to clean house.<br />
<br />
[[Category: Development]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2012-09-01T15:51:52Z<p>Sophira: /* Reminderbot */ Updating Time::ParseDate URL to the version in use by Fig.</p>
<hr />
<div>IRC stands for [http://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [http://wiki.dwscoalition.org/notes/Category:Development development information], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code><br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code> <br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (irc.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@xb95 and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing the game<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>fu</dwstaff> (Afuna), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (xb95) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* The definition of "Not Safe For Work" varies from person to person, but if you think any given link is NSFW, it is worth advising at the time you link. <br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* When using short-URL services (tinyurl, bit.ly, and the like) that obscure the original URL being linked to, it's appreciated to describe what you're linking to, particularly if it's to something of questionable appropriateness or a known timesink such as TVTropes. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest.<br />
* a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
* It is not appropriate to tell anybody else to "RTFM" (Read the Fucking Manual) and similar forms of condescending advice (included but not limited to lmgtfy.com and its ilk). In general, asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is appropriate. Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, welcoming place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [http://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or other [http://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour is encouraged to announce a channel [[stretch break]].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and skrshawk. SpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
SpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> makes SpamBot list the current contents of the queue.<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-bitch ===<br />
Open access but officially unofficial. <br />
<br />
This channel combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Run by the Triumvirate of Domtheknight (Dom), Chemicallace (Chemla), and MissKat (Kat)<br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and xb95. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy is a bot that notifies the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-bitch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dwscoalition.org/notes/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with the command below.<br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
qdb<br />
jargon<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally ''' will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-bitch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <time> <thing>'''<br />
* '''Remind me at <time> <zone> <thing>'''<br />
<br />
Example: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-modules-2011.0517/lib/Time/ParseDate.pm - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth, #dreamwidth-bitch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-bitch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
=== Delegate IRC Commands ===<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2012-08-23T23:03:26Z<p>Sophira: I've removed the botsmack command. I'm not comfortable with what it represents.</p>
<hr />
<div>IRC stands for [http://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [http://wiki.dwscoalition.org/notes/Category:Development development information], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code><br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code> <br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (irc.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@xb95 and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing the game<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>fu</dwstaff> (Afuna), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (xb95) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* The definition of "Not Safe For Work" varies from person to person, but if you think any given link is NSFW, it is worth advising at the time you link. <br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* When using short-URL services (tinyurl, bit.ly, and the like) that obscure the original URL being linked to, it's appreciated to describe what you're linking to, particularly if it's to something of questionable appropriateness or a known timesink such as TVTropes. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest.<br />
* a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
* It is not appropriate to tell anybody else to "RTFM" (Read the Fucking Manual) and similar forms of condescending advice (included but not limited to lmgtfy.com and its ilk). In general, asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is appropriate. Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, welcoming place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [http://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or other [http://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour is encouraged to announce a channel [[stretch break]].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and skrshawk. SpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
SpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> makes SpamBot list the current contents of the queue.<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-bitch ===<br />
Open access but officially unofficial. <br />
<br />
This channel combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Run by the Triumvirate of Domtheknight (Dom), Chemicallace (Chemla), and MissKat (Kat)<br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and xb95. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy is a bot that notifies the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-bitch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dwscoalition.org/notes/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with the command below.<br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
qdb<br />
jargon<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally ''' will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-bitch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <time> <thing>'''<br />
* '''Remind me at <time> <zone> <thing>'''<br />
<br />
Example: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-modules-2006.0814/lib/Time/ParseDate.pm - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth, #dreamwidth-bitch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-bitch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
=== Delegate IRC Commands ===<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/Dreamwidth_Scratch_InstallationDreamwidth Scratch Installation2012-07-21T17:49:14Z<p>Sophira: /* Otherwise */ Add libfile-type-perl.</p>
<hr />
<div>Firstly, you'll need to set up a Linux system; these instructions assume Ubuntu 9.04 or up. Please let us know if you run into difficulties--we want to update this if people are having problems! We recommend coming into the #dreamwidth-dev channel on [[IRC]].<br />
<br />
After you set up, you can keep updated with the instructions on [[Dev Maintenance]].<br />
<br />
If you have difficulties or problems or suggestions for installation procedures, please report them to [http://bugs.dwscoalition.org/show_bug.cgi?id=61 Bug 61]. Also look at [[Production Setup: Webserver]]. <br />
<br />
== Bringing the system up to date ==<br />
<br />
Before you start installing anything else, you might want to make sure your system is up to date. You should log in as root and update the packages on your system:<br />
<br />
apt-get update<br />
apt-get upgrade<br />
<br />
If you want man pages on your system: <br />
<br />
apt-get install man<br />
<br />
== Installing necessary packages ==<br />
<br />
This will install necessary packages you'll need to run Dreamwidth (and some optional ones). You'll want to be root when running these commands.<br />
<br />
=== If you are using lucid (or a similar/newer version of Ubuntu) ===<br />
<br />
If you are using lucid, you can add [https://launchpad.net/~anall/+archive/dw exor674's ppa] and then install all the needed DW packages by doing<br />
<br />
add-apt-repository ppa:anall/dw<br />
apt-get update<br />
apt-get install mercurial subversion apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim dreamwidth-packages gcc<br />
<br />
And that should pull in all required packages ( if it misses some Perl packages, feel free to poke <dwuser>exor674</dwuser><br />
<br />
Please note that these packages are unofficial, and you should only install them if you trust Dre, there is no guarantee that there will be no security issues in any of the packages in the ppa, if this concerns you, do not follow these instructions and instead follow the instructions below.<br />
<br />
=== Otherwise ===<br />
<br />
apt-get install mercurial git-core subversion apache2-mpm-prefork \<br />
libapache2-mod-perl2 libapache2-mod-apreq2 libapache2-request-perl \<br />
mysql-server wget unzip links vim libclass-autouse-perl \<br />
libcompress-zlib-perl libdatetime-perl libdigest-sha1-perl \<br />
libgd-gd2-perl libhtml-template-perl libwww-perl libmime-lite-perl \<br />
libnet-dns-perl liburi-perl libxml-simple-perl libclass-accessor-perl \<br />
libclass-data-inheritable-perl libclass-trigger-perl libcrypt-dh-perl \<br />
libmath-bigint-gmp-perl liburi-fetch-perl libgd-graph-perl \<br />
libgnupg-interface-perl libmail-gnupg-perl perlmagick \<br />
libproc-processtable-perl libsoap-lite-perl librpc-xml-perl \<br />
libstring-crc32-perl libtext-vcard-perl libxml-atom-perl libxml-rss-perl \<br />
libimage-size-perl libunicode-maputf8-perl libgtop2-dev build-essential \<br />
libnet-openid-consumer-perl libnet-openid-server-perl libyaml-perl \<br />
libcaptcha-recaptcha-perl libdbd-sqlite3-perl libtest-simple-perl \<br />
libtest-simpleunit-perl libtemplate-perl libterm-readkey-perl \<br />
libextutils-cbuilder-perl gcc libtest-most-perl \<br />
libbusiness-creditcard-perl liblwpx-paranoidagent-perl \<br />
libtheschwartz-perl libfile-type-perl<br />
<br />
This will download about 123MB of files and use around 446MB of disk space.<br />
<br />
Check whether these packages have actually installed. Later on in the process, if you find you are having inexplicable problems, try installing these again.<br />
<br />
If you have trouble with libdigest-sha1-perl not being available on Ubuntu 12.04, install dh-make-perl and do dh-make-perl --cpan digest-sha1 instead.<br />
<br />
If you can't get libcompress-zlib-perl, then libio-compress-perl is an acceptable substitute.<br />
<br />
=== Then ===<br />
<br />
[http://perl.apache.org/docs/2.0/user/install/install.html#Prerequisites Check] whether your system is using threaded MPMs or pre-fork. You will need the latter.<br />
<br />
If you have weird errors saying things like "Package mercurial is not available, but is referred to by another package.", try editing <tt>/etc/apt/sources.list</tt> and uncommenting the other repositories and then doing an <tt>apt-get</tt> update. Ran into this problem on a fresh install of <tt>jaunty</tt> on Linode.<br />
<br />
You will also want to install some perl libraries with CPAN. Defaults during CPAN's setup should be okay.<br />
<br />
Before installing, check if your CPAN shell has 'make' at the correct location. Run <tt>which make</tt>, then compare the results with running <tt>o conf make</tt> at the CPAN shell (to run the CPAN shell, type <tt>cpan</tt>.)<br />
<br />
The perl libraries are:<br />
<br />
cpan Bundle::CPAN<br />
cpan GTop # this will guide you through setting up CPAN<br />
cpan Unicode::CheckUTF8<br />
cpan Captcha::reCAPTCHA<br />
cpan Hash::MultiValue<br />
cpan MogileFS::Client # this is necessary even if you don't use MogileFS<br />
cpan TheSchwartz::Worker::SendEmail<br />
<br />
See [http://wiki.dwscoalition.org/notes/Bundle::CPAN Bundle::CPAN] if you are having trouble installing Bundle::CPAN<br />
<br />
You will also want to install and configure Postfix so your DW can send out email:<br />
<br />
apt-get install postfix<br />
<br />
If you choose not to configure on the install, you can do so later with:<br />
<br />
dpkg-reconfigure postfix<br />
<br />
== Setting up the DW user account ==<br />
<br />
{{Note|text=If you still find yourself unable to make sudo commands even after <code>usermod</code>, please see [[Making your DW user a sudo account]] for alternatives.}} Create a user account that will be used for the code. This can be your own personal account if you wish, but it is recommended that you setup a new user that is only going to be used for running the code. That way if you have any insecure code running (i.e., a bad page, or a patch you're working on doesn't have security implemented yet) you don't have to worry about someone getting access to your personal files.<br />
<br />
To set up the user account:<br />
<br />
adduser <i>username</i><br />
<br />
Fill out the user's info and put them in the sudo group:<br />
<br />
usermod -a -G sudo <i>username</i><br />
<br />
So, to use <code>dw</code> as a username:<br />
<br />
adduser dw<br />
usermod -a -G sudo dw<br />
<br />
Now, we will get the $LJHOME variable set. Log into your user:<br />
<br />
su - dw<br />
<br />
We will assume that you use the bash shell. If you do not, then this section does not apply. You will have to find the shell specific way of setting environment variables.<br />
<br />
For bash, you should look in the home directory of the user account you just created for a file .profile. You will want to add one more line to this file:<br />
<br />
export LJHOME=/home/dw<br />
<br />
Or whatever your user account's home directory is. Yes, the variable is named LJHOME. We'll live with it for now. ;-)<br />
<br />
Test this. Log out of your user account and log back in, then type:<br />
<br />
echo $LJHOME<br />
<br />
You should see /home/dw or whatever you set it to. If you don't, then you didn't get the export line in the right place. (Hey, I'm not here to teach basic sysadmin stuff. You should know how to set environment variables.)<br />
<br />
== Downloading the Dreamwidth code ==<br />
<br />
You should do this as the user you want to run Dreamwidth as. If you are root, you can switch with:<br />
<br />
su - dw<br />
<br />
We have put together a bootstrap script that will download all of the code. You can obtain this file with your favorite tool (wget, curl, etc):<br />
<br />
wget http://hg.dwscoalition.org/dw-free/raw-file/tip/bin/bootstrap.pl<br />
<br />
The next step is fairly automatic. Assuming that your $LJHOME environment variable is good to go, you should be able to just do this:<br />
<br />
perl bootstrap.pl<br />
<br />
The script will start doing some work. It should start out by saying 'seems we need to start at the beginning', which is what you expect. This may take some time while it checks out various packages and repositories from various locations.<br />
<br />
When it's done, it will say so. It will also say to delete the bootstrap script: <br />
<br />
rm bootstrap.pl<br />
<br />
Do a quick ls in $LJHOME to see if you have a bunch of new directories like cvs, cgi-bin, htdocs, etc. If you do, huzzah! You now have the code checked out.<br />
<br />
If you don't, figure out what step didn't work, and try again. All else fails, hit the mailing list or find someone on IRC.<br />
<br />
=== dw-nonfree ===<br />
<br />
{{Warn|text=This should not be used on installations that are not Dreamwidth development installations.}} <br />
<br />
If you are doing development on Dreamwidth custom files (what few there are), then you will need to do another step. This is fairly manual, the bootstrap script does not handle this process for you. But assuming that you did the above steps, you can get dw-nonfree code like this:<br />
<br />
cd $LJHOME/cvs<br />
hg clone http://hg.dwscoalition.org/dw-nonfree dw-nonfree<br />
cp dw-nonfree/cvs/multicvs-local.conf .<br />
<br />
You may want to look at [[Keeping your site configs from wiping during updates]] if you want to keep your config files from getting wiped during subsequent updates if you're using <tt>dw-nonfree</tt>.<br />
<br />
=== Updating to the tip ===<br />
<br />
Because all named branches have been closed as of July 19th 2010, you should have the most up-to-date code already checked out, although you may need to do <code>hg update -C tip</code> to get the most recent changes.<br />
<br />
Some repositories have changed locations and must be manually removed if they already exist in the cvs directory.<br />
<br />
cd $LJHOME/cvs/dw-free<br />
hg update -C tip<br />
cd $LJHOME<br />
bin/cvsreport.pl -sync -cvsonly<br />
rm -rf cvs/perlbal/<br />
rm -rf cvs/js/<br />
bin/cvsreport.pl --checkout<br />
bin/cvsreport.pl -sync -cvsonly<br />
<br />
<br />
You need to do the last line twice, since the multicvs.conf file has changed since then. Any future updates should now work as described on the [[Dev Maintenance]] page. You will also want to delete files that no longer exist in the repository:<br />
<br />
{{Snippets/Deleting removed files}}<br />
<br />
== Database setup ==<br />
<br />
You should have a local MySQL installation and know the root login to the database. To sign into MySQL as root:<br />
<br />
mysql -u root -p <br />
<br />
These MySQL commands wil create your development database:<br />
<br />
create database dw;<br />
grant all on dw.* to 'dw'@'localhost' identified by 'somePassword';<br />
quit;<br />
<br />
You might want to pick a more appropriate database username/database name/password.<br />
<br />
== Editing the config files ==<br />
<br />
Next you need to configure the site configuration scripts. This is probably the most tricky part of the whole process, since there are so many things you can tweak. However, you can get by with just tweaking etc/config-local.pl and etc/config-private.pl for now:<br />
<br />
cd $LJHOME<br />
cp doc/config-local.pl.txt etc/config-local.pl<br />
vim etc/config-local.pl<br />
<br />
Or use your editor of choice, of course. Do a search for the phrase 'CHANGE THIS' which occurs once, before the block of human readable text you should use to describe your development installation.<br />
<br />
Note that the <var>$IS_DEV_SERVER</var> flag is set to 1 in the template given. Be sure to set this to 0 for a production site, as there are big security issues involved with leaving the flag set to 1. <br />
<br />
Next, you need to change your local variables in the <tt>config-private.pl</tt> file. This is where your passwords are configured, as well as many of the variables which define your domain. Do a search for the phrase 'CHANGETHIS'(note the slightly different spacing). You will want to change at least your <var>$DOMAIN</var> and the <var>%DBINFO</var> structure.<br />
<br />
cd $LJHOME<br />
cp doc/config-private.pl.txt etc/config-private.pl<br />
chmod go-rwx etc/config-private.pl<br />
vim etc/config-private.pl<br />
<br />
In this file, uncomment the lines in the <var>%DBINFO</var> blocks (if they are commented out), and place your database password in quotes on the "pass => ," line, before the comma. For example:<br />
<br />
%DBINFO = (<br />
master => {<br />
pass => 'mypassword',<br />
},<br />
);<br />
<br />
Note that there are two DBINFO blocks; get them both.<br />
<br />
The base configuration file is under source control, and is already in <tt>etc/config.pl</tt>. You should not need to change anything very much in this, but you might have to change some stuff. If you find you do have to touch this, please see [http://bugs.dwscoalition.org/show_bug.cgi?id=165] first. Then you can edit it:<br />
<br />
vim etc/config.pl<br />
<br />
== Make sure things are working with checkconfig.pl ==<br />
<br />
Now, you need to see if everything is working. <br />
<br />
If you've setup the files as indicated above, run this command:<br />
<br />
cd $LJHOME<br />
bin/checkconfig.pl --no=ljconfig<br />
<br />
If you installed everything given at the top of this page, you should find you have no missing modules. Congratulations! If you don't have all the modules, this is where you need some systems specific knowledge for your system. You will need to install whatever modules are missing. If you get well and truly stuck, find someone on IRC or the mailing list.<br />
<br />
== Populate database with initial data ==<br />
<br />
There are a few commands you can now run to install the database. Just run these and watch for errors.<br />
<br />
<b>Note:</b> If make_system.pl says it can't give the system user admin [[privileges]], something has gone wrong with your database population, even if there were no errors.<br />
<br />
$LJHOME/bin/upgrading/update-db.pl -r --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb<br />
$LJHOME/bin/upgrading/update-db.pl -p<br />
<br />
(That step will ask you for a password for the [[System account]]. You can change it later by logging in as system, so just give it something for now.)<br />
<br />
$LJHOME/bin/upgrading/make_system.pl<br />
$LJHOME/bin/upgrading/texttool.pl load<br />
<br />
== Configure Apache ==<br />
<br />
This step will need to be done as the root user. Below is the Apache 2 configuration running on the Dreamwidth staging site. Put this in a file named "stage" in /etc/apache2/conf.d:<br />
<br />
User dw<br />
Group dw<br />
UseCanonicalName off<br />
<br />
StartServers 1<br />
MaxSpareServers 2<br />
MinSpareServers 1<br />
<br />
DocumentRoot /home/dw/htdocs<br />
<br />
PerlSetEnv LJHOME /home/dw<br />
PerlPassEnv LJHOME<br />
<br />
PerlRequire /home/dw/cgi-bin/modperl.pl<br />
<br />
Then disable the default site:<br />
<br />
a2dissite default<br />
<br />
You might also have to enable the Perl Apache Request module:<br />
<br />
a2enmod apreq<br />
<br />
If you don't want this warning:<br />
<br />
[Thu Jan 15 01:46:54 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
... waiting [Thu Jan 15 01:46:55 2009] [warn] NameVirtualHost *:80 has no VirtualHosts<br />
...done.<br />
<br />
Then use <code>vim /etc/apache2/ports.conf</code> and put a # in front of the NameVirtualHost line:<br />
<br />
# NameVirtualHost *:80<br />
<br />
Restart the server:<br />
<br />
/etc/init.d/apache2 restart<br />
<br />
== Now what? ==<br />
<br />
=== Have a look at your new DW instance ===<br />
<br />
Congratulations! You now have a working (though minimal) Dreamwidth install. If you point your web browser at your server, you should see a bare-looking welcome page.<br />
<br />
=== Further setup ===<br />
<br />
There are lots of other articles on setting up and customizing your DW install in the [[:Category: Dreamwidth Installation|DW Installation]] category, including:<br />
<br />
* [[TheSchwartz Setup]] - TheSchwartz is needed for a handful of features - notably comment posting<br />
* [[Subdomain setup]]<br />
* [[Statistics setup]]<br />
* [[Generating documentation]]<br />
* [[Allow users to register]]<br />
<br />
There is a list of wanted how-tos at [[Installation Wanted How-To]], in case you need to add something to the list.<br />
<br />
=== Starting development ===<br />
<br />
The list of things that need doing are in [http://bugs.dwscoalition.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfie Bugzilla]. You can keep your code up to date with the instructions in [[Dev Maintenance]]. Instructions on submitting patches are in [[Dev Patches]].<br />
<br />
[[Category: Dreamwidth Installation]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2012-07-03T01:19:16Z<p>Sophira: /* Rules */ Oops, typo.</p>
<hr />
<div>IRC stands for [http://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [http://wiki.dwscoalition.org/notes/Category:Development development information], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code><br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code> <br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (irc.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@xb95 and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing the game<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>fu</dwstaff> (Afuna), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (xb95) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* The definition of "Not Safe For Work" varies from person to person, but if you think any given link is NSFW, it is worth advising at the time you link. <br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* When using short-URL services (tinyurl, bit.ly, and the like) that obscure the original URL being linked to, it's appreciated to describe what you're linking to, particularly if it's to something of questionable appropriateness or a known timesink such as TVTropes. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest.<br />
* a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
* It is not appropriate to tell anybody else to "RTFM" (Read the Fucking Manual) and similar forms of condescending advice (included but not limited to lmgtfy.com and its ilk). In general, asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is appropriate. Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, welcoming place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [http://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or other [http://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour is encouraged to announce a channel [[stretch break]].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and skrshawk. SpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
SpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> makes SpamBot list the current contents of the queue.<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-bitch ===<br />
Open access but officially unofficial. <br />
<br />
This channel combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Run by the Triumvirate of Domtheknight (Dom), Chemicallace (Chemla), and MissKat (Kat)<br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and xb95. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy is a bot that notifies the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-bitch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dwscoalition.org/notes/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with the command below.<br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
qdb<br />
jargon<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally ''' will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-bitch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <time> <thing>'''<br />
* '''Remind me at <time> <zone> <thing>'''<br />
<br />
Example: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-modules-2006.0814/lib/Time/ParseDate.pm - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth, #dreamwidth-bitch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-bitch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
=== Delegate IRC Commands ===<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: IRC]]</div>Sophira//wiki.dreamwidth.net/wiki/index.php/IRCIRC2012-07-02T20:52:35Z<p>Sophira: /* Rules */ Clarifying that "RTFM" is not acceptable by putting that at the front of the sentence.</p>
<hr />
<div>IRC stands for [http://en.wikipedia.org/wiki/Internet_Relay_Chat Internet Relay Chat], and is one of the oldest methods for group chat on the internet. Dreamwidth owners, contractors, developers/volunteers, users, and other interested parties occupy a number of IRC channels on the Freenode IRC network. <br />
<br />
If you are a Dreamwidth user new to IRC, this page and the [[IRC help]] page have information on getting connected and set up. For one-on-one help, try asking in <dwcomm>dw_volunteers</dwcomm>. IRC is not required for volunteering, but can be very helpful and is where a great deal of social interaction takes place. <br />
<br />
If you are a Freenode/FLOSS user new to Dreamwidth, welcome! You can find out more about the project on this wiki, in the [http://wiki.dwscoalition.org/notes/Category:Development development information], [http://www.dreamwidth.org on the website itself] ([http://www.dreamwidth.org/legal/diversity Diversity Statement], [http://www.dreamwidth.org/legal/principles Guiding Principles]), and [http://www.dreamwidth.org/support/faq in the site FAQs]. <br />
<br />
==Quick Reference== <br />
* The server is: <code>chat.freenode.net</code>; [http://freenode.net/irc_servers.shtml more info on Freenode servers]<br />
* The main channel is: <code>[irc://chat.freenode.net/dreamwidth #dreamwidth]</code><br />
* The developer mentoring channel is: <code>[irc://chat.freenode.net/dreamwidth-dev #dreamwidth-dev]</code> (merged into the main developer channel)<br />
* If you need more information on how this all works, see [[IRC help]].<br />
* The [http://qdb.dreamwidth.net/ IRC quote database].<br />
* [[:Category: IRC Icons | IRC Icons]]<br />
* No idea what people in IRC are saying? [[Common Jargon]]!<br />
<br />
If you don't want to install an IRC client, Freenode does offer webchat:<br />
<br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth #dreamwidth]</code> <br />
* <code>[http://webchat.freenode.net/?channels=#dreamwidth-dev #dreamwidth-dev]</code> <br />
<br />
== Connecting to IRC ==<br />
<br />
If you're new to IRC, check out [[IRC help]] for more details. <br />
<br />
Put the server (irc.freenode.net) and the channel (#dreamwidth) into your favorite IRC client. Pick a nickname to be known by in channel. This doesn't have to be the same as your Dreamwidth username, but it does have to be a nickname that no one else on Freenode is using. <br />
<br />
=== Registering your nickname ===<br />
<br />
It's generally best if you register your nickname once you've settled on one that is available and you like. Some IRC features require this. (If your preferred nickname has already been registered, [[IRC_help#Freenode-specific_stuff|you can sometimes get staff to assist you in registering it]].)<br />
<br />
In order to register your nickname on the IRC channel, use this command:<br />
<br />
/msg nickserv register [PASSWORD] [EMAIL]<br />
<br />
You will receive an email shortly with instructions. (Do not include the square brackets in the command.)<br />
<br />
You can then identify yourself to the IRC server with this command:<br />
<br />
/msg nickserv identify [PASSWORD]<br />
<br />
(Do not actually use the brackets, just put in your password or email.)<br />
<br />
=== Using your nickname ===<br />
<br />
If for some reason you can't identify to the server in time, or otherwise need to change your nickname, these commands will work:<br />
<br />
/msg nickserv identify USERNAME PASSWORD<br />
/msg nickserv release USERNAME<br />
/nick USERNAME<br />
<br />
== Culture ==<br />
<br />
The owners (<dwstaff>mark</dwstaff>/@xb95 and <dwstaff>denise</dwstaff>/@rahaeli) are the final arbiters of any IRC policy, issue, or debate. <br />
<br />
=== Hazards ===<br />
<br />
Hazards of hanging out in #dreamwidth include: <br />
<br />
* becoming hungry from all the talk of delicious food<br />
* starting to volunteer<br />
* putting more time in developing, providing answers in support, doing a code tour, etc.<br />
* becoming a project lead<br />
* buying more yarn or other fiber arts supplies<br />
* getting sucked into TVTropes, Wikipedia, and similar timesinks <br />
* getting earwormed (see also <dwcomm>earwormhole</dwcomm>) <br />
* pun wars<br />
* conversations that started out perfectly rational and innocent degenerating (sometimes rapidly)<br />
* losing the game<br />
<br />
=== Rules ===<br />
<br />
Official Rules coming eventually. In general:<br />
<br />
* For the owners' peace of mind, no politics or religion (mentioning religion is fine; debating religious beliefs is not) in #dreamwidth. <br />
* Don't be a jerk. <br />
* Mind what the channel operators say. (Anyone with an '@dreamwidth/delegate/' hostmask has the potential to become an op, whether or not they are wearing their ops power at the time; there are a few others.) <br />
* Please do not automatically post full channel logs publicly. There is a [http://qdb.dreamwidth.net/ quotes database] (log in using LJ or DW username), and use discretion if selecting sections to post elsewhere. <br />
* Some general guidelines are included below, although this is not intended to be a complete list, and ops will use their best judgment regarding specific situations. <br />
* <dwstaff>fu</dwstaff> (Afuna), <dwstaff>denise</dwstaff> (rahaeli), and <dwstaff>mark</dwstaff> (xb95) have the final say.<br />
<br />
<br />
Consider the [http://www.dreamwidth.org/legal/diversity Diversity Statement] and the [http://www.dreamwidth.org/legal/principles Guiding Principles] and try to embody them. <dwuser>denise</dwuser> in <dwcomm>dw_volunteers</dwcomm>: [http://dw-volunteers.dreamwidth.org/14888.html a few words about IRC]<br />
<br />
Specific things that come up from time to time: <br />
<br />
* Some things are generally best in side channels: <br />
** Anything explicitly banned in #dreamwidth (politics, religion)<br />
** Extended off-topic chatter (particularly when it's just two participants), although 'topic' is sometimes hazy <br />
** Blatantly sexual content <br />
** Things that seem to be bothering other people<br />
** Any topic that an op has asked to be moved<br />
* #dreamwidth is not intended to be a Safe For Work zone, but it also should avoid the extended sort of "locker room" discussion that can be so off-putting as a first exposure to a FLOSS project. It's a delicate balance and ops appreciate all efforts to keep it from tipping too far. <br />
* The definition of "Not Safe For Work" varies from person to person, but if you think any given link is NSFW, it is worth advising at the time you link. <br />
* [http://fanlore.org/wiki/Spoiler Spoilers], particularly for currently-airing or recently released media, should be avoided in main channel, particularly given differing release dates in different countries. <br />
* When using short-URL services (tinyurl, bit.ly, and the like) that obscure the original URL being linked to, it's appreciated to describe what you're linking to, particularly if it's to something of questionable appropriateness or a known timesink such as TVTropes. <br />
* Misogyny, ableism, racism, nationalist insults, and the like are not appreciated, even in jest.<br />
* a clarification on religion: [21:02] <rahaeli> (also, I feel i should mention: religion is one of the Banned Topics in #dreamwidth, but the ban is on debating religious beliefs, not discussing religious-texts-as-literature or talking about theology from an academic standpoint; still, if anyone is uncomfortable about the topic PM me and I will ring the gong on the topic)<br />
* It is not appropriate to tell some else to "RTFM" (Read the Fucking Manual) and similar forms of condescending advice (included but not limited to lmgtfy.com and its ilk). In general, asking about someone's understanding of the topic and the resources they've tried, to better understand their starting point, is appropriate. Assuming that they have not already put in some basic research, because they are asking a question that seems obvious to you, is not appropriate. No one is under any obligation to assist in answering questions they do not feel like answering for any reason, but channel culture encourages a spirit of curiosity and shared knowledge. <br />
* Respect people's boundaries. Especially respect explicitly stated boundaries, but be on the lookout for less direct communication. Individual differences in communication style, sensitivity to the emotions of others, and other factors always have the potential for miscommunication and general badness; while this cannot always be removed, it can be reduced. <br />
** If you are uncomfortable with the way another party is interacting with you, you are encouraged to speak up, either directly or to a member of the moderation team. Please bear in mind that some people are less sensitive to indirect communication than others. <br />
** If a person who you are interacting with shows discomfort from the interaction, you are encouraged to proactively check whether your approach is okay, re-think your assumptions, or back off, even if they have not explicitly told you to stop or leave them alone. Please bear in mind that some people are less comfortable explicitly stating boundaries or saying no than others. <br />
** Respect off-duty time. Sometimes a person who is on a specific team or affiliated with a specific external organization just wants to relax and socialize, not talk about work, or wants to vent about work rather than keep working off the clock. <br />
<br />
On the lighter side: [[Book of Wholesome Hobbies]]<br />
<br />
=== General IRC culture ===<br />
The main channel strives to be a genial, welcoming place where people who are interested in Dreamwidth (in general, even if they don't feel called to volunteer at the moment) can spend time. <br />
<br />
Since many of us are trying to make fewer possibly hurtful assumptions about other people on the internet, do not be surprised if someone asks what pronouns you prefer to be used when referring to you: singular or plural, [http://en.wikipedia.org/wiki/Gender-specific_pronoun masculine or feminine, neuter], or other [http://en.wikipedia.org/wiki/Gender-neutral_pronoun other gender/gender-neutral pronouns]. Sometimes people may make an educated guess, but if someone asks, it is most likely in the spirit of not making assumptions. It is always acceptable to decline to disclose information you do not feel like sharing.<br />
<br />
Whoever's around on the hour is encouraged to announce a channel [[stretch break]].<br />
<br />
== Channels ==<br />
<br />
=== #dreamwidth ===<br />
Open access. General Dreamwidth chatter, including owners, developers, support, and cheerleaders. Occasionally NSFW. <br />
<br />
Chatter about Dreamwidth itself and questions about how the site works are almost always on topic. There is very little set topic, so general discussion is all right as well. Common topics include programming and design, fiber arts, food, accessibility, home improvement, pets, et cetera. Many of the regulars happen to have known each other for years, but don't be shy. Asking questions and interacting is great! Lurking is fine too. <br />
<br />
For the bosses' peace of mind, discussion of politics and debates over the validity of another person's religion are to be kept to other channels.<br />
<br />
=== #dreamwidth-antispam ===<br />
<br />
Access restricted. For the anti-spam team. If you are a member of the team and need access to the channel (all current team members may request access), say something in <dwcomm>dw_antispam</dwcomm> and/or ping an op (asking in the comm may be slow; the op may be afk, and a ping could get lost in a client crash). Ops are Azz and skrshawk. SpamBot is the resident bot, owned by <dwuser>exor674</dwuser>.<br />
<br />
SpamBot announces new spam and when the queue has been cleared. The command <code>SpamBot: spam</code> makes SpamBot list the current contents of the queue.<br />
<br />
When in channel, the best practice is to announce that you'll take care of the spam that you're headed for, to avoid collision as much as possible.<br />
<br />
=== #dreamwidth-bitch ===<br />
Open access but officially unofficial. <br />
<br />
This channel combines several legacy channels from the old server: #dw_bitch (complaints), #dw_nsfw (not-safe-for-work links and topics), #dw_tmi (way too much personal information), and #dreamwidth-hell (hellbot-spam and further complaints) as well. <br />
<br />
The channel is intended for things that aren't appropriate in #dreamwidth, such as extensive complaints, NSFW discussions, medical TMI, and general TMI; possibly even politics, too. Botspam (hellbot, bitspam, and reminderbot) is unregulated in this channel. <br />
<br />
In practice there are also technical discussions that pop up here (even though they would be OK in main-channel), since this *is* a #dreamwidth- channel.<br />
<br />
=== #dreamwidth-dev ===<br />
Open access, intended for developers, other people actively working, and people quietly watching the work. A development/training/support/testing-focused channel without side-chatter.<br />
<br />
This channel contains developers working on Dreamwidth's code. They can often give assistance and advice to other devs working on Dreamwidth, and can sometimes also offer assistance to people who are setting up their own installation of the Dreamwidth code.<br />
<br />
=== #dreamwidth-docs ===<br />
Open access, intended for documentation team. For discussing documentation. This may be obsolete and from the old server.<br />
<br />
=== #dreamwidth-games ===<br />
Open access. Officially unofficial, for funtimes including Zilch and Acrophobia.<br />
<br />
=== #dreamwidth-ops ===<br />
Access restricted. Owners, employees, contractors, and <del>Nagios</del> Alertsy the Annoying Wonder Bot.<br />
<br />
=== #dreamwidth-support ===<br />
Open access, intended for current, past, future, and questioning [[Support FAQ | Support]] team. <br />
Intended as a resource for volunteers interested in helping with technical support of Dreamwidth users: to hang out, ask questions, and learn. Run by the Triumvirate of Domtheknight (Dom), Chemicallace (Chemla), and MissKat (Kat)<br />
<br />
People needing help with their own installation of the Dreamwidth code should try #dreamwidth-dev.<br />
<br />
People needing help with Dreamwidth's features may find that there are more people who will be happy to answer any questions in #dreamwidth.<br />
<br />
=== Other ===<br />
There are sometimes impromptu channels created for specific discussions that do not fit regular channels. (Freenode's policies seem to state that these should be in the ##dreamwidth- namespace? Or is it just ##?)<br />
<br />
== Bots ==<br />
<br />
IRC bots are programs people can interact with in the IRC channel. They have their own usernames and different uses. <dwuser>sophie</dwuser> (Sophira) programmed and hosts many of the bots; most are custom-written. The bots generally only speak when spoken to (with a few exceptions). <br />
<br />
Infobot has been fed the wiki links for most of the bots on the server. <code>Infobot, help <bot></code> will usually result in a quick link to that bot's documentation. <br />
<br />
All bots present in official Dreamwidth channels must have permission from rahaeli and xb95. Generally it is preferred to add features to an existing bot rather than add a new bot. If there is a bot feature that you would like to have in an official Dreamwidth channel, ask the owners and Sophira. <br />
<br />
=== Alertsy ===<br />
A [http://www.nagios.org/ Nagios] bot that pages Mark/ops when the site is down. Or up. An archive of its messages can be found at [http://twitter.com/dw_alerts @dw_alerts] on Twitter. <br />
<br />
Not to be mistaken for historical mentions of '''_nagios_''', who is usually D being Very Silly at Mark's expense.<br />
<br />
Alertsy speaks without being spoken to. <br />
<br />
<br />
=== Bugsy ===<br />
Bugsy is a bot that notifies the channel when bugs are opened, closed, or receive patches (although the attachment-upload function of Bugsy broke with a recent Bugzilla upgrade and the bot hasn't been patched yet). It will also bring up more information about any bug that you link to or mention in channel.<br />
<br />
; '''bug <x>''' said in channel, anywhere in the sentence, will result in Bugsy linking the bug in question. If Bugsy isn't in the channel, Figment will normally ask him for you, as long as Figment is also in the channel.<br />
<br />
;'''@<x>'''<br />
: when starting a line with this, it does something, mostly Bugsy telling you that it wasn't a valid command (if you say "@denise that was awesome", for example).<br />
<br />
=== Fig-Bit ===<br />
Fig-Bit has several different features, and will answer to "Figment" or "Fig" interchangeably, as well as "Infobot" or "info" and "Bit". The bot names are not case-sensitive. <br />
<br />
Fig-Bit is present in #dreamwidth, #dreamwidth-bitch, and #dreamwidth-support. <br />
<br />
==== Infobot ====<br />
There is a DW-specific infobot in the channel named Fig-Bit. Address all infobot commands to "infobot", rather than to Fig-Bit. You can use "info," instead of "infobot," for any of these commands if you wish.<br />
<br />
===== Public Infobot Commands =====<br />
Some commands can be used in all public channels that Fig-Bit is in. <br />
<br />
; '''infobot, <x>'''<br />
: This asks Fig-Bit to recall a factoid that was previously remembered. You can use this in channel or in PM.<br />
: Many useful factoids are stored in the infobot. If there's something that IRC should know, it may have been stored in the infobot. <br />
<br />
; '''infobot, ?<x>'''<br />
: This asks Fig-Bit to search for factoid names containing ''<x>''.<br />
<br />
; '''infobot, ??<x>'''<br />
: This asks Fig-Bit to search for factoid names ''and values'' containing ''<x>''. If you're doing a general search, this is probably what you want to use.<br />
<br />
===== Private Infobot Commands =====<br />
Some infobot commands can only be used in private message with the infobot, as programming the infobot can become spammy to the channel you are in. To reduce the potential for spammers messing with the infobot, your nickname must be registered and you must be authenticated to it in order to send private messages to Fig-Bit. <br />
<br />
; '''infobot, ''<x>'' is ''<y>'''''<br />
: This is how you ask Fig-Bit to remember a factoid ''<x>''. For example, you might say:<br />
infobot, wiki is http://wiki.dwscoalition.org/notes/<br />
: which would ask him to remember that the factoid "wiki" was the URL to Dreamwidth's development wiki. This command works only in PM. You can ask him to recall a factoid with the command below.<br />
<br />
; '''infobot, no, ''<x>'' is ''<y>'''''<br />
: If Fig-Bit already knows a factoid when you try to ask him to remember one, he'll tell you that he already knows it and he won't remember the new definition. This command tells him to change the factoid to the new definition anyway. This command works only in PM.<br />
<br />
; '''infobot, forget ''<x>'''''<br />
: This asks Fig-Bit to forget the factoid ''<x>''. This command works only in PM.<br />
<br />
===== Notable Infobot factoids =====<br />
<br />
====== Infobot as help feature ======<br />
Infobot has been fed links to the wiki entries on most bots. Saying '''Infobot, help ''<bot>'' ''' will generally result in a link to the wiki entry on how to use that bot.<br />
<br />
====== Other useful Infobot items ======<br />
qdb<br />
jargon<br />
<br />
==== Bit ====<br />
<br />
Bit is the decision-bot part of Fig-Bit. Ask Bit a yes or no question, or ask Bit to pick between comma-separated options. Bit will choose! (If you're not sure what pronouns to use when referring to Bit, just ask Bit, and Bit will tell you. Bit may be gender-fluid, as the answers do sometimes change.) Bit sometimes accepts botsnacks, depending on whim (and perhaps hunger, but nobody really knows), and, if accepted, will share them with Fig.<br />
<br />
; '''Bit, tally ''' will make Bit give a tally of the yes and no answers since the last time Bit was rebooted. <br />
<br />
As Bit has not been specifically programmed to favor working on bugs, support, or code reviews over other (more frivolous) pursuits, it is clear that Bit just naturally favors these things, being a bot.<br />
<br />
[http://www.youtube.com/watch?v=_fGujzulsas A video clip of the 'Bit' from Tron.]<br />
<br />
==== Support-bot ==== <br />
Fig-Bit is also a Support-bot, and will link to any support request mentioned in channel, and can be used to show a report on the current status of the support board. For those who are familiar with the support-bot Anna (from LiveJournal Support), Fig-Bit functions like her. <br />
<br />
Support-bot commands can be addressed to Figment or Fig. <br />
<br />
; '''Figment, green'''<br />
: This asks Fig-Bit to retrieve the stats on the support requests without approved answers. <br />
<br />
:The "green" report is of the format:<br />
<br />
:<Total> green (<number> unanswered, <number> SNH) :: (<priority>) <category total> in <category> (<unanswered>+<still needs help>)<br />
<br />
:All public support categories are listed in this report. <br />
<br />
:"Unanswered" is new requests that have not yet received an approved answer. <br />
:SNH is "Still Needs Help": requests that are in need of an answer, but have already had at least one approved answer. <br />
:Asterisks before a category name indicate that the category needs attention, based on the number of open requests. (Senior support and the botmistress decide on the thresholds of how many open requests in a category at one time is typical; this can be reset as things change.) <br />
<br />
; '''request <x>''' or '''req <x>''' said in channel, anywhere in the sentence, will result in Fig-Bit linking the support request in question and giving a basic summary of the request. In #dreamwidth-support only, typing '''#<x>''' (that is, the support request number preceded by a hash) will do the same thing, which may be quicker to type.<br />
<br />
; Pasting a link to a Support request is like the above, but will only give the basic summary, with no link.<br />
<br />
; '''Figment, tags'''<br />
: This asks Fig-Bit to retrieve the bracketed tags in the subjects of support requests. <br />
<br />
; '''Figment, stars'''<br />
: This asks Fig-Bit to retrieve a list of categories that have reached their defined thresholds. <br />
<br />
; '''Figment, be Goat'''<br />
: Fig-Bit will give the green count in Goat style. (Goat was the LiveJournal Support support-bot before Anna.)<br />
<br />
; '''Figment, points <x>'''<br />
: Fig-Bit will give the number of support points for the given user or category, or (if not user or category is given) the total number of points available on the board if one were to leave an approved answer for all the open questions right now. <br />
<br />
; '''Figment, stale'''<br />
: Fig-Bit will give stats on the requests that have been open longest. <br />
<br />
; '''Figment, recent'''<br />
: Gives a detailed report of open support requests in multiple categories.<br />
<br />
; '''Figment, recenttags'''<br />
: Lists tags of current green requests.<br />
<br />
; '''Figment, kittens'''<br />
: Fig-Bit will give a list of the categories that are under their defined thresholds. (Categories = cats = small cats = kittens) <br />
<br />
; '''Figment, random'''<br />
: Fig-Bit will give a random support request, optionally within a given category. <br />
<br />
; '''Figment, search'''<br />
: Searches the summaries of green support requests for whatever you give it. This does not search the body of the request for performance reasons. Up to 5 results will be given in PM.<br />
<br />
; '''Figment, stats'''<br />
: Like the '''search''' command, but only displays a summary of the number of results found, without linking to the requests. Unlike '''search''', the output for this command is not restricted to PM, and is allowed to appear in channel.<br />
<br />
==== Reminderbot ====<br />
<br />
This function is only available in PM and #dreamwidth-bitch.<br />
<br />
Syntax: <br />
<br />
* '''Remind me in <time> <thing>'''<br />
* '''Remind me at <time> <zone> <thing>'''<br />
<br />
Example: <br />
<br />
* '''Remind me in 12 minutes DING COOKIES ARE DONE'''<br />
* '''Remind me at 5pm PDT PREPARE FOR AN EVENING OF AWESOME'''<br />
<br />
This command does not need to be addressed directly to the bot.<br />
<br />
The reminderbot uses time formats as seen in http://search.cpan.org/~muir/Time-modules-2006.0814/lib/Time/ParseDate.pm - lettered time zones are case-sensitive and must be uppercase.<br />
<br />
When specifying a time for the bot to remind you, the bot will probably use today or tomorrow (if that time has already passed today) in the bot's time zone. If you are in a different time zone than the bot, you might want to specify the date some of the time.<br />
<br />
==== Others ====<br />
<br />
These may be addressed to "Fig" as well. <br />
<br />
; '''Figment, countdown <time> <timezone>'''<br />
: Gives the time remaining until the specified time. '''fig, countdown 9pm EDT'''<br />
<br />
; '''Figment, gmt'''<br />
: Displays the current Greenwich Meridian Time.<br />
<br />
; '''Figment, utc'''<br />
: Same as above<br />
<br />
; '''Figment, is DW up?'''<br />
: Asks Figment to check if DW is up. "up" can be replaced with "down" synonymously. Figment also remembers how to check LJ. <br />
<br />
; '''Figment, math'''<br />
: A basic calculator.<br />
<br />
; '''Figment, latest <x>'''<br />
: Reports the last entry posted by a Dreamwidth user. There is no default for this command; a username must be given. <br />
<br />
; '''Figment, twitter <x>'''<br />
: Reports the last tweet posted by a Twitter user. Defaults to @[http://twitter.com/dreamwidth dreamwidth] if no username is given. (The twitter account for Alertsy is [http://twitter.com/dw_alerts @dw_alerts].)<br />
<br />
; '''Figment, botsnack'''<br />
: Not really its own command, but a nice way to reward our very useful bot.<br />
<br />
=== RWhEll bot ===<br />
<br />
You can feed items to Random Word hEll. When an item is fed to hell, hell will most likely spew out random items it has consumed. RWHell is present in #dreamwidth, #dreamwidth-bitch. <br />
<br />
; '''feed <x> to hell'''<br />
; /me '''feeds <x> to hell'''<br />
: This feeds an item to Hell. Hell will probably at this point in time spew out one or two items it has been holding. It may also burp and not expel anything new.<br />
<br />
: (Hell recognises a number of synonyms for "feed". The current list is "feed", "send", "damn", "punt", "toss", "smite", "condemn", "hurl", "throw", "kick", "cast", "banish", "drag", "pull", "consign", "push", "shove" and "drop". These can also be used in their equivalent form as part of a /me - for example, "/me damns <x> to hell".) For all of those verbs, the suffix "into hell" is understood as much as "to hell" is. "Darn <x> to heck" also works. <br />
; <b>hell, tally</b><br />
: This tells you how many items hell is currently holding. <br />
<br />
RWHell does not have a search function, so the only way to know what is in hell at any given time is to have kept track (or ask hell's minder). <br />
<br />
There is a separate level of hell for every channel that RWhell is in, so objects that are fed to it in its testing channel will not re-emerge in #dreamwidth, and vice versa. <br />
<br />
Hell is rate limited in #dreamwidth, to avoid abuse. <br />
Hell is not rate limited in #dreamwidth-bitch. <br />
<br />
The rumor that hell is sentient is just that: a rumor. Really. We swear. ...We hope.<br />
<br />
More on its history in [[Common_Jargon#Volunteer.2FIRC-Specific | Common Jargon]] and [[Random Word Hell]].<br />
<br />
=== Delegate IRC Commands ===<br />
<br />
There are some commands that are used only by delegates - normally project leaders. These can be found on the [[IRC Advanced]] page.<br />
<br />
[[Category: Community]]<br />
[[Category: IRC]]</div>Sophira