{"action":"created","issue":{"url":"https://api.github.com/repos/larshp/abapGit/issues/369","repository_url":"https://api.github.com/repos/larshp/abapGit","labels_url":"https://api.github.com/repos/larshp/abapGit/issues/369/labels{/name}","comments_url":"https://api.github.com/repos/larshp/abapGit/issues/369/comments","events_url":"https://api.github.com/repos/larshp/abapGit/issues/369/events","html_url":"https://github.com/larshp/abapGit/issues/369","id":181208709,"number":369,"title":"Namespaces / naming conventions for projects","user":{"login":"flaiker","id":5270359,"avatar_url":"https://avatars.githubusercontent.com/u/5270359?v=3","gravatar_id":"","url":"https://api.github.com/users/flaiker","html_url":"https://github.com/flaiker","followers_url":"https://api.github.com/users/flaiker/followers","following_url":"https://api.github.com/users/flaiker/following{/other_user}","gists_url":"https://api.github.com/users/flaiker/gists{/gist_id}","starred_url":"https://api.github.com/users/flaiker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flaiker/subscriptions","organizations_url":"https://api.github.com/users/flaiker/orgs","repos_url":"https://api.github.com/users/flaiker/repos","events_url":"https://api.github.com/users/flaiker/events{/privacy}","received_events_url":"https://api.github.com/users/flaiker/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-10-05T16:50:56Z","updated_at":"2016-10-24T19:12:53Z","closed_at":"2016-10-24T19:12:53Z","body":"Looking through this project one topic I have so far not found any discussion on is namespaces and naming conventions. Not in regards to source code but to the development objects themselves. If I start a project which I want to share as freely available to install on anyone's system (and to contribute to) I also want to make sure the objects do not conflict with any of the ones already on the system. Not sure how ababgit handles conflicts right now.\r\n\r\nThis seems to be especially problematic in SAP development because packages do not restrict the namespaces of the objects they contain but rather every object has to be named in a unique way. Renaming objects and their uses is also extremely painful / impossible (dynamic programming). Another restricting factor is the limit length object identifiers (think of database tables).\r\n\r\nThe *normal* / proposed solution by SAP of reserving namespaces (/namspc/) seems to not be an option in this regard. People wanting to contribute to a project cannot do it because the namespace is reserved (and all their changes would be modifications). So only the customer namespaces Z and Y can be used which customer development on the system as well as all abapGit projects (!) share. With an increasing amount of projects collisions in namespaces seem to be unavoidable.\r\n\r\nSome solutions I thought of (none of which seems incredible practicable):\r\n  1. Reserve top level package names at a central registration and use the package hierarchy as part of every objects name\r\n    - For example I reserve ZFL and could have a project layout like this:\r\n      - ZFL (top level \"vendor\" package)\r\n        - ZFL_PLM (project package)\r\n          - ZFL_PLM_MODELS (subpackage in project)\r\n            - ZCL_FL_PLM_MODELS_ABST_PLANE (class)\r\n            - ZCL_FL_PLM_MODELS_CARGO_PLANE (class)\r\n          - ZFL_PLM_DICT (subpackage in project)\r\n            - ZFL_TAFLIGHTS (database table)\r\n            - ZFL_TABOOKS (database table)\r\n            - ZFL_L_CARRIER (data element)\r\n          - ZFL_PLM_UI (subpackage in project)\r\n            - ZFL_PLM_UI_ORDER (program)\r\n            - ZFG_FL_PLM_UI (function group)\r\n            \t- ZFM_FL_PLM_UI_PICK_PLANE_POPUP (function module)\r\n    - Problems:\r\n      - Things like ZFI, ZSD, ZMM etc. could not be used either\r\n      - Object names get really long as they need to contain the entire package hierarchy (and the length is very much so limited)\r\n      - Moving objects to other packages is no longer possible (as they would have to be renamed)\r\n\r\n  2. Use the layout above but instead of reserving prefixes all abapGit projects have the same prefix and a number (or hash or whatever) after it that is assigned by a central entity\r\n    - Example:\r\n      - ZABG10C7 (project package)\r\n        - ...\r\n    - Problems:\r\n      - You cannot make out at all by the name what the development objects in the package are about\r\n  3. Reserve a namespace for abapgit projects and use the logic above within it\r\n    - /ABGIT/FL_PLM\r\n    - -> even longer names\r\n    - Not sure if installation of reserved namespace development rights is even possible on an unknown number of systems\r\n\r\nNot a big fan of any of these.\r\n\r\nSolving this problem is in my opinion a requirement for package management / dependency management ( #217 ).\r\n\r\nAny thoughts / ideas on this?"},"comment":{"url":"https://api.github.com/repos/larshp/abapGit/issues/comments/255836629","html_url":"https://github.com/larshp/abapGit/issues/369#issuecomment-255836629","issue_url":"https://api.github.com/repos/larshp/abapGit/issues/369","id":255836629,"user":{"login":"flaiker","id":5270359,"avatar_url":"https://avatars.githubusercontent.com/u/5270359?v=3","gravatar_id":"","url":"https://api.github.com/users/flaiker","html_url":"https://github.com/flaiker","followers_url":"https://api.github.com/users/flaiker/followers","following_url":"https://api.github.com/users/flaiker/following{/other_user}","gists_url":"https://api.github.com/users/flaiker/gists{/gist_id}","starred_url":"https://api.github.com/users/flaiker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flaiker/subscriptions","organizations_url":"https://api.github.com/users/flaiker/orgs","repos_url":"https://api.github.com/users/flaiker/repos","events_url":"https://api.github.com/users/flaiker/events{/privacy}","received_events_url":"https://api.github.com/users/flaiker/received_events","type":"User","site_admin":false},"created_at":"2016-10-24T19:12:53Z","updated_at":"2016-10-24T19:12:53Z","body":"Thanks for your thoughts. I agree in long term SAP will have to be the one to provide a _clean_ solution for this.\r\n\r\nFor reference, here are some other projects on this topic:\r\n- [Namespace Exchanger for SAPlink at the Exemplary Example of abap2xlsx](https://blogs.sap.com/2015/08/11/abap2xlsx-namespace-exchanger-for-saplink-at-the-exemplary-example-of-abap2xlsx/)\r\n- [Namespace Refactoring in ABAP](https://blogs.sap.com/2013/03/06/namespace-refactoring-in-abap/)"}}
{"actor":{"display_login":"flaiker"}}