{"id":24443682,"url":"https://github.com/endlessm/malcontent","last_synced_at":"2025-06-17T08:36:50.266Z","repository":{"id":46443151,"uuid":"179481405","full_name":"endlessm/malcontent","owner":"endlessm","description":"Fork of malcontent, a parental controls support library, with Endless packaging and customizations","archived":false,"fork":false,"pushed_at":"2022-03-21T21:58:43.000Z","size":1108,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-01-20T22:17:04.264Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gitlab.freedesktop.org/pwithnall/malcontent","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/endlessm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-04T11:08:06.000Z","updated_at":"2022-07-15T14:04:36.000Z","dependencies_parsed_at":"2022-09-17T06:43:11.495Z","dependency_job_id":null,"html_url":"https://github.com/endlessm/malcontent","commit_stats":null,"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fmalcontent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fmalcontent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fmalcontent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fmalcontent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/endlessm","download_url":"https://codeload.github.com/endlessm/malcontent/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243515565,"owners_count":20303258,"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":"2025-01-20T22:17:07.028Z","updated_at":"2025-03-14T03:13:55.263Z","avatar_url":"https://github.com/endlessm.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"malcontent\n==========\n\nmalcontent implements support for restricting the type of content accessible to\nnon-administrator accounts on a Linux system. Typically, when this is\nused, a non-administrator account will be for a child using the system; and the\nadministrator accounts will be for the parents; and the content being filtered\nwill be apps which are not suitable for the child to use, due to (for example)\nbeing too violent.\n\nIt provides an\n[accounts-service](https://gitlab.freedesktop.org/accountsservice/accountsservice)\nvendor extension for storing an app filter to\nrestrict the child’s access to certain applications; a simple library for\naccessing and applying the app filter; and a UI program (`malcontent-control`)\nfor viewing and changing the parental controls settings on users.\n\nThe parental controls policy is stored in `/var/lib/AccountsService/users/${user}`,\nwhich is a key file readable and writable only by the accounts-service daemon.\nAccess to the data is mediated through accounts-service’s D-Bus interface, which\nlibmalcontent is a client library for.\n\nAll the library APIs are currently unstable and are likely to change wildly.\n\nTwo kinds of policy are currently supported:\n * A filter specifying whether installed applications are allowed to be run;\n   this is typically set up to restrict access to a limited set of\n   already-installed applications — but it can be set up to only allow access\n   to a fixed list of applications and deny access to all others.\n   Applications which are not currently installed are not subject to this\n   filter.\n * A set of mappings from [OARS categories](https://hughsie.github.io/oars/) to\n   the maximum ratings for those categories which are permissible for a user to\n   install apps with. For example, a mapping of `violence-realistic=mild` would\n   prevent any applications containing more than ‘mild’ violence from being\n   installed. Applications which are already installed are not subject to this\n   filter.\n\nAdditional policies may be added in future, such as filtering by content type\nor limiting the amount of time a user is allowed to use the system for.\n\nAny application or service which provides the user with access to content which\nshould be parentally filtered is responsible for querying the user’s parental\ncontrols filter and refusing to provide the content if not permitted by the\nfilter. This could mean refusing to launch a flatpak app, hiding a search\nresult in gnome-shell, or hiding an app in gnome-software because of its high\nOARS rating.\n\nA sufficiently technically advanced user may always work around these parental\ncontrols. malcontent is not a mandatory access control (MAC) system like\nAppArmor or SELinux. However, its correct use by applications should provide\nenough of an obstacle to prevent users easily or accidentally having access to\ncontent which they shouldn’t.\n\nDevelopment principles\n---\n\nmalcontent exists to make it easier for parents to responsibly set limits on\nwhat their children can do on the computer (similarly, for other carer/caree\nrelationships). It should provide guidance on, and nudge parents towards,\nfollowing the best practice for discussing, choosing and setting restrictions on\ntheir child’s computer use.\n\nRestrictions should be supported which allow giving children access to material\nwhich is appropriate to their age/stage of development, but which can restrict\naccess to other material so they are not overwhelmed with too many, or too\ncomplex, ideas for their stage of development. Similarly, restrictions should be\nsupported to control unsupervised communication with unknown people online, as\nbeing coerced or bullied is one of the more common harms for children online.\n\nBest practices should be research and evidence-based, and supported by large\ninternational or national childrens’ organisations or charities. They may change\nover time.\n\nmalcontent is a tool to help with a social problem. In the hands of a bad\nparent, it can be used to do bad things. Features in malcontent should be\ndesigned with that in mind, such that if they are used maliciously, they should\nnot give the parent radically more power over their child than they would have\nhad without malcontent.\n\nExample usage\n---\n\nmalcontent ships a `malcontent-client` application which can be used to get and\nset parental controls policies for users.\n\n```\n$ # This sets the parental controls policy for user ‘philip’ to allow no \\\\\n    installation of apps with anything more than ‘none’ for realistic violence, \\\\\n    and to blocklist running the org.freedesktop.Bustle flatpak:\n$ malcontent-client set philip \\\\\n    violence-realistic=none \\\\\n    app/org.freedesktop.Bustle/x86_64/stable\nApp filter for user 1000 set\n```\n\nWith that policy in place, other applications which are aware of malcontent will\napply the policy:\n\n```\n$ flatpak run org.freedesktop.Bustle\nerror: Running app/org.freedesktop.Bustle/x86_64/stable is not allowed by the policy set by your administrator\n```\n\nDevelopment\n-----------\n\nWhen developing malcontent, you should be able to run an uninstalled version of\n`malcontent-client` or `malcontent-control`, as long as the polkit files from\n`accounts-service/` and `malcontent-control/org.freedesktop.MalcontentControl.policy.in`\nhave been installed system-wide (typically under `/usr/share/polkit-1`) where\nyour system copy of polkitd can find them.\n\nDependencies\n------------\n\n * accounts-service\n * appstream-glib\n * dbus-daemon\n * flatpak\n * gio-2.0 ≥ 2.60\n * gio-unix-2.0 ≥ 2.60\n * glib-2.0 ≥ 2.60\n * gobject-2.0 ≥ 2.60\n * gtk+-3.0\n * polkit-gobject-1\n\nLicensing\n---------\n\nAll code in the libraries in this project is licensed under LGPL-2.1+. Code in the\n`malcontent-control` application is licensed under GPL-2.0+. See `COPYING` and the\ncopyright headers in individual files for more details.\n\nBugs\n----\n\nBug reports and patches should be filed in\n[GitLab](https://gitlab.freedesktop.org/pwithnall/malcontent).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendlessm%2Fmalcontent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fendlessm%2Fmalcontent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendlessm%2Fmalcontent/lists"}