Yesterday we deployed a major release of Acunote and we'd like to tell
you more about it.
We usually deploy new code with feature enhancements and bugfixes
couple of times a week. Hosted software model and good development
practices give us this luxury, and let us rapidly evolve the
application based on user feedback. We take great care to make the
experience completely transparent to the users, by preserving backwards
compatibility, evolving UI very slowly and even preserving active
logins/session during most upgrades.
This release is different. Once again, we worked hard to do what our
users need. We tried and mostly succeeded in minimizing UI changes,
but underneath that we've changed the entire task management model
behind Acunote to make all the things you've asked for possible.

Old Task Model
In the old Acunote the task could only belong to one sprint at a
time. If your task wasn't finished in by the end of the sprint, you
would copy it to the next sprint to continue there. "Finish Spring"
feature used exactly this approach - it took all not-completed tasks
from the old sprint and copied them into the new sprint. Upon copying
the new task was created in the new sprint duplicating the description
and status and adjusting estimate to reflect the work left to do.
That model had its limitations. First, Acunote had no way to know that
the new task in the new sprint is actually the old task from the old
sprint but just continued in the new sprint. That made per-project
reporting and data aggregation problematic because there was no good
way to display combined data for the two, essentially the same,
tasks. Changes to the original task description, tags, comments,
attachments weren't propagated to the copied task and vice versa.
Another limitation was the behavior of tasks in Backlog. Common
usecase (especially for people using Agile methodologies) is to create
the task in Backlog representing the user story, then break the work
into smaller subtasks and split that work between sprints. Acunote
allowed you to copy this user story task from the Backlog into
individual sprints and add subtasks with concrete work in each of the
sprints. But there was no way to gather that information back from all
those sprints and display the overall progress of the user story.
And finally, the old model prevented us from ever showing task
numbers. The two tasks in our examples, one copied from another, are
conceptually the same, hence they should have the same number, and
that was not possible before.
Multi-sprint Tasks
New task model allows tasks to span multiple sprints. This is
especially useful for parent tasks representing long projects/user
stories, with children in multiple sprints. Another common use would
be concrete tasks which take more than one sprint to complete.

As usual Acunote allows the user freedom to setup his project as he
sees fit: each sprint can have its own hierarchy, concrete task can
evolve and become parent, you can schedule sprints as you see fit
including overlapping and parallel sprints, etc. The restrictions
should come from good development/project management principles, not
from the tool.
Existing UI has been extended to take advantage of this. Now, when
you copy task you don't copy any task information. Instead copying task
to another sprint will just assign the task to the new sprint, in
addition to any sprints it was already in. "Finish Sprint" works the
same way.
Existing data in all organizations was migrated to take advantage of
this functionality. The code looked for "Copy" events and combined
source and target tasks provided it was safe, i.e. the user did not
change description after copying. Estimate/remaining, tags, comments,
attachments, etc. were similarly combined. This was the most complex
migration we ever had and (fully automated) it took hours to run over
all the organizations in Acunote. That was the reason we had to
schedule downtime for this upgrade.
True Task Identity
Task is a fundamental real-life concept, and project management system
should reflect this. New Acunote datamodel allows us to view task
(user story/task/unit of work) as a first class entity, not just as a
part of a sprint (certain timeframe).
So now, task has its own history of estimates, remainings, owners,
statuses, etc. It maintains single description, set of comments,
attachments, history events, etc. This way both the sprint task list
and the task details views make sense, and present appropriate
information. There is no longer a compromise necessary to support
sprints/time-boxing.
Since task becomes a first class concept, we can assign it an identity
in the form of explicit task number. This number is persistent, and
can be used to refer to the task. This was the most commonly
requested feature for Acunote.
The Future
So far we've barely scratched the surface of functionality made
possible by the new data model. Now that it has been deployed, we'll
be going to back to our usual user feedback-driven incremental
development. First, there are also some rough corners left to smooth
after this major change, and that's the first priority for us. Beyond
that, the new data model allows incredible flexibility and power to
represent real-life projects, and to provide visibility into them at
any desired level. We have a lot of exciting features being baked to
take advantage of this. We don't talk about vaporware, so we'll let
the development speak for itself.
Known Issues
Help -- we'll updating it and will cover the underlying task
representation, task operations and examples of use in more depth.
Performance -- some operations became slower. We are aware of this,
and are actively working to restore the performance. We made good
progress on it today (Monday) and have already deployed the results.
We'll keep you updated on this very important point.
Edge cases around multi-sprint functionality -- we know about some
some edge cases where new functionality can display puzzling
results. For these, we are working on better way present this data.
If you find anything that surprises you, just send us a feedback and
we'll take a look.
You can no longer edit task from the task details page. This will
be fixed.