Template talk:Repo link

From FlightGear wiki
Revision as of 11:01, 16 September 2015 by Johan G (talk | contribs) (→‎Todo list: Typo; There is a need for a few more parameters in some of the templates.)
Jump to navigation Jump to search

Supporting different protocols

Specifically for git:// - which will help centralize all repo URLs - e.g. to replace all URLs with a corresponding template, instead of having git://git.code.sf.net/p/flightgear/simgear everywhere - we should probably introduce a proto parameter that defaults to http/https and which can be overridden so that "git" can be specified. We want to avoid having to manually update all related articles in the future (if/when another repository needs to be moved) - e.g. [1].

--Hooray (talk) 17:10, 4 April 2015 (EDT)

Sorry that I do not understand you, but do you mean the URL in the template or URLs spread out in articles literally?
Johan G (Talk | contribs) 18:34, 4 April 2015 (EDT)
the latter - currently, we cannot use either of those templates to update the "building FG" docs accordingly, many of which contain now wrong links to the repositories - especially those using the git protocol - so it would be better to either have 3 templates, or one parameterized template returning the requested repository URL, including the proper format - so that we can use {{SimGear repo|proto=git}} or something like that. Otherwise, we will have to update dozens of references manually whenever there's a similar change (thanks for your recent changes though!). Just imagine, repositories would have to change again some time soon - we would have to manually update all URLs again. So let's better use a template for such things, analogous to how the "Next Newsletter" template serves as a "pointer" and can be easily changed, without having to update any locations using it. --Hooray (talk) 18:48, 4 April 2015 (EDT)

Ah, I think I get it now. In other words {{repo link}} is just as much maintenance as having bare URLs, but if adding more specific links, like your {{SimGear repo}} example the maintenance would more or less be only changing that template.
If so that is one case where a definitively see a meta template used by other link templates as useful. The repo specific templates would in this context use {{repo link}} to simplify them.
Repo specific links could also be more tailored to their needs, for example possibly using unnamed parameters for the parameters that are more or less always used (in essence less typing, I'm a lazy dude ;-) and have parameters more relevant to the context, for example {{FGAddon repo | B-1B | Systems/b1b-autopilot.xml | rev=3}}.
Johan G (Talk | contribs) 12:10, 5 April 2015 (EDT)
correct, I am basically thinking along the lines of using/generalizing existing templates to generalize our "hard-coded" (for the lack of a better term) repository URLs in pretty much all wiki articles - so that updating repository URLs in the future will be mainly a matter of changing 2-3 templates. Which is why I suggested to also add support for different protocols, so that those templates can also be used for instructions on cloning/pulling using non-default (non-http) protocols. This would also allow us to introduce meta templates for document clone/update/pull instructions using a single template for different front-ends - possibly even including annotated screen shots. We kinda started preparing this a while ago by introducing templates like these:
* http://wiki.flightgear.org/Template:Git_clone
* http://wiki.flightgear.org/Template:Git_checkout
* http://wiki.flightgear.org/Template:Git_push
Once we adapt the new repo link template, we could easily use that for also maintaining everything easily. And the corresponding clone/checkout/push and pull templates could also contain instructions for different front-ends (think git command line vs. TortoiseGit), to help generalize our docs, especially for people on Windows/Mac OSX not as familiar with CLI environments.--Hooray (talk) 12:59, 5 April 2015 (EDT)

Also see the two build server related edits below:

We should ideally come up with templates for encapsulating such things, so that there's only a single place that needs to be maintained/edited if/whenever such URLs change.--Hooray (talk) 11:25, 16 June 2015 (EDT)

FlightGear has completed the move from Gitorious

Cquote1.png FlightGear has completely moved all its gitorious based material over to< sourceforge. But it's nice to know a historical record will remain at gitorious.org as well as several other public locations not to mention on a myriad of personal computers.

Copied from this edit.

Johan G (Talk | contribs) 10:54, 18 April 2015 (EDT)

Todo list

Note  These proposals are out of date. See subsequent discussion instead.

A list to record changes to repository link templates. Feel free to contribute.


  • Meta-template: {{Repo link}}
  • Sub-templates
    • {{Source repo}}
    • {{Simgear repo}}
    • {{Fgdata repo}}
    • {{Aircraft repo}}


Parameter name Description Type
Link modifiers
site Specifies the site to link to Mandatory
proj Project name Mandatory
type Type of repo Optional
brt Branch, revision, or tag Optional
path Path to file Optional
lines Line(s) to link to Optional
subdom Subdomain of gitorious.org Optional
view View Optional
proto Protocol Optional
Label modifiers
text Text to use as label Optional
pre Text to replace project name Optional
link Return plain-text link Optional
plain No formatting on link Optional

Link styles

  • {{Repo link}}
    • Normal
      • flightgear/flightgear/src/Scripting/NasalSys.cxx (SourceForge)
    • No path
      • flightgear/flightgear/master (SourceForge)
    • Download link
      • flightgear/flightgear/archive/master.zip (SourceForge)
    • Pre arg
      • FG source/src/Scripting/NasalSys.cxx (SourceForge)
    • Plain
      • flightgear/flightgear/src/Scripting/NasalSys.cxx
    • Protocol
      • RO (read-only)
        • git://git.code.sf.net/p/flightgear/flightgear
      • http
        • http://git.code.sf.net/p/flightgear/flightgear

To do

  • {{Repo link}}
    • Protocols (e.g., git://, see above)
    • Add Mercurial to repo types
    • GitLab option
    • Standardize label style (when label is not customized).
    • Download links

Started by Red Leader (Talk, contribs)

I think those are all good ideas. I added {{readme file}} the other day. As I was just looking at {{repo link}} to add links to relevant source code files related to the Conditions article I got reminded by the beauty of less typing. ;-)
In addition I was also reminded about that a more specific template is easier to update when a repository move. Consider for example if {{repo link}} would be used as I mentioned above, linking to a source code file related to an article. If that repository would be moved again or get another URL structure all links to that repository would have to be updated.
A more specific link at the other hand, say {{simgear file}} would only require that specific template to be changed. In addition all links to any of those source files would have the same style, which to some extent will making them more intuitive.
In essence, more specific link templates should:
  • Require less typing
  • Require less maintenance
  • Give a more consistent style
Johan G (Talk | contribs) 17:06, 20 May 2015 (EDT)

Some more thoughts on the sub-templates for links to source files in the git repos, and one for the FGAddon svn repo.
  • Source file/directory templates:
    • Should we use one more or an entirely different meta template, say {{source file}}, to give them a consistent style, for example prefix (FlightGear, SimGear, FGData, etc), showing/not showing full path, etc), instead of doing that in each template?
    • Always or often used parameters should probably not be named parameters
      • I guess always and often used parameters are path and commit
      • Other parameters?
    • Template names, how about:
      • {{flightgear source}}
      • {{simgear source}}
      • {{fgdata source}}
    • Should default to root directory of repo rather than throw an error.
  • Aircraft repo template(s) (slightly off topic):
    • How about {{fgaddon aircraft}}
    • Should default to ..trunk/aircraft/ rather than throw an error.
  • Aircraft URL templates:
    • Needed for a completely different purpose than source links, namely URLs in infoboxes.
    • Would lessen maintenance considerably if a repo/hangar moves.
    • How about {{fgaddon aircraft url|aircraft|revision}}
    • I guess in the same way link templates for other common repos/hangars are added, for example:
      • {{fgmembers aircraft url}}
      • {{helijah aircraft url}}
      • {{fguk aircraft url}}
    • Big question: Download URL or info page URL?
    • When given no params: Link to root directory/hangar main page or throw an error?
  • A category for the templates say Category:Repository link templates with templates and meta templates could be a good idea.
