{"ref":"artifact:abapinho-abaptimemachine","page":"/artifacts/abapinho-abaptimemachine","json":"/artifacts/abapinho-abaptimemachine.json","generated":"2026-10-27","drafted_with_ai":true,"entity":{"id":"abapinho-abaptimemachine","name":"abapTimeMachine","artifact_type":"app","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"Shows a whole ABAP object (a class, a function group and the rest) as it stood at a past version, instead of ABAP's native include-by-include compare.","short":"Shows a whole ABAP object as it stood at a past version","what_it_solves":"ABAP's own versioning shows one include at a time, so there is no native way to see how a whole class or a whole function group stood at a given time, and the maintainer names finding out which user was responsible for which change as the second problem. `ZTIMEMACHINE` answers both: for a chosen version it reconstructs the object as a whole, and it partially emulates `git blame` by showing the revision and author that last modified each line. It needs ABAP 7.40 or higher and [abapGit](artifact:abapgit-abapgit), and its diff algorithm and syntax highlighter are partly copied from abapGit's own code. The install and usage steps are in the project's Wiki rather than the README."},"links":{"repo":"https://github.com/abapinho/abapTimeMachine"},"type_properties":{"placement":{"value":"in-host","sources":[{"url":"https://github.com/abapinho/abapTimeMachine","title":"abapinho/abapTimeMachine — README, Requirements","checked":"2026-10-19","quote":"## Requirements\n\n* ABAP Version: 7.40 or higher\n* [abapGit](https://abapgit.org)"},{"url":"https://github.com/abapinho/abapTimeMachine","title":"abapinho/abapTimeMachine — README, How","checked":"2026-10-19","quote":"Please read the [Wiki](https://github.com/abapinho/abapTimeMachine/wiki) to learn how to install and use `ZTIMEMACHINE`."}]},"distribution":{"value":["abapgit"],"sources":[{"url":"https://github.com/abapinho/abapTimeMachine","title":"abapinho/abapTimeMachine — README, Requirements","checked":"2026-10-19","quote":"## Requirements\n\n* ABAP Version: 7.40 or higher\n* [abapGit](https://abapgit.org)"}]}},"identity":{"license":"MIT"},"source_available":true,"provides":[{"capability":"capability:abap-code-review","what_it_does":"Displays a whole class, function group or similar object as it stood at a chosen past version, and a per-line git-blame-style view of the revision and author that last changed it.","sources":[{"url":"https://github.com/abapinho/abapTimeMachine","title":"abapinho/abapTimeMachine — README","checked":"2026-10-19","quote":"provides a simple way to look at past versions of classes, function groups, etc, as a whole"},{"url":"https://github.com/abapinho/abapTimeMachine","title":"abapinho/abapTimeMachine — README","checked":"2026-10-19","quote":"it also partially emulates [git-blame](https://www.git-scm.com/docs/git-blame) by showing \"what revision and author last modified each line of a file\" for any given version"}]}],"requires":[{"ref":"artifact:abapgit-abapgit","for":"Listed as a requirement beside the minimum ABAP release, and the route the repository's objects reach a system by.","requirement":"required","sources":[{"url":"https://github.com/abapinho/abapTimeMachine","title":"abapinho/abapTimeMachine — README, Requirements","checked":"2026-10-19","quote":"## Requirements\n\n* ABAP Version: 7.40 or higher\n* [abapGit](https://abapgit.org)"}]}],"contributors":["actor:larshp","actor:lingcsun","actor:nununo"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"maintainers":["actor:abapinho"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"3 contributors, org-owned"},{"label":"Repository","tier":"poor","evidence":"pushed 2023-07, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":"SAP_BASIS 750 and up, in its abaplint config: includes every maintained line to 816"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"fair","evidence":"README 1 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":68,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":68,"forks":12,"open_issues":19,"archived":false,"pushed_at":"2023-07-31","license_spdx":"MIT","org_owned":true,"default_branch":"master","created_at":"2019-11-19T16:41:35Z","open_prs":1,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":1398,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2019-11-19","last_commit":"2023-04-25","commits":92,"contributors":3,"readme_path":"README.md","readme_sha":"dabb8c4ef7bc9f38702ee801dea077e84caf427a","repo_read":"2026-10-24","abap_syntax":{"repo":"abapinho/abapTimeMachine","file":"abaplint.json","url":"https://github.com/abapinho/abapTimeMachine/blob/HEAD/abaplint.json","version":"v750","floor":"750","checked":"2026-10-26"}},"edges":{"maintainers":[{"ref":"actor:abapinho","name":"Abapinho","json":"/actors/abapinho.json"}],"contributors":[{"ref":"actor:larshp","name":"Lars Hvam","json":"/actors/larshp.json"},{"ref":"actor:nununo","name":"Nuno Godinho","json":"/actors/nununo.json"},{"ref":"actor:lingcsun","name":"Valar","json":"/actors/lingcsun.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}