Centurial - 2021 Roadmap

22 January 2021 by Fouke Boss

2021 is going to be a busy and exciting year for Centurial. In this blog post, we take a look at the many new features we are planning to implement in Centurial in 2021 and 2022, and the dependencies between them.

A short Centurial history

Before we start looking forward, let's look back a bit. Initial development on Centurial started in 2016, and because Centurial is quite unlike all other genealogical software, it took over a year to release a first stable but very rough version 1.0, in October of 2017. Notice how similar, and yet different v1.0 was when compared to the current v1.18:

Most of 2018 was spent turning Centurial from this very rough product into a much more user-friendly application, improving calendars, indirect evidence, the Network diagram, source references, the autocorrelation algorithm, and many other parts. In v1.7 and v1.8, GEDCOM support was introduced.

In the first part of 2019, I concentrated on improving data entry, with many additions to the Claims Panel (v1.9) and the introduction of the browser extension (v1.10), showing a first glimpse of the real power of Centurial. The second half of 2019 was mostly used to professionalize Centurial, by introducing Dutch and German versions (v1.13) and by introducing the paid version of Centurial (v1.14) in early 2020, making the future development of Centurial more sustainable.

And in 2020, I finally got around to introducing many new features that had been on my wish list from the start, like the timelines and kinship (v1.16), the redesign of the Source View and the Claims Panel, and the introduction of text clips (v1.17) and the interactive tutorials (v1.18).

And so here we are, at the start of 2021, and Centurial is looking good. Most of the initial, basic features have matured, and the user community keeps growing every day. Of course, a bug pops up every now and then, but nothing too big. And so nothing is holding us back to take Centurial to a next level.

Planning future releases

When developing a software product like Centurial, there are several reasons that initiate a change to the existing software:

  • The most important drive behind Centurial development is a list of user stories that I keep at all times. A user story is a larger idea, or a 'dream' if you like, of how Centurial should work. Examples of user stories include 'The user should be able to generate reports from Centurial' and 'Improve support for importing data from sources on the web for the top 20 most used online sources'. Usually, completing such a user story means adding several new features and implementing many larger and smaller changes to Centurial.
  • Also, working with Centurial sometimes inspires users to request additional features, improvements, or tweaks. I like to call these user requests. Some user requests are small changes that can easily be included in Centurial. Others require considerably more work, or can only be done as part of a larger user story. Centurial v1.19, scheduled for release next week, implements several of these user requests.
  • Just like any other piece of software, Centurial is not perfect, and so every now and then an error occurs, or the code runs into an unexpected circumstance. These are called bugs. With Centurial, several mechanisms are in place to detect bugs as early as possible. First of all there is a set of manual and automated tests that is designed to look for bugs during development. Also, a couple of days before each new release, Centurial is published to the beta testers, which is a group of Centurial users who do a first user test of the new version.
    But the real test is when the full Centurial user armada starts using a new release. With Centurial running on all these different PCs and laptops, and with all these different users using Centurial in an ever so slightly different way, something unexpected is bound to show up. Luckily, Centurial is designed to send all errors that a user encounters to a central logging system; this way, I can see what is going wrong, and fix it.
  • A good developer will always try and find the least complex solution to any feature or a user request. As time goes on, the software sometimes outgrows these simple solutions. When it does, it makes changing and expanding that part of the code increasingly hard. So sometimes it is necessary to refactor a part of the code, which means redesigning that part of the code and moving parts of the existing code around into an improved structure, using the latest knowledge and insights.

Milestones

When planning a roadmap, it's important to consider the dependencies between all user stories, user requests, bugs and refactorings. Most features depend on other features or changes, and can only be implemented if these other changes are done first.

In order to manage all these dependencies, I have grouped all currently known work items into units of work that can be done as a whole, which I will call milestones. Each release will contain one or more of these milestones. Currently, I am considering the following milestones for 2021 and 2022:

Each rectangle represents a milestone. The rectangle at the top left represents the current Centurial version, v1.18, and directly below that is v1.19 that will be published next week.

The arrows in the diagram represent dependencies between the milestones. Work on a milestone can only be started if all milestones it depends on are completed first. The grey rectangles represent refactoring milestones that in itself add no new value fo the user, but are necessary for the milestones that depend on it.

The following is a list of short descriptions for each of the milestones:

