Wanted: your wishes on managing author identity data in KDevelop

If you are a software developer who likes IDEs, please help to shape a new feature that is currently worked on for KDevelop, your attractive cross-platform IDE for currently C, C++, Python, JavaScript and PHP:

support for management of multiple author identities (name, email, …)

Please help by telling your user stories around data about your author identity in your development process. Add the things you would like to see supported (soon or one day) here:
https://community.kde.org/KDevelop/AuthorIdentities#User_stories

Other contributions to that page are welcome, too. It is a wiki 🙂
(If a wiki scares you, replying in the comments to this blog post is also fine, everything will be picked up.)

To give you an idea what kind of things are wanted, read on:

Some initial user stories

Do not get in the way:

As developer working alone on a private project, I do not want to have to deal with any identity stuff, any defaults are fine with me.

Multiple identities in same system:

As developer working with the same computer/system on different projects for different customers or different project groups, I want KDevelop to always inject the correct/matching copyright & author information on generating code from file & app templates for different projects/customers, instead of having to manually post-edit the generated code.

Multiple identities in same project:

As developer working on the same project with the same computer system both for job and privately, I want to quickly switch identity data to be used depending on whether I work for job or privately, to mark copyright of contributions accordingly.

Pick up identity on import:

As developer importing a project into KDevelop, I want to have the identity automatically derived from account/server/fetched project and have the option to create a new identity from the found data if there is none, or overwrite with an existing identity.

Highlight my contributions in VCS history:

As developer working on a project with VCS support, I want my easily see my own commits in the vcs history, e.g. by being highlighted.

Update existing identity data:

As developer working on a project, I want to have assistance when identity properties had been changed (like email address or name) and this should be reflected in all existing copyright/contributor notions of a project, where possible.

Following some more background info why work has been started on this feature:

Problem

When it comes to copyright notions in code/files and authorship/committer id in version control systems, the name and the contact information, like email address, can be a few different ones for oneself. E.g. when working in different FLOSS projects, with each email address dedicated to the project, or when working on a FLOSS project both in name of an employer, but also privately in free times.

Currently KDevelop is hard-coded to use whatever is set for the default profile of KEMailSettings when generating new code from file templates, the only place right now using authorship metadata. KMail, the well-known email client, seems to be feeding KEMailSettings via the KIdentityManagement module, but otherwise there might be no data in there. So the developer has to manually complete the fields in the generated code.

The integration of KDevelop with git also ignores the author and commiter metadata used by git for the repo. They need to be set manually and are nowhere linked to what KDevelop knows.

For a truely integrated development experience this needs to be improved.

Solution

KDevelop could know about the concept of author identity, could allow to have multiple identities available to select from for a project, and could allow plugins to make use of identity details e.g. on doing VCS commits or generating code.

Here a screenshot of some proof-of-concept code:
Draft of KDevelop settings: Configure Author Identitites

So, what do you also think in general? Anything related which is worth looking
into for this? Other comments?

16 thoughts on “Wanted: your wishes on managing author identity data in KDevelop

  1. I’d say that the balance is in having the different identities available and being able to choose among them whenever it’s used, having a default one for the session. We can even set up programatic identities, if you think that’s problematic (such as `git config user.name`).

    I’ve never been overly happy with using a system setting for this, because it’s not where I would go for these settings.

    Be careful though, you might be overengineering the problem. I wouldn’t go modifying the `git config user.name` and such and I wouldn’t try to infer things. It’s mostly used on the templates system after all, and it has UI for most of it.

    HTH

    • Thanks for the feedback.
      So far I would have thought of a global KDevelop-wide standard identity and the option to override the standard identy per project. And then perhaps even allow to enter custom data where applying identity data in tools, like code generation or vcs commits (e.g. for commiting someone else’s patch/idea, ah, needs a story).
      Question: So you would like to have a standard identity setable per session as well? To rule in-between global and project settings?

      I see you would like to be able to opt-out/opt-in for KDevelop also ruling over vcs identity data, noted as another story.

      Question: Do you mean this per repo or per-user? (So far I thought of doing it just per repo/project, as ruling the user’s global git identity data IMO might be too power-greedy, so would agree there).

  2. Very good idea. The use cases you drawn seem to cover my needs.

    About Aleix comment: while a default for a (kdevelop) session seems necessary, a specialization by project is useful too because I work in a same session on free software libraries owned by my employer that are used by work proprietary software. I could work on the free libraries as an employee at work time and as an individual on my free time.

    • Thanks for telling you could make use of it 🙂 For the “same session with different identities” I have a further question then: how would you like support for controlling the active identity in the UI?

      So far I thought of having optionally another icon tool in the upper-right main window corner, next to the “toolview area” and “working set” selectors. So one could always see the currently active identity and also quickly switch it. But that was just one quick idea, so interested in others.

  3. For me dealing with identities are are much smaller annoyance, then dealing with different coding style conventions on different projects. Maybe you could think about making these project specific too?

    • Sounds like a good idea. Everyone has a different itch to scratch, mine currently is the one I work on. Please file your need as a bug entry for kdevelop at bugs.kde.org, so it is not lost here in the comments and you know where to track and discuss your need.

    • > For me dealing with identities are are much smaller annoyance, then dealing with different coding style conventions on different projects. Maybe you could think about making these project specific too?

      Heya Fabian,

      this is already pretty easy to do in KDevelop *when* you know the feature. Check out how it’s done in our very own code base:
      https://github.com/KDE/kdevelop/blob/master/format_sources

      This file is a config file for the `kdev_format_source` executable shipped by kdevelop. It instructs which code beautifier to use for specific directories. You can make KDevelop invoke this executable inside your project by selecting the “Custom Script Formatter: kdev_format_source” in KDevelop settings.

      HTH (and yes, that needs to be documented),
      Kevin

  4. It seems that this problem is not really specific to just KDevelop. Would it be possible to tie this into KDE Activities and pick the correct identity based on the current activity, and also expose all this information to other applications?

    • I agree with your observation. Spent already some time thinking how e.g. KMail identities and the WIP KDevelop ones could be somehow stored in a shared database. And picking a standard identity from current activitity would be a good usage of that concept, indeed (of course one should be always able to pin e.g. a project to a certain identity, not to be changed by activity).
      But this is more a long term goal. First I would like some more experience with identity data.
      And given all the ruthless big data crawlers these days, having a single data store on the computer from which to simply read out all one’s identity data, without any at least simple means of access control does not sound too attractive to me. So being a bit chaotic is a small protection there for now.

  5. Just some general remark: I see that the current config page is based pretty much on the Environment Settings page of KDevelop. That dialog itself has pretty bad UX, alone that combo is pretty messy to begin with (not really clear whether you’re editing the current environment group’s name, or just typing the name for the new group, etc. pp.).

    I’d be happy to see some improvements there first before duplicating that (relatively) ill-formed config page design. 🙂

    Can’t point you to a better alternative, though. Even from other KDE applications. I don’t know one.

    • Agreed. Only copied the code for the proof-of-concept to get quickly started, because it came closest, should not mean I found it something well done 🙂

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.