RT 4(Request Tracker 4.0)                 jesse@bestpractical.com                 http://bestpractical.com
Hi, Im Jesse VincentFrom Boston, MA in the USPerl HackerCurrent Perl 5 “pumpking”Android Hacker (K-9 Mail)Kindle Hacker (S...
Finding me@obrajesse@bestpractical.comfacebook.com/jesse.vincent
Hi Im JesseOriginal Author of RTPartner at Best PracticalRT project lead
(That just I dont get to code much anymore)
Best PracticalWe make RTWe sell supportWe sell trainingWe sell consultingWe sell custom development
Our officesBoston, MAMoscow, RussiaHangzhou, ChinaPinglin, Taiwan
(Were 11 people)
RT: Request TrackerGeneral purpose ticketing system
GNU GPLv2
Continuousdevelopment since 1996
O(100) downloads   every day
What is a ticketing system?
It keeps track of what   needs to get done
It keeps track of what       got done
...along with lots   of metadata
...and business logic
...and access control
...Its just a TODO list
On some very serious drugs
not
Important properties of      ticketing systems●   Everything has a unique ID●   Everything has a timestamp●   History cant...
What do you use a ticketing       system for?Network operations Accounts PayableBug tracking       Accounts               ...
What we use RT for
Bug Tracking
Bronze/Silver/Gold support
Customer Development
Resumes
Inbound Sales Inquiries
Sales Leads
Accounts Payable
Accounts Receivable
Who uses RT?
Who else uses RT?http://requesttracker.wikia.com/wiki/RTUsers
RT Scales
It scales down
(for testing or development)
Run RT on your laptop
SQLite
Standalone web server
It scales up
Largest RT I know about
40,000-70,000 tickets
...every day
(Nearly 1 ticket/second)
Multiple front-end app servers
Big database server  with hot standby
Designed to be hookable     and pluggable
Plugins
●●   rt-action-linearescalate                   ●   rt-extension-log-memoryusage●   rt-action-notifygroup                 ...
(and a bunch morecreated by RT users)
RT 4.0
Now available?
Not quite
Christmas 2010:   4.0.0RC1
March 24, 2011:  4.0.0 RC7
Release next week?
hcchien has been asking me to do a talk on RT4  since at least 2006.
Ive been promising “next year”          for 5 years.
We started RT4 inSeptember 2007
I named it 3.999-DANGEROUS
In literature, they call that foreshadowing
I do public RT trainings   a few times a year
I talk about RTs history
These are the slides I use
A Brief History of RT
RT 0.9 (1996)●   Designed for use at a single    company●   2 sysadmins●   30 users
RT 1.0 (1999)●   Same as RT 0.9    + a bit more courage●   Used at hundeds of companies●   Dozens of CSRs●   Thouands of r...
RT 2.0 (2001)●   Total rewrite●   Just after Jesse escaped Microsoft●   DBIx::SearchBuilder●   Abstraction●   Whole new UI...
RT 3.0 (2003)●   Overhauled web interface●   Extension mechanisms●   Internationalization●   Custom fields●   Cleaner inte...
RT 3.2 (2004)●   New search UI●   Spreadsheet / RSS output●   Outgoing mail preview and logging●   UI improvements●   No m...
RT 3.4 (2005)●   Reimplemented Custom Fields●   Custom fields on users, groups    transactions●   Generalized Transaction ...
RT 3.6 (2006)●   All-CSS layout and styling●   Customizable homepage●   Built in charts and reports●   Ticket "reminders"●...
RT 3.8 (2008)●   More user preferences●   Timezones●   Theme●   Ticket history order●   New configuration system●   Even m...
RT 3.8 (continued)●   “Favorite” tickets●   Ticket relationship graphs●   Branded queues●   iCal feeds●   PGP support
RT 4.0 (2008?)
Never trust a vendor who makes promises about  unreleased products
Thats really what it said!
It was sort of a joke
...little did I know
All Taiwanese know that    4 is very unlucky
Youre supposed  to just skip 4
Nobody warned me
...until last night!
In my culture, 6 isthe unlucky number.
Along came 2006
We started thinkingabout building RT 4.0
RT is big
http://www.flickr.com/photos/swiv/4426214075/
RT is big
http://www.flickr.com/photos/daymin/4715213393/
RT is complex
http://www.flickr.com/photos/18909153@N08/5241036226/
RT is complex
RT is old
http://www.flickr.com/photos/jpott/5326081706/
RT is old
http://www.flickr.com/photos/paulgissane/163290720
What would we change?
Modernize the API
Remove insane features
Use a framework!
Jifty
AJAX
Modern API
Lots of testing affordances
Plack
Automatic DatabaseSchema Management
UI Helpers
So, we started refactoring
Not a from-scratch rewrite
..but pretty close
No deadline
"Itll be ready when its ready"
No fixed deliverable
"We want it to be good"
So, we went to work.
What went wrong?
We moved files around
Git made that sort of ok
We decided to modernize    our coding style
We started renamingclasses and methods
RTs API was oldand InterCapped
The modern perl world  is prettier_looking
We built refactoring tools
We ported thefull test suite
RT 3.6/3.7 were still in active development
We were fixing lots  of bugs in 3.6
It was a constant battle    to merge forward
3 years in, RT 3.999 was     largely "done"
60% of the code of RT 3.8
Almost the samefeature set as RT 3.8.0
Almost the sametest suite as 3.8.0
Much cleaner
Ran on Jifty
Ran on Plack
New "Ticket Lifecycles" system
Much of the UI portedto Template::Declare
It was a lot better
It killed off lots of bad   old API decisions
...but mostly better for    RTs developers
2627 commits
3 years of development
1484 files changed,174558 insertions(+),319761 deletions(-)
3.999 was different than 3.8 in    some important ways
The API was recognizably the           same
3.999 was better than 3.8 in   some important ways
The API was 100%  incompatible
There were lots and lots ofreasons to make the change
There are lots and lots of RT   extensions out there.
Weve done at least 75
There are more on CPAN
Just about every RT instancehas some local customizations
RT has been downloadedabout 100 times every day
For the past 5+ years
How many of you have ever customized or extended     some software?
Guess what happens when  you change an API?
Ever had an API changebreak your customization?
RT has many users
They rely on many, many     RT extensions
●●   rt-action-linearescalate                   ●   rt-extension-log-memoryusage●   rt-action-notifygroup                 ...
We broke all of them
(all the extensions)
(all the users)
RT 3.999 had 40% less  code than RT 3.8
RT 3.999 looked just like RT 3.8
RT 3.999 had almost the same features as 3.8
...with one really big change
RT 3.x has a system  called “Scrips”
Scrips let you buildcustom business logic
Theyre sort of like“if...then...” statements
They can fire after any update
RTs approvals system     uses Scrips
RTs email-sending rules      use Scrips
Theyre really powerful
...but not omnipotent
Scrips are unchanged     since RT 2.0
We decided to replace Scrips in RT 3.999
I wanted a simple macro language
clkao built the backend
“Im not building a stupid macro language. If were doing this, itshould support eval and apply”
We created lorzy
It was a lispy language
...with named, typed      parameters
We ripped out Scrips and    dropped in lorzy
Greenspuns Tenth RuleAny sufficiently complicated C orFortran program contains an adhoc, informally-specified, bug-ridden,...
...at least we did it on purpose?
So, have I soldRT 3.999 to you?
I dont like hurting users.
I dont like hurting customers.
Last summer, we threw away      3 years of work.
[sad panda]
Whatd we learn?
Second system syndrome       hurts a lot
.oO{         My problem is that          I actually have users       I dont want to alienate }
A working test suite is  not a magic bullet
Incremental updates          vs    gut renovation
Got a working system?
Make the smallest change that could possibly work
Build for your users
When we do client work, theysay that they want high-quality software last week for almost             free.
"Good, fast and cheap,    pick any two"
Turns out that you must pick two.
Last summer, we started    RT4 over again
Whatd we do different      this time?
We were working for a customer
The customer wanted      RT 3.8...
...with a lot of extensions.
They wanted to pay us tointegrate those extensions.
We had a deadline
We had a fixed set of   deliverables
We had a mostly fixed set of       deliverables
We got to work
The client wanted frequent       beta releases
The new RT 3.9 needed tobe deployable at any time
Lots of topic branches
We started pulling in work wedalready done as core features
RTFM became Articles
Stock answers
Really useful
Lots of folks dont install it
So, now you dont get a choice
Lifecycles
Originally built for 3.999 &    backported to 3.8
Mobile Interface
Date custom fields
IP address custom fields
Full-text search for MySQL,    Postgres and Oracle
Gmail-style folding of ticket history
Some new features,we built from scratch
New auditing anddebugging tools
A brand new visual theme
A brand new theme editor
A new permissions editor UI
Dropdown and radio-button      custom fields
Autocompleters for users and email addresses
Ported to Plack
Some stuff, youd never notice
Overhauled how wedo boilerplate code
(Fewer files change. They change less)
Cut down our use of autoconf
Made the test suite much faster
Eliminated "noise"from the test suite
Successfully delivered    to customer
Since then, weve beenstabilizing, fixing bugs and       improving docs
RC 1 came out just after      christmas
RC 7 came out last week
Were very, very close.
Try out RT4http://bestpractical.com/rt/download.htmlhttp://bestpractical.com/rt/git.html
Release Candidate means wethink its ready for production
If it breaks, emailrt-bugs@bestpractical.com
Thank you!Questions?
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
RT4 - The whole sordid story
Upcoming SlideShare
Loading in …5
×

RT4 - The whole sordid story

5,253 views

Published on

Building RT 4 took a lot more work than we'd expected. In the end, we learned some useful lessons and ended up with a great product.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,253
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
42
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

RT4 - The whole sordid story

  1. 1. RT 4(Request Tracker 4.0) jesse@bestpractical.com http://bestpractical.com
  2. 2. Hi, Im Jesse VincentFrom Boston, MA in the USPerl HackerCurrent Perl 5 “pumpking”Android Hacker (K-9 Mail)Kindle Hacker (Savory)Former Perl 6 project manager
  3. 3. Finding me@obrajesse@bestpractical.comfacebook.com/jesse.vincent
  4. 4. Hi Im JesseOriginal Author of RTPartner at Best PracticalRT project lead
  5. 5. (That just I dont get to code much anymore)
  6. 6. Best PracticalWe make RTWe sell supportWe sell trainingWe sell consultingWe sell custom development
  7. 7. Our officesBoston, MAMoscow, RussiaHangzhou, ChinaPinglin, Taiwan
  8. 8. (Were 11 people)
  9. 9. RT: Request TrackerGeneral purpose ticketing system
  10. 10. GNU GPLv2
  11. 11. Continuousdevelopment since 1996
  12. 12. O(100) downloads every day
  13. 13. What is a ticketing system?
  14. 14. It keeps track of what needs to get done
  15. 15. It keeps track of what got done
  16. 16. ...along with lots of metadata
  17. 17. ...and business logic
  18. 18. ...and access control
  19. 19. ...Its just a TODO list
  20. 20. On some very serious drugs
  21. 21. not
  22. 22. Important properties of ticketing systems● Everything has a unique ID● Everything has a timestamp● History cant be edited or erased
  23. 23. What do you use a ticketing system for?Network operations Accounts PayableBug tracking Accounts ReceivableCall center Vacation rentalsHelpdesk Youth counsellingCustomer service WorkflowWork orders
  24. 24. What we use RT for
  25. 25. Bug Tracking
  26. 26. Bronze/Silver/Gold support
  27. 27. Customer Development
  28. 28. Resumes
  29. 29. Inbound Sales Inquiries
  30. 30. Sales Leads
  31. 31. Accounts Payable
  32. 32. Accounts Receivable
  33. 33. Who uses RT?
  34. 34. Who else uses RT?http://requesttracker.wikia.com/wiki/RTUsers
  35. 35. RT Scales
  36. 36. It scales down
  37. 37. (for testing or development)
  38. 38. Run RT on your laptop
  39. 39. SQLite
  40. 40. Standalone web server
  41. 41. It scales up
  42. 42. Largest RT I know about
  43. 43. 40,000-70,000 tickets
  44. 44. ...every day
  45. 45. (Nearly 1 ticket/second)
  46. 46. Multiple front-end app servers
  47. 47. Big database server with hot standby
  48. 48. Designed to be hookable and pluggable
  49. 49. Plugins
  50. 50. ●● rt-action-linearescalate ● rt-extension-log-memoryusage● rt-action-notifygroup ● rt-extension-menubarsearches● rt-ajaxyreplypage rt-extension-mergeusers ● rt-authen-bitcard● ● rt-extension-mergeusershistory● rt-authen-openid2 ● rt-extension-nagios● rt-bugtracker rt-bugtracker-public ● rt-extension-notificationmatrix●● rt-condition-complex ● rt-extension-priorityasstring● rt-crypt-smime ● rt-extension-quickcalls● rt-extension-activityreports ● rt-extension-quickdelete● rt-extension-activityreports-billing ● rt-extension-quickupdate● rt-extension-addadminccsonqueuechange rt-extension-reportspam ● rt-extension-attributewalker● ● rt-extension-rt_cpan_org rt-extension-captcha rt-extension-spawnlinkedticketinqueue● ●● rt-extension-cloneticket-withdata rt-extension-utils● rt-extension-commandbyemail ● rt-extension-commandbymail ● rtfm●● rt-extension-commentoncreate ● rtfm-extension-articletemplate● rt-extension-customfield-hideemptyvalues ● rtir● rt-extension-datediscordian ● rtx-calendar● rt-extension-extractcustomfieldvalues ● rtx-emailcompletion● rt-extension-formtools rtx-ticketlist-transactions ● rt-extension-jsgantt● ● rtx-workflowbuilder● rt-extension-ldapimport
  51. 51. (and a bunch morecreated by RT users)
  52. 52. RT 4.0
  53. 53. Now available?
  54. 54. Not quite
  55. 55. Christmas 2010: 4.0.0RC1
  56. 56. March 24, 2011: 4.0.0 RC7
  57. 57. Release next week?
  58. 58. hcchien has been asking me to do a talk on RT4 since at least 2006.
  59. 59. Ive been promising “next year” for 5 years.
  60. 60. We started RT4 inSeptember 2007
  61. 61. I named it 3.999-DANGEROUS
  62. 62. In literature, they call that foreshadowing
  63. 63. I do public RT trainings a few times a year
  64. 64. I talk about RTs history
  65. 65. These are the slides I use
  66. 66. A Brief History of RT
  67. 67. RT 0.9 (1996)● Designed for use at a single company● 2 sysadmins● 30 users
  68. 68. RT 1.0 (1999)● Same as RT 0.9 + a bit more courage● Used at hundeds of companies● Dozens of CSRs● Thouands of requests per day● Intense guilt
  69. 69. RT 2.0 (2001)● Total rewrite● Just after Jesse escaped Microsoft● DBIx::SearchBuilder● Abstraction● Whole new UI● No more frames● “Keywords”
  70. 70. RT 3.0 (2003)● Overhauled web interface● Extension mechanisms● Internationalization● Custom fields● Cleaner internals● Tests
  71. 71. RT 3.2 (2004)● New search UI● Spreadsheet / RSS output● Outgoing mail preview and logging● UI improvements● No major structural changes● More tests
  72. 72. RT 3.4 (2005)● Reimplemented Custom Fields● Custom fields on users, groups transactions● Generalized Transaction system● Faster, Faster, Faster● Prettier● Even more tests
  73. 73. RT 3.6 (2006)● All-CSS layout and styling● Customizable homepage● Built in charts and reports● Ticket "reminders"● Comprehensive test coverage● Cleaner code
  74. 74. RT 3.8 (2008)● More user preferences● Timezones● Theme● Ticket history order● New configuration system● Even more tests
  75. 75. RT 3.8 (continued)● “Favorite” tickets● Ticket relationship graphs● Branded queues● iCal feeds● PGP support
  76. 76. RT 4.0 (2008?)
  77. 77. Never trust a vendor who makes promises about unreleased products
  78. 78. Thats really what it said!
  79. 79. It was sort of a joke
  80. 80. ...little did I know
  81. 81. All Taiwanese know that 4 is very unlucky
  82. 82. Youre supposed to just skip 4
  83. 83. Nobody warned me
  84. 84. ...until last night!
  85. 85. In my culture, 6 isthe unlucky number.
  86. 86. Along came 2006
  87. 87. We started thinkingabout building RT 4.0
  88. 88. RT is big
  89. 89. http://www.flickr.com/photos/swiv/4426214075/
  90. 90. RT is big
  91. 91. http://www.flickr.com/photos/daymin/4715213393/
  92. 92. RT is complex
  93. 93. http://www.flickr.com/photos/18909153@N08/5241036226/
  94. 94. RT is complex
  95. 95. RT is old
  96. 96. http://www.flickr.com/photos/jpott/5326081706/
  97. 97. RT is old
  98. 98. http://www.flickr.com/photos/paulgissane/163290720
  99. 99. What would we change?
  100. 100. Modernize the API
  101. 101. Remove insane features
  102. 102. Use a framework!
  103. 103. Jifty
  104. 104. AJAX
  105. 105. Modern API
  106. 106. Lots of testing affordances
  107. 107. Plack
  108. 108. Automatic DatabaseSchema Management
  109. 109. UI Helpers
  110. 110. So, we started refactoring
  111. 111. Not a from-scratch rewrite
  112. 112. ..but pretty close
  113. 113. No deadline
  114. 114. "Itll be ready when its ready"
  115. 115. No fixed deliverable
  116. 116. "We want it to be good"
  117. 117. So, we went to work.
  118. 118. What went wrong?
  119. 119. We moved files around
  120. 120. Git made that sort of ok
  121. 121. We decided to modernize our coding style
  122. 122. We started renamingclasses and methods
  123. 123. RTs API was oldand InterCapped
  124. 124. The modern perl world is prettier_looking
  125. 125. We built refactoring tools
  126. 126. We ported thefull test suite
  127. 127. RT 3.6/3.7 were still in active development
  128. 128. We were fixing lots of bugs in 3.6
  129. 129. It was a constant battle to merge forward
  130. 130. 3 years in, RT 3.999 was largely "done"
  131. 131. 60% of the code of RT 3.8
  132. 132. Almost the samefeature set as RT 3.8.0
  133. 133. Almost the sametest suite as 3.8.0
  134. 134. Much cleaner
  135. 135. Ran on Jifty
  136. 136. Ran on Plack
  137. 137. New "Ticket Lifecycles" system
  138. 138. Much of the UI portedto Template::Declare
  139. 139. It was a lot better
  140. 140. It killed off lots of bad old API decisions
  141. 141. ...but mostly better for RTs developers
  142. 142. 2627 commits
  143. 143. 3 years of development
  144. 144. 1484 files changed,174558 insertions(+),319761 deletions(-)
  145. 145. 3.999 was different than 3.8 in some important ways
  146. 146. The API was recognizably the same
  147. 147. 3.999 was better than 3.8 in some important ways
  148. 148. The API was 100% incompatible
  149. 149. There were lots and lots ofreasons to make the change
  150. 150. There are lots and lots of RT extensions out there.
  151. 151. Weve done at least 75
  152. 152. There are more on CPAN
  153. 153. Just about every RT instancehas some local customizations
  154. 154. RT has been downloadedabout 100 times every day
  155. 155. For the past 5+ years
  156. 156. How many of you have ever customized or extended some software?
  157. 157. Guess what happens when you change an API?
  158. 158. Ever had an API changebreak your customization?
  159. 159. RT has many users
  160. 160. They rely on many, many RT extensions
  161. 161. ●● rt-action-linearescalate ● rt-extension-log-memoryusage● rt-action-notifygroup ● rt-extension-menubarsearches● rt-ajaxyreplypage rt-extension-mergeusers ● rt-authen-bitcard● ● rt-extension-mergeusershistory● rt-authen-openid2 ● rt-extension-nagios● rt-bugtracker rt-bugtracker-public ● rt-extension-notificationmatrix●● rt-condition-complex ● rt-extension-priorityasstring● rt-crypt-smime ● rt-extension-quickcalls● rt-extension-activityreports ● rt-extension-quickdelete● rt-extension-activityreports-billing ● rt-extension-quickupdate● rt-extension-addadminccsonqueuechange rt-extension-reportspam ● rt-extension-attributewalker● ● rt-extension-rt_cpan_org rt-extension-captcha rt-extension-spawnlinkedticketinqueue● ●● rt-extension-cloneticket-withdata rt-extension-utils● rt-extension-commandbyemail ● rt-extension-commandbymail ● rtfm●● rt-extension-commentoncreate ● rtfm-extension-articletemplate● rt-extension-customfield-hideemptyvalues ● rtir● rt-extension-datediscordian ● rtx-calendar● rt-extension-extractcustomfieldvalues ● rtx-emailcompletion● rt-extension-formtools rtx-ticketlist-transactions ● rt-extension-jsgantt● ● rtx-workflowbuilder● rt-extension-ldapimport
  162. 162. We broke all of them
  163. 163. (all the extensions)
  164. 164. (all the users)
  165. 165. RT 3.999 had 40% less code than RT 3.8
  166. 166. RT 3.999 looked just like RT 3.8
  167. 167. RT 3.999 had almost the same features as 3.8
  168. 168. ...with one really big change
  169. 169. RT 3.x has a system called “Scrips”
  170. 170. Scrips let you buildcustom business logic
  171. 171. Theyre sort of like“if...then...” statements
  172. 172. They can fire after any update
  173. 173. RTs approvals system uses Scrips
  174. 174. RTs email-sending rules use Scrips
  175. 175. Theyre really powerful
  176. 176. ...but not omnipotent
  177. 177. Scrips are unchanged since RT 2.0
  178. 178. We decided to replace Scrips in RT 3.999
  179. 179. I wanted a simple macro language
  180. 180. clkao built the backend
  181. 181. “Im not building a stupid macro language. If were doing this, itshould support eval and apply”
  182. 182. We created lorzy
  183. 183. It was a lispy language
  184. 184. ...with named, typed parameters
  185. 185. We ripped out Scrips and dropped in lorzy
  186. 186. Greenspuns Tenth RuleAny sufficiently complicated C orFortran program contains an adhoc, informally-specified, bug-ridden, slow implementation ofhalf of Common Lisp.
  187. 187. ...at least we did it on purpose?
  188. 188. So, have I soldRT 3.999 to you?
  189. 189. I dont like hurting users.
  190. 190. I dont like hurting customers.
  191. 191. Last summer, we threw away 3 years of work.
  192. 192. [sad panda]
  193. 193. Whatd we learn?
  194. 194. Second system syndrome hurts a lot
  195. 195. .oO{ My problem is that I actually have users I dont want to alienate }
  196. 196. A working test suite is not a magic bullet
  197. 197. Incremental updates vs gut renovation
  198. 198. Got a working system?
  199. 199. Make the smallest change that could possibly work
  200. 200. Build for your users
  201. 201. When we do client work, theysay that they want high-quality software last week for almost free.
  202. 202. "Good, fast and cheap, pick any two"
  203. 203. Turns out that you must pick two.
  204. 204. Last summer, we started RT4 over again
  205. 205. Whatd we do different this time?
  206. 206. We were working for a customer
  207. 207. The customer wanted RT 3.8...
  208. 208. ...with a lot of extensions.
  209. 209. They wanted to pay us tointegrate those extensions.
  210. 210. We had a deadline
  211. 211. We had a fixed set of deliverables
  212. 212. We had a mostly fixed set of deliverables
  213. 213. We got to work
  214. 214. The client wanted frequent beta releases
  215. 215. The new RT 3.9 needed tobe deployable at any time
  216. 216. Lots of topic branches
  217. 217. We started pulling in work wedalready done as core features
  218. 218. RTFM became Articles
  219. 219. Stock answers
  220. 220. Really useful
  221. 221. Lots of folks dont install it
  222. 222. So, now you dont get a choice
  223. 223. Lifecycles
  224. 224. Originally built for 3.999 & backported to 3.8
  225. 225. Mobile Interface
  226. 226. Date custom fields
  227. 227. IP address custom fields
  228. 228. Full-text search for MySQL, Postgres and Oracle
  229. 229. Gmail-style folding of ticket history
  230. 230. Some new features,we built from scratch
  231. 231. New auditing anddebugging tools
  232. 232. A brand new visual theme
  233. 233. A brand new theme editor
  234. 234. A new permissions editor UI
  235. 235. Dropdown and radio-button custom fields
  236. 236. Autocompleters for users and email addresses
  237. 237. Ported to Plack
  238. 238. Some stuff, youd never notice
  239. 239. Overhauled how wedo boilerplate code
  240. 240. (Fewer files change. They change less)
  241. 241. Cut down our use of autoconf
  242. 242. Made the test suite much faster
  243. 243. Eliminated "noise"from the test suite
  244. 244. Successfully delivered to customer
  245. 245. Since then, weve beenstabilizing, fixing bugs and improving docs
  246. 246. RC 1 came out just after christmas
  247. 247. RC 7 came out last week
  248. 248. Were very, very close.
  249. 249. Try out RT4http://bestpractical.com/rt/download.htmlhttp://bestpractical.com/rt/git.html
  250. 250. Release Candidate means wethink its ready for production
  251. 251. If it breaks, emailrt-bugs@bestpractical.com
  252. 252. Thank you!Questions?

×