Why do I argue for always or often used parameters to be unnamed parameters? And only lowercase names for the templates? Quicker typing. Simple as that. At least with these templates.
If you guys think this would be ok I could start adding templates right away, probably starting with aircraft URL templates.
Johan G (Talk | contribs) 06:27, 26 May 2015 (EDT)
Hi Johan,
Sorry for the delayed reply.
Just checking, am I right in saying that you're suggesting that there should be a template for Git repos and a separate one for FGAddon (an SVN repo)? It's just a bit hard to read what you mean above. Anyway, apart from that, here's my feedback:
  • Oft used parameters: Using unnamed parameters is good idea. The parameters that would commonly be used would be site, proj, and path. I don't think commit is used as much, though.
  • Defaulting: Where possible, it's probably best to use defaulting, rather than throwing errors.
  • Aircraft URL templates: Another good idea.
  • New category: Agree.
  • Upper/lowercase names: Yeah, we should use lowercase names, especially in the documentation.
  • Name suggestions I think repo instead of source should be used. It's less typing and a bit more descriptive. Also, {{fgaddon repo}}? URL template names are fine to me, though.
Also, do you have any suggestions for link styling above?
Red Leader (Talk, contribs) 06:03, 31 May 2015 (EDT)
Sorry for the even later reply.
Often used parameters and name suggestions
I think that site and path parameters would be superfluous, also how about using file instead of repo. Instead of pointing to the whole of the repo usually will point to a specific file or directory within a repo. As you say the commit parameter would only be used sparsely, though I think it might be good to have at times.
In essence I am suggesting {{flightgear file|path|commit}}, {{simgear file|path|commit}} and {{fgdata file|path|commit}} for links to source files (and directories). The path parameter would be what follow after flightgear/src/, simgear/simgear/ or fgdata/.
Yep, it is definitively better to default than trow an error.
Aircraft URL templates
Good point about automatic downloading. I did not think of that. Better link to the info pages.
Link styling
Interesting problem. I have considered both something resembling the path in a local file system or some abbreviated variant, like flightgear/src/Time/TimeManager.cxx, simgear/simgear/magvar/coremag.cxx and fgdata/Nasal/view.nas, or flightgear/Time/TimeManager.cxx, simgear/magvar/coremag.cxx and fgdata/Nasal/view.nas. The advantage with having them look like a file path is to help those using Git to find the file in their local clone faster. Then there is also the issues of whether only the path parameter should be used for the link to the file while there could be an explanatory link preceding it, for example like SimGear/magvar/coremag.cxx, and whether or not to use mostly lowercase the file path like label or the case used sometimes otherwise, in essence flightgear, fgdata and simgear, or FlightGear, FGData and SimGear.
I am going to suggest abbreviated paths but camel case repo names, like SimGear/magvar/coremag.cxx, though I am not convinced it is the best way.
Johan G (Talk | contribs) 17:34, 10 September 2015 (EDT)
Personally, I would prefer all-lowercase, abbreviated links. Camel-case repo names doesn't look quite right in the context to me. However, I agree with everything else you've said. I think that having a central template ({{repo link}}) is not required now. If ever the location of fgdata, FGAddon, etc. changes again, it still wouldn't be too hard to change the location in a handful of templates instead of one central template. Separate templates would also be much simpler than a central one and therefore easier to maintain.
So, apart from link styling, I think we can start implementing these new templates:
  • {{flightgear file}}
  • {{simgear file}}
  • {{fgdata file}}
  • {{fgaddon aircraft}} (right name?)
