The pattern would not be that problem. Actually we used to have a very early prototype which had a very sophisticated pattern mechanism. But the problem is the de-duplication.
With a simple de-duplication random key like we add now we can generate the citation key deterministically just from the reference data. If we allow Smith99a and Smith99b we need to check potentially 10k other papers if a user changes the author. But that would not even be the hardest problem. The problem is how to assign “a” and “b”.
What if I delete Smith99a from my library and then add a new Smith99 will it become Smith99a again or Smith99c because there is already a Smith99b. No matter what we do, we will get e-mails from people telling me our software is broken
Because if we re-assign the suffixes the citations in their papers will not match anymore.
If we keep the assignment forever people will complain that there is a Smith99b without a Smith99a.
We had this for import of BibTeX files. We re-assign everything to make sure we have consistent keys without duplicates. That’s a decision we made but we can see the other side where people lose their well curated BibTeX keys.
Anyway, we hope to find a solution that will allow us to offer customizable keys which is efficient and gets all the weird edge cases right.
Any input is more than welcome!