Archive for the 'Features' Category

User invitation system finally released

March 1, 2008

One of the biggest usability issues with DevjaVu has been inviting new users to your project. Luckily, most of you were smart enough to figure it out and/or put up with the difficulty. The downside of that has been that I’ve been able to put it off for so long. Today we have a solution in the form of a Users section in the Admin. You can now invite users by email and they will get a link to either register if they’re new or login if they have an account.

The main caveat is that you have to invite users into a group. New projects are created with three default groups: admins, developers, and viewers. Older projects might not have groups. If you run into any problems, please let us know.

As a side note, tonight Engine Yard will be moving us to a new load balancer, so there may be some brief downtime after midnight PST. This should relieve some of the recent issues with large checkouts/exports hanging.

-Jeff

Email masking for anonymous users

January 24, 2008

This one has been coming for a long time. We now mask email addresses to anonymous users in a way that actually destroys the ability to use the email, while still making it obvious enough who the user is. I guess you could call it the Google approach. We take the last two characters off the username before the domain and replace them with periods, much like on Google Groups. For example:

joeblow@example.com becomes joebl..@example.com

This should hopefully help you feel safer using an email address as your username. We still intend to build an alias system so that you can have short, non-email usernames for your projects, but we have to put that one off for a bit.

-Jeff

RSS feeds for private projects work now

January 15, 2008

Assuming your reader can do basic auth, follow redirects, and store cookies… they should work. Besides some of the simple aesthetic changes done recently (and you might notice new free accounts have text ads), I spent a big chunk of today trying to get RSS feeds and iCal for private projects working. The problem was that Trac would not properly tell feed readers to send authentication credentials, so trying to add the URL would fail because of permissions.

Turns out a long while back a patch was made to help solve the issue by allowing any URL to be prepended with /login (for example /timeline would become /login/timeline) and this would prompt you to enter authentication credentials, log you in and redirect you to the appropriate URL.

This works, and should work for you with most readers. Unfortunately Google Reader and Calendar don’t seem to work with anything that requires authentication, but I tried with Netvibes and iCal.app and they work just fine. Let me know how it works with other readers.

-Jeff

DevjaVu Web API

October 23, 2007

Recently we enabled XML-RPC access to your Trac projects. Not only does this mean you can use the advanced features of external Trac interfaces such as Mylyn for Eclipse (previously known as Mylar), but of course that you can have programmatic access to your tickets, wiki, search and milestones.

You can see all the exposed functions by going to /login/xmlrpc on your project and authenticating via HTTP if necessary. This is the URL you would use to give other programs access to your Trac, including your own. Here are some examples of using the API with Python.

We really value having lots of inputs and outputs as a web service, so we’re glad to finally make this API available. We also have web hooks that allow you to trigger your own scripts when commits happen. Just check out the Hooks section of your Admin.

Over time, we look forward to exposing more via API and hooks. One possibility is to expose SVN operations via API, so that you can programmatically use and control your repository. Imagine powering a website using the DevjaVu wiki as a content management system and exposing your repository to users via an easy to use web interface that accepts and versions the contents of zip files.

We love API’s because they open up the possibility to build great things easily. We hope you can come up with some creative uses of our API. Let us know if there’s anything else in particular you’d like exposed!

-Jeff

Notifications and Akismet

April 18, 2007

Tonight we deployed email notifications for Trac tickets, so you and your team can stay on top of changes. You can enable notifications in the Notifications panel of the Admin area. You can also customize the Reply-To address and turn on various “always notify” options. Subversion email notifications are coming soon.

We also enabled the Akismet spam filtering strategy, so if any of you have public projects and want to add extra spam protection, you can put in your API key and take advantage of Akismet’s great service. We already provide several builtin spam filtering strategies that seem to do a really good job, but now you can make it even stronger. If you don’t have an Akismet API key, you can sign up at wordpress.com and get a free personal key.

With all this anti-spam tech, we’d really hate it if any of you are getting spam. If you encounter any kind of spam problems, please notify us so we can tweak our system.

Also, you may have noticed the menus have changed a bit. We’ve simplified the meta navigation links and put them in the top right where our DevjaVu community links used to be. We put those under the Admin area. In the near future, we’re going to give you a filterable headlines feed of our blog in there, so you can be sure to stay up to date on new features, possible downtime, important announcements, etc.

Anyway, I hope you enjoy the new features! Tell us what you think!

-Jeff

Free SSL for beta users!

April 4, 2007

Tonight we’ve enabled SSL for all our domains, and that includes your projects! This is a special gift to you beta users. You’ve given such great feedback, helped us find trivial bugs, and put up with us when you found major ones. And you’ve been spreading the word! I think that more than anything deserves a reward.

The free accounts we’ll be offering when we launch will not have SSL. In fact, getting SSL for both Trac and SVN is going to be reserved for Pro accounts. You guys are special!

For the moment it’s a self-signed certificate, but between now and launch we’ll be switching to a trusted signed certificate. For all practical purposes though, it does what you want: encryptz your dataz. You can also use secure SVN as a way to get around firewalls that prevent the DAV extensions to HTTP.

It’s not the default, so you’ll have to manually add that s to http in your URLs, but I’m sure that’s not too much to ask. Also, Subversion won’t switch to the SSL version of your repository with the switch command unless you use the --relocate flag.

Enjoy!

-Jeff

Subversion hooks are now exposed

January 15, 2007

We just deployed the ability to specify pre-commit and post-commit hooks. You can now hook into the commit process with your own web scripts, allowing you to handle commit events however you like!