centurial.net website
Account Management (Website) Upgrade the website with an account page for each user. Enable the user to change their name, username and country. Implement a process to reset a forgotten password.
Forum (Website) Add a forum to the Centurial website that allows Centurial users to ask questions and to share knowledge and experience.
Ticketing system (Website) Add a ticketing system to the Centurial website, allowing users to request features and monitor the planning and progress of their requests. Connect the ticketing system to the release history.
Extensions I
Events & Anecdotes Promote events to be an entity like persons and relationships. Add support for multiple occurrences of an event, for example for marriage banns. Extend the list of supported event types to include other religions as well. Allow the user to create custom event types. Support adding anecdotes to events. Add all events to the timeline.
Roles & Relationships Capture the roles of persons within an event, like witnesses of a wedding. Allow additional relationship types in the Information Panel, like friend or cousin. Find a way to display these roles and relationships in a useful way; perhaps introduce a social network diagram?
Portraits & Photos Add support for the concept of identification: for portraits, it is not only relevant who supplied the photo (the source), but also who identified the person in the photo. Add portraits to the Person View. Improve the support for photos and photo albums. Perhaps introduce a new Photo View. Connect photos to events.
Research Log Add a research log to capture what additional research the user would like to do, and what research the user has already done. Export research plans per archive.
Extensions II
Refactoring (.NET Core) Start migration from .NET Framework to .NET Core. Move from XML to JSON for internal storage.
Refactoring (Project & Entity) Currently, Centurial is designed to run projects up to about 3000 persons. Redesign the internal project storage scheme to allow for larger projects, and to improve performance for these larger projects.
Indirect & Negative Evidence Add support for negative evidence (compare expected evidence to actual evidence). Support negative findings based on the research log. Implement additional indirect evidence rules.
Places & Geography Promote places to be an entity like persons, relationships and events. Add support for maps. Allow entering claims for places. Add a Places List to the main window. Add a Map View, using OpenStreetMap or Google Maps, allowing to view and correlate places. Improve the conclusions of place facts by using available evidence on places.
GEDCOM & Onboarding Improve the support for importing research from other genealogy applications through GEDCOM. Speed up the GEDCOM import. Actively help new Centurial users to migrate research data by creating to-do items in order to improve the quality of their research.
Sources
Refactoring (Sources) Refactor the handling and storing of source details in Centurial.
Web Scrapers Refactor the code for the web scrapers. Add specific web scrapers for the top 20 most used websites. Improve the testing of the web scrapers in order to detect changes to the websites automatically.
Source Dialog & Wizard Refactor the Source Dialog into a Source Wizard, further support the user in determining the correct provenance and repository of a source. Perhaps move the source layout details from the Source Dialog to the Source View, as the Source View also displays the documents that contain these details. Connect some of the source layout fields with the claims and events within the source.
Source References Translate source references into the selected language. Improve the Source Explorer by displaying the parts of the source reference that are specific to that citation in bold. Improve the export of source references to GEDCOM.
Reports
Refactoring (Culture) Refactor all culture-related code from being User Interface specific to being more generic. Allow for more specific translations for subcultures, like en-US vs. en-GB. Preparing for rendering reports and other forms of output.
Reporting Introduce a first batch of reports in Centurial. Determine the types of output. Websites? PDF? RTF? Perhaps introduce a report scripting language so users can design and tweak the reports to their liking? Implement data views to limit reports to a specific part of the project. This first version to contain reports will be labelled v2.0.

A minimal planning

Interestingly, all these dependencies do not enforce a single possible development path. Instead, the milestones can be implemented in many different orders. For me personally, at least 2 milestones are fixed in time:

  1. In the first half of 2021, I will be working on the Events and Anecdotes milestone, as this is a much-requested feature. An interesting part of this milestone is, that is actually about expanding the scope of Centurial a bit. Until now, Centurial is based around persons and relationships; the user first adds these entities to the Information Panel, then adds claims for them. Then after correlation, the user is able to view all conclusions in the Person View or the Relationship View.
    With this milestone, events are actually promoted into a third entity, just like persons and relationships! And then later in the year, I'll be doing the same for places as part of the Places & Geography milestone.
  2. In the second half of 2021, I will be working on the Reporting milestone. Ever since I started work on Centurial, the focus has been on entering the data in an evidence-based way. But now Centurial has reached the point where we can start thinking about ways to output the conclusions and evidence into nice reports. Reports have always been an integral part of the Centurial design, there simply wasn't time to start work on it before. To mark the occasion of output finally becoming part of Centurial, the first version to include reports will be labelled Centurial v2.0.

