-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define optimal serialization format and variations (dropping or reviving the 2.9.2 format) #116
Comments
Dunno what |
JabRef is BibTeX conform. There are habits only :) I think, we should enable readability as the I tend to like the new format. We can discuss whether we remove the casing again. I got used to it, but no one else offers such a format. Maybe we should start a wiki page with all possible formats and vote on the preferred format and implement that. Configuration optionsSee Options -> Preferences -> File -> "Field saving options"
Furthermore, one can configure the ordering of the entries: See "Database properties": Save as configured globally, original order, order as specified. Should we drop all these options and define "the one and only" serialization? What about being as minimal intrusive as possible? For instance, when a group of researchers uses different tools to manage their bibliographies? |
Sharing a file while using a revision control software causes trouble if the Field saving options are not identical among users. |
Considering the configuration options you mentioned, Olly, i would suggest to remove (most of) them and just define one format for JabRef that suits our ideas and concept. This removes the problems that mlep described. |
Well, "one format [...] that suits our ideas and concept", may not suit users... |
I think, this is the discussion GNOMEv2 vs. GNOMEv3, where they removed various configuration options. I see the following options: A) Remove all configuration options and introduce a "one size fits all" format A) This increases testability (as less configuration combinations have to be tested) and eases sharing of BibTeX files across JabRef users. In all cases, we should check whether other BibTeX-based managers or compatible. We can also neglect them and assume that other BibTeX managers are used seldomly. The Microsoft Office way ^^. |
I agree with you all, there is no wrong or right here. My main argument is that
Therefore my personal principles
|
To me, C) should not be implemented. When a new version (of a freely available software) is released, it is the responsibility of the user if he/she want to use the old version. |
Regarding C), I get more bug reports than usual, which is an indicator that it is important for our users. See sf feature request #864 and related bugs. I can be the bad guy and just say "We don't have resources for that. If someone volunteers, we will include the patch.". Or we could collect donations for it. Or we should put it in the survey as option for next development (what we currently have)? FLOSS COACH says: "some people are direct, critical or seem to be rude." 😎 |
Well, if C) is a feature requested by user, I guess it should be kept... |
I'll throw in my hat for option A. From my point of view, JabRef has gotten so complex and ill-structured that there's a considerable risk that it will die because no one can maintain or extend it anymore. Following this logic, anything that reduces complexity, even if we lose features, is desirable. |
Regarding A). If we follow that, we should use the sort order given by the biblatex manual (Sections 2.1.1 and 2.1.2). We should also go back to field names written in lowercase letters. OK, this sort odering is also not always optimal: in |
Regarding the field ordering, I guess the btxdoc reference available here is the ultimate source. Sect. 3.1, p. 8, states that "The fields within each class (required or optional) are listed in order of occurrence in the output, except that a few entry types may perturb the order slightly, depending on what fields are missing." Hence, I would suggest that we hard code the order defined in the manual (easy, can be done during the definition of bibtex entries). Unknown fields can be sorted alphabetically after known fields. Btw.: where do entry types, such as "patent" or "periodical" come from? |
I am also for A). The reason i made some of the options configurable was to support old use of JabRef and keep the option to decide if such "pretty" formatting would eventually be accepted. I am using VCS for bibliographies and papers and I also share bibliographies between papers, e.g. using GIT modules. Therefore a unified "pretty" formatting always contributed to orientation in a BibTeX files and effectiveness during changes. I would be definitely against some binary-like serialization. BibTeX is a plain/text file and should be IMHO also readable using other tools, supporting text-view only, e.g. Overleaf (where such formatting also contributes to better orientation especially in huge BibTeX files). AFAIK camel-case is not a problem in BibTeX but contributes to readability. Sorting: If the order has some compatibility issues, as Lenhard said, or some rules are saying that, e.g., My suggestion would be to remove as much as possible configuration elements and keep only those which are necessary (in my opinion none of those regarding formatting are). Maybe enable some "advanced" mode where some configuration is possible. Fix serialization supporting as much as possible readable BibTeX source. Backwards compatibility regarding this issue is in my opinion not necessary. New version can still read files produced by old versions and vice-versa. New version produces new formatting, old version old formatting. The user can decide which version (s)he will use. If used along with VCS than the will be one commit with the "JabRef upgrade" comment :-) And from that point new commits will be "pretty". |
@lenhard: About "patent" and "periodical" (but also "standard" and "electronic"), I believe they come from IEEE. See http://mirror.ibcp.fr/pub/CTAN/macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdf |
I think we are nearning a consensus :-) We will decide the issue during the next developer conference call. I largely agree with @kubovy maybe expect for:
@mlep: Thanks! We can use that guide as a reference to fix the field ordering as well. |
http://www.bibtex.org/Format/ they use for example: @string and @string -> it is case insensitive. IMHO camel-case formatting is just about how it appears to the human eye. Also there is this example:
|
Sorry for a late instep, but what about biblatex? |
@bluebirch: I'd say we treat biblatex in the same fashion as bibtex. Code-wise, this should make no difference. In JabRef's model, a biblatex entry is also a @kubovy: The parser should be able to parse the camel casing (I should write a test). The idea is to remove it when writing back the file. |
@lenhard: Totally agree. Fully satisfied with that answer. ;-) |
Since we were discussing the serialization format in a wider public in this issue, I'd like to document our decisions from yesterday's conference call here: Rationale: People are very emotional about formatting -> Modify as little as possible in the bib file For the concrete checks, see the initial post. |
Nice! |
What do you mean by default settings? By removing all configuration options, we are VCS ready. The only thing what was difficult to decide is regarding "New entries are added to the bottom of the file". This will really cause issues when two collaborators are adding entries. The decision was that we cannot assume a particular order of the entries in the bibtex file. And if we add something after the first match, that could be wrong. First match is something like: First place of bibtex key or first place when considering sorting according to author, title, year. For instance, existing keys: |
I was thinking about a way of ensuring all users have the same settings for the formatters (for example) when a file is used for collaborative work. |
Okay - Olly was faster ;-) So the only requirement is: all users should use the same (new) JabRef version. |
@koppor & @matthiasgeiger :
What if the user does not use the default formatter settings? (I am afraid it may mess up the VCS...) |
I am closing this issue, since he features discussed here have been implemented. A nice UI for save actions is still missing. Discussion concerning this UI can carry on in a separate issue: #720 |
Just for the sake of documentation. emacs does it as follows (
|
In JabRef 2.10, we introduced following new feature:
When a user collaborates with a person using an older version of JabRef, they cannot use version control properly as the serialization always changes. In version 2.11 beta 2, we offer a quick hack to go back to the old 2.9.2 behavior, which is somehow incomplete. See #10 (comment)
We can just focus on other issues and let time solve the issue or invest time to implement the old serialization again.
Related issue: #115
Request at sourceforge: https://sourceforge.net/p/jabref/feature-requests/864/
To track the progress of implementation, the consensus described below is added here.
Rationale: People are very emotional about formatting -> Modify as little as possible in the bib file
=
is appended directly to the field key. Thevalue
part is indented to one space past the longest field key name +=
(so that all values are aligned).The text was updated successfully, but these errors were encountered: