{"id":15107402,"url":"https://github.com/tinchodias/ficus","last_synced_at":"2025-10-14T10:41:18.444Z","repository":{"id":251383086,"uuid":"837254280","full_name":"tinchodias/Ficus","owner":"tinchodias","description":"Library to define tree-like immutable objects in Pharo","archived":false,"fork":false,"pushed_at":"2024-08-03T19:14:20.000Z","size":4150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T19:24:47.343Z","etag":null,"topics":["pharo"],"latest_commit_sha":null,"homepage":"","language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tinchodias.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-02T14:39:57.000Z","updated_at":"2024-08-03T19:14:23.000Z","dependencies_parsed_at":"2025-02-08T05:32:08.790Z","dependency_job_id":null,"html_url":"https://github.com/tinchodias/Ficus","commit_stats":null,"previous_names":["tinchodias/ficus"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinchodias%2FFicus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinchodias%2FFicus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinchodias%2FFicus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinchodias%2FFicus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinchodias","download_url":"https://codeload.github.com/tinchodias/Ficus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166929,"owners_count":21058480,"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":["pharo"],"created_at":"2024-09-25T21:24:17.973Z","updated_at":"2025-10-14T10:41:13.404Z","avatar_url":"https://github.com/tinchodias.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ficus\n\nThis (outdated) codebase contains prototypes developed during my Ph.D (~2015):\n\nFicus provides a framework for defining tree-like immutable objects in Pharo. It support first-class edits, which represent operations that can be applied to Ficus objects. It also supports first-class changes, which represent the change after applying an edit to a Ficus object.\n\nFicusMetamodel defines a Ficus model (i.e. tree-like immutable objects) to represent Pharo metalevel objects.\n\nRingFicus defines wrappers for FicusMetamodel which are polymorphic to real Pharo metalevel objects. In a nutshell, it's like the original Ring but with more isolation and more lightweight.\n\nAlso check [Yrupe project](https://github.com/tinchodias/Yrupe), a serializer for Ficus objects.\n\n## Loading in Pharo 6\n\n```smalltalk\nMetacello new\n    smalltalkhubUser: 'MartinDias' project: 'Ficus';\n    configuration: #Ficus; \n    version: #development;\n    load.\n```\n\n## Example of RingFicus\n\n```smalltalk\nenvironment := RFiFragileBaseClassProblemResources5A new ringEnvironment.\nenvironment allClasses.\nenvironment browse.\n```\n\n## History\n\nThis repository was migrated from [this SmalltalkHub repo](http://smalltalkhub.com/MartinDias/Ficus/) with an [semi-automatic tool](https://github.com/pharo-contributions/git-migration) in a Pharo 9 with:\n\n```smalltalk\nmigration := GitMigration on: 'MartinDias/Ficus'.\nmigration onEmptyMessage: [ :info | 'empty commit message' ].\nmigration downloadAllVersions.\nmigration populateCaches.\nmigration allAuthors. \"#('Anonymous' 'CamilleTeruel' 'ChristopheDemarey' 'GuillermoPolito' 'MartinDIas' 'MartinDias' 'PabloTesone' 'SkipLentz' 'YuriyTymchuk' 'md')\"\nmigration authors: {\n\t'MartinDias' -\u003e #('Martín Dias' '\u003ctinchodias@gmail.com\u003e').\n\t'MartinDIas' -\u003e #('Martín Dias' '\u003ctinchodias@gmail.com\u003e').\n\t'md' -\u003e #('Martín Dias' '\u003ctinchodias@gmail.com\u003e').\n\t'Anonymous' -\u003e #('Martín Dias' '\u003ctinchodias@gmail.com\u003e').\n\t'CamilleTeruel' -\u003e #('Camille Teruel' '\u003ccamille.teruel@gmail.com\u003e').\n\t'SkipLentz' -\u003e #('Balletie' '\u003cskip_meesie@hotmail.com\u003e').\n\t'GuillermoPolito' -\u003e #('Guille Polito' '\u003cguillermopolito@gmail.com\u003e').\n\t'PabloTesone' -\u003e #('Pablo Tesone' '\u003ctesonep@gmail.com\u003e').\n\t'ChristopheDemarey' -\u003e #('Christophe Demarey' '\u003cchristophe.demarey@inria.fr\u003e').\n\t'YuriyTymchuk' -\u003e #('Yuriy Tymchuk' '\u003cuko@unikernel.net\u003e')\n }.\nmigration\n\tfastImportCodeToDirectory: 'src'\n\tinitialCommit: '93e8f1e1983ab81d8fe3440daca9b64bfee340b5'\n\tto: 'ficusImport.txt'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinchodias%2Fficus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinchodias%2Fficus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinchodias%2Fficus/lists"}