{"id":14065286,"url":"https://github.com/abilian/abilian-developer-guide","last_synced_at":"2025-07-12T05:07:49.716Z","repository":{"id":28038870,"uuid":"31534521","full_name":"abilian/abilian-developer-guide","owner":"abilian","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-02T10:11:44.000Z","size":120,"stargazers_count":5,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-04T04:33:36.049Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abilian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-02T10:12:01.000Z","updated_at":"2023-04-20T02:25:31.000Z","dependencies_parsed_at":"2023-01-14T08:00:10.159Z","dependency_job_id":null,"html_url":"https://github.com/abilian/abilian-developer-guide","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-developer-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-developer-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-developer-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-developer-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abilian","download_url":"https://codeload.github.com/abilian/abilian-developer-guide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-developer-guide/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259114712,"owners_count":22807256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-13T07:04:24.605Z","updated_at":"2025-06-10T17:15:53.360Z","avatar_url":"https://github.com/abilian.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Introduction, vision and principles\n\n## About this document\n\nWe are writing an [Employee Handbook]{.title-ref}\n\\\u003c\u003chttp://en.wikipedia.org/wiki/Employee_handbook\u003e\\\u003e for our current and\nfuture developers.\n\nHere are some other similar document that have served as inspiration as\nwe wrote this documents:\n\n-   \\\u003c\u003chttps://djaodjin.com/blog/guidelines.book.html\u003e\\\u003e\n-   \\\u003c\u003chttps://github.com/thisissoon/Handbook\u003e\\\u003e\n-   \\\u003c\u003chttp://playbook.thoughtbot.com/\u003e\\\u003e\n\nThis doc is readable on\n\\\u003c\u003chttps://abilian-developer-guide.readthedocs.io/en/latest/\u003e\\\u003e\n\n### Status\n\nThis is a work in progress. Actually, what you are reading now is a very\nearly draft.\n\nEven if it was \\\"finished\\\" at some point, it should still be updated at\nleast twice a year to reflect the evolutions of our business and of our\ntechnology choices.\n\n### Why is this document public?\n\nWhy not? There are no trade secrets in this document.\n\nHere are a few reasons:\n\n-   Hopefully, it will be useful to other people / companies.\n-   By publishing it, we hope to attract like-minded developers to\n    strengthen our team.\n\n## Vision\n\n### About Abilian\n\n[Abilian](http://www.abilian.com) develops a software platform (also\ncalled Abilian), horizontal products (Abilian SBE = an Enterprise Social\nNetworking platform, Abilian CRM = a CRM platform, etc.) and vertical\nproducts (ex: our software for competitiveness clusters, etc.).\n\nThe goals for the technical team are:\n\n-   To create a useful (for us and for external users / contributors)\n    software platform. By useful, we mean that we, and others, can\n    achieve greater productivity when developing products and projects.\n-   To create successful products and customer projects based on our\n    platform. By successful, we mean that they are useful to our\n    customers, and they sell well.\n\n### Our open source projects\n\nWe are the main developers of the following open source projects:\n\n-   [Abilian Core](https://github.com/abilian/abilian-core)\n-   [Abilian SBE](https://github.com/abilian/abilian-sbe)\n-   [OlaPy](https://github.com/abilian/olapy)\n\n### Open source vs. customers projects\n\nWe are working both on public, open source, projects, and private\nprojects for our customers (usually some customizations or extensions to\nour public projects).\n\nWhen working on open source projects, we need to take a great care of\nnot just making them successful technically, but also everything that\nwill help them get other open source developers interested in the\nproject.\n\n### Languages\n\nWe expect our developers to have knowledge of the following languages:\n\n-   Python 3\n-   JavaScript (ES6 and later)\n-   HTML\n-   CSS\n-   SQL\n-   RestucturedText and Markdown\n-   English\n\n## Principles\n\nHere is a short list of principles (or list of lists of principles) that\nshould guide you when working at Abilian:\n\n-   Write code for others (including \\\"future you\\\"), not just for the\n    computer.\n\n-   Minimize all feedback loops. This includes for instance:\n\n    1.  The time it takes to run the unit test suite (ideally, no more\n        than a few seconds).\n    2.  The time it takes between a change in the code and a change in\n        the web Browser.\n    3.  The time between a customer request and the moment it can be\n        used.\n\n-   Practice Test-Driven Development (TDD).\n\n    Why? For two reasons:\n\n    1.  TDD (practiced correctly) helps come with better software\n        design.\n    2.  It give us confidence that our product work properly, and that\n        we can refactor them without fear of breaking things beyond\n        repair.\n\n-   Practice \\\"Documentation Driven Development\\\", for public projects.\n\n    1.  Write documentation alongside the code. The simple act of trying\n        to explain to others what we are trying to achieve with our\n        software, and how, helps us clarify our thinking. If it\\'s too\n        hard to explain, then it\\'s probably badly architected, designed\n        or implemented.\n    2.  A simple variant is to practice \\\"[README Driven\n        Development](http://tom.preston-werner.com/2010/08/23/readme-driven-development.html)\\\".\n\n-   Practice Domain Driven Design (DDD).\n\n    See the Architecture \u0026 Design chapter in this document.\n\n-   To ease developments on modern hosting platforms (including our own\n    servers), we\\'ve adopted the \\\"Twelve Factor\\\" principles, see:\n    \\\u003c\u003chttp://12factor.net/\u003e\\\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabilian%2Fabilian-developer-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabilian%2Fabilian-developer-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabilian%2Fabilian-developer-guide/lists"}