The Admin now has a Hooks section where you can specify your own hook scripts. We currently support pre-commit, which happens before a commit happens, and post-commit, which happens after a commit. Post-commit is used most often for uses such as to drive an auto-build/deploy/package process or to notify a mailing list or IRC of the commit.

Pre-commit is used less often, but can be used to prevent commits when, for example, a log message isn’t provided. It could also be used to implement your own authorization scheme. Since we’re using HTTP for these hooks (hence they are web hooks), the way you tell us to prevent the commit with the pre-commit hook is to return 400 Bad Request, which we’re using here as a general error code to mimick the behavior of a shell script error code. Any output returned in the body will be displayed as the reason.

In both hooks, we pass useful information relevant to the commit, including the author, log message, project name, and depending on whether it’s pre-commit or post-commit, the transaction number or the revision number respectively. This information will be properly documented at some point, but since you’re all developers, I have no doubt you can easily figure it out with one or two lines of code to experiment with it. Hint: send yourself an email that displays all POST variables.

However, I put up a script that I used to debug and test the pre-commit hook’s ability to prevent commits. You can find this script here. If you put the URL of that script in your project’s pre-commit hook field right now, you will not be able to commit to your project. The script simply always returns 400 with a message letting you know you’re using a test script as your pre-commit hook. You can use this to try out hook functionality right now.

-Jeff

Export your haikus with a dropdown

December 13, 2006

Today somebody gave an excellent haiku about DevjaVu:

free hosting for all
wiki and source together
the red ninja rules

Anyway, this morning you may have noticed there’s a new section in the admin to export your data! You can now download a dump of your repository, as well as a hotcopy of your Trac environment. The hotcopy won’t work exactly as your DevjaVu project does if you try to use it with your own Trac, but it is possible to get it working with some hacks. The important thing is that you have your data.

Also, as a minor update, we changed the Default Ticket Report option in your Basic settings to be a dropdown of your available reports instead of mysterious textbox. That’s originally what we wanted to do, but it was so much easier to just give you a textbox. Now, like Star Wars (sigh), the original vision has been realized.

I know the title of this post doesn’t make sense. I was just trying to tie everything together.

-Jeff

Workflow shortcut and wiki enhancements

December 4, 2006

Today we’re announcing four, albeit minor, new features active immediately. Actually, a few of them have been active for a while, but weren’t tested enough to be announced.

Close tickets via commit message
Save a step in your workflow and close tickets when you actually close them, when you commit! You can now close tickets by saying, for example, “closed #49” or “closes ticket:103” anywhere in your commit message. Here’s the list of “close” keyword variants that can be used before either form of ticket Trac link:

close
closes
closed
fix
fixes
fixed

This will also automatically reference the changeset and ticket with each other via wiki links. You can also just get the referencing without closing the ticket by using these keywords before a ticket link:

addresses
re
references
refs
see

Put up a splash page for unauthorized users
For projects that don’t allow anonymous WIKI_VIEW, but want to show something to anonymous users besides a Forbidden error, you can now create a wiki page called WikiSplash that will be displayed in place of the Forbidden message.

You can use this to tell the unauthorized users what they’re missing, or to tell them how they can get permission to the project. It could also be used to simply redirect users to the login page for convenience (see below).

Redirect users from anything to anything
We’ve installed the TracRedirect macro, which will allow you to redirect Javascript-enabled users to just about anywhere else in Trac. You can use this to alias wiki pages that have been moved or renamed, or help ease the issue of ticket duplication. It includes backlinks so you can still get to the original page after being redirected.

Using the macro is as simple as this:

[[redirect(ticket:98)]]

The format is always a qualified Trac link in the type-colon-id format. The one exception is our login redirect that can be used in combination with the WikiSplash page. That would look like this:

[[redirect(login)]]

Display a table of contents
We’ve also installed the TocMacro, which you can use to make a TracGuide-style table of contents menu for your pages. It uses the page’s own heading structure, so there’s no configuration. Just throw this on your wiki page:

[[TOC]]

If you want to display more than what’s on the current page, you can pass it a list of other wiki pages to build a menu from.

[[TOC(WikiStart, AnotherWikiPage, ProjectGuide)]]

There’s a few more configuration options available that you can read about here.

More to come, including export
The next thing on the list is project export, which will get you a dump of your repository and a hotcopy of your Trac environment. I know this has got to be the most requested feature, and I’m sorry it’s taken so long. You should see a link for it in the Admin in about a week. : )

-Jeff

Getting serious

November 20, 2006

In about a week we’ll be deploying what’s basically a completely rewritten DevjaVu based on Trac 0.10! Along with all the greatness of Trac 0.10, this update is going to give you automatic spam filtering, commit message triggers, and wiki enhancements. Most importantly though, it should open the floodgate to more long awaited features, fixes, and of course, our premium packages.

You see, what we have live now is really just mature prototype code. For the most part it gets the job done, but without things like a proper vendor branch, it’s almost impossible to upgrade Trac. That’s the reason we’ve been on Trac 0.9 for so long.

This newly engineered version uses Rake for the build process of setting up and installing Trac and its plugins. I have got to say that Rake is great. We also use Rake to automate a lot of our system management processes. I just automated our deployment process with Capistrano, which makes it all the more easier and quicker for us to get out new features and fixes. If you have the means, I highly recommend trying Rake and Capistrano for even non-Ruby projects.

Anyway, see you in about a week with the new release and some more exciting announcements. Our traffic keeps climbing, invitaton pleas keep rolling in, and the feedback has been great. The best part is we haven’t even gotten started yet…

-Jeff