Red Leader (Talk, contribs) 08:45, 11 September 2015 (EDT)
  • Good point about lowercase vs. camel-case. That was one of the things I was more hesitant about.
  • In retrospect I think {{fgaddon aircraft url}} may be a better name, as it renders only an url. (Though it is an awfully long name, as well as the other aircraft repo URL templates. I wonder if "aircraft" is needed?)
  • While the repo link template might not be needed (at least for official repos), a styling template will help keep the styling consistent and may help related maintenance.
How about something like {{source file|base-url=|base-label=|commit=|commit-label=|path=}}? (I suggest named parameters in that one to aid maintenance. It will rarely if ever be used in any other place that those three templates.)
It does not have to be there from the beginning and can be added at a later point (I guess that is the wiki equivalent of refactoring ;-) ).
Johan G (Talk | contribs) 15:33, 11 September 2015 (EDT)
Went ahead and added {{flightgear file}}.
Johan G (Talk | contribs) 16:51, 11 September 2015 (EDT)
I noted that {{readme file}} have a nopath= parameter stripping off the path in that template if empty. A similar effect can be added to {{flightgear file}} using the {{#tileparts: }} parser function without having to introduce a file parameter. An elegant solution if needed.
An even more elegant way could be to use {{#tileparts: }} to only show the last n elements.
Johan G (Talk | contribs) 17:12, 11 September 2015 (EDT)
  • I think {{fgaddon url}} should be fine as it is about aircraft anyway. However, what if we want to link a certain file in the aircraft's directory, e.g., Scripted AI Objects#Aircraft (this would probably also go for an FGMEMBERS template)?
  • A styling template would be a good idea in future. I have one query though: what would be the difference between base-url= and base-label=, and between commit= and commit-label=?
  • nopath= is also a good idea.
Red Leader (Talk, contribs) 16:03, 13 September 2015 (EDT)
  • What about doing something similar to the new templates, in essence {{fgaddon url|aircraft|path|commitrevision}}. Of course for example FGUK's and Helijah's hangars will not handle path and commit as those are not repos.
The aircraft repo/hangar templates will probably differ somewhat in implementation, but hopefully for a wiki editor they will be rather "orthogonal" (in the sense that they would be usable in a way consistent with similar templates).
I guess for aircraft repos, as opposed to hangars, the template with only the aircraft parameter given should point to that aircraft directory or submodule. It would also seem reasonable that a template with no parameters given should point to the repo or hangar top directory, info page or something similar.
  • The way I recall having the base-url= thought up would be as the part of the URL preceding the path given in path=. Similarly base-label= would be the part of the label preceding the path.
I am not really sure how (and why) I imagined that the commit reference would be different in URL and label. That would probably not (ever) be needed and only confusing if used.
Johan G (Talk | contribs) 15:50, 15 September 2015 (EDT)
I have noted that there is a need to be able to link to the tarballs. I suggest adding a tarball= property that when not empty will link to the tarball download. (Also mentioned on Template talk:Fgaddon url).
Johan G (Talk | contribs) 07:01, 16 September 2015 (EDT)
{{simgear file}} done. Done Done
Red Leader (Talk, contribs) 08:04, 14 September 2015 (EDT)
{{fgdata file}} done. Done Done
Red Leader (Talk, contribs) 09:13, 14 September 2015 (EDT)
Just remembered a somewhat useful tool when looking for external links to repos to replace with these templates: Special:LinkSearch. Its main drawback is a large one though: It only look for domain names, not paths on a web site. *sigh* At least there is less than 2000 links to SourceForge, which by far have most links (though most of them developer mailing list posts).
Johan G (Talk | contribs) 16:35, 15 September 2015 (EDT)
I have noted that the repository templates also may need a line= and probably also a label= parameter. Many articles have links to particular line in a source file and some have links where even a nopath=1 would currently take up too much space (in particular Canvas MapStructure Layers).
In summary there seem to be a few things we have not thought of yet.
Johan G (Talk | contribs) 07:01, 16 September 2015 (EDT)