May I have your votes, please?

The remaining milestones are probably too much work for 2021 alone, and will require development efforts in 2022 as well. So the important thing here is to determine the order in which these milestones will be completed, and that's where you come in. I'm very interested to know what you, the Centurial user, would like me to work on first. And that's why I would like to invite you all to vote, by simpling sending me an e-mail or by using the contact form. Just send me a top 3 list of milestones that you would like to see completed first, or a top 5, perhaps with a bit of explanation if you like. In a couple of weeks, I'll be publishing the resulting milestone planning based on this poll!

And the results are... (a 12 February 2021 update)

And so a lot of votes have been coming in during the 2 weeks after this blog was posted! Some of you sent top 3 or top 5 lists, others delighted me with a detailed top 9. Some of you answered compactly, others explained their reasoning in great detail, which was very insightful. Thank you all!

And so I came up with this little calculation, where each voter has exactly 1 point to distribute. If you sent in a top 3 list, your number 1 choice will have gotten 3/6 of a point, your number 2 received 2/6 of a point and your number 3 got 1/6 of a point. If you sent in a top 9 list, you'll have awarded 9/45, 8/45, 7/45, ..., 2/45 and 1/45 of a point respectively. This way, each user has had the same overall impact on the final results.

After doing the maths, these are the final results of the 2021 Roadmap Poll:

2021 Roadmap Poll
1. Places & Geography 21.7% 9. Source Dialog & Wizard 3.8%
2. Roles & Relationships 20.6% 10. Web scrapers 3.7%
3. Events & Anecdotes 11.1% 11. Forum (website) 3.5%
4. Reporting 8.2% 12. GEDCOM & Onboarding 2.0%
5. Research Log 8.0% 13. Source References 1.2%
6. Portraits & Photos 5.8% 14. Repository Management 1.0%
7. Refactoring (Project & Entity) 4.8% 15. Ticketing System (website) 0.0%
8. Indirect & Negative Evidence 4.5%

The number one conclusion: the first thing you guys now need is to be able to manage places, roles and events in a more detailed way. Together, these milestones make up for more than half of all your votes!

Other insights I gained from this poll:

  • Reporting is important (it's number 4 in the poll), but in no way near as important as managing places, roles and events.
  • The research log ended up way higher than I expected.
  • The fact that the project size is currently limited to about 3000 persons (which is the sole reason that users voted for the Refactoring (Project & Entity) milestone) is mostly an issue for new users, as they start off by importing their existing research into Centurial. After that, most users come to the conclusion that they prefer to start over entirely using Centurial, and so this is not as much an issue for existing users.
  • The milestones regarding sources (Source Dialog & Wizard, Web scrapers, Source References) are not requested as much, and they are way more important to new users than they are to existing users. This is probably because this part of Centurial has quite a steep learning curve.
  • Several users pointed out they need to be able to manage their repositories more easily, and so I've added a milestone: Repository Management.

Now, what does this all mean for the next steps for Centurial? Well:

  • I'm happy to report that work has already been started on the Events & Anecdotes milestone, for 2 reasons: it's at number 3 in the poll, and more importantly, it paves the way for the changes required for places and roles, which are number 1 and 2. Also, some of the planned refactoring work is already underway, specifically the part that is needed for Places & Geography to be implemented.
  • Events & Anecdotes will probably be v1.20, unless it takes too long to complete the refactoring work, in which case I will move it to v1.21, releasing some more user requests in v1.20 first.
  • After the events, my attention will turn to the Roles, as they are conceptually closer to the events.
  • Then focus will be directed towards the Places & Geography milestone, and because of the size of it, I might decide to spread it out over 2 releases.
  • After that, I'm planning to work on the refactorings for projects, sources and culture, as these are needed for most of the remaining work. Then, depending on how much of 2021 is left, work will concentrate first on either reporting, negative evidence or the source-related milestones.
  • I will be working on the Centurial website and the forum in parallel with the above changes in Centurial, as a bit of light snack, with the initial emphasis on an improved design of the website and on account management.
  • And finally, I'm saving the Research Log and Portraits & Photos milestones as surprise releases in between, as they are fun little releases that can be done rather independently of all the other milestones.

I've included an updated dependency graph in the roadmap that reflects the insights gained through this poll. Thank you all for voting!