A categorized community-driven collection of awesome Pharo libraries, tools, frameworks and software.
- Algorithms
- Artificial Intelligence and Machine Learning
- Books
- Code generation
- Code quality
- Command line
- Component-Based Architectures
- Data interexchange format
- Data structures
- Databases
- Datasets
- Documents generation
- Graphics
- IDE
- Interaction
- IOT
- Language extensions
- LaTeX
- Loggers
- Meta-modelling
- Miscellaneous
- Network protocols
- Pharo images management
- Projects management
- Scientific libraries
- Software / data analysis
- Sound
- System interaction
- Testing
- Tutorials
- VCS
- Videos
- Virtual machine
- Web
- Web API clients
- DeepTraverser - Library for traversing object graphs (managing cycles).
- FuzzySearcher - Simplified implementation of ambiguous matching algorithm based on Baeta-Yates, R.A., Gonnet, G.H., Wu, S. and Manber, U.
- StableMarriage - A solver for the stable marriage problem written in Pharo.
The full list of AI and machine learning libraries, tools, and resources for Pharo is available at pharo-ai / awesome-pharo-ml.
- Keras Wrapper - Allows to use Keras functions within Pharo.
- NEAT (NeuroEvolution of Augmenting Topologies) - A genetic algorithm for evolving artificial neural networks. NEAT is probably the most popular algorithm for neuroevolution.
- pharo-ai / APriori - Fast algorithm for mining frequent sets of items and finding association rules between items in a database of transactions.
- pharo-ai / KMeans - K-means clustering.
- pharo-ai / NaiveBayesClassifier - Implementation of a multinomial Naive Bayes classifier in Pharo that can be used for simple spam detection and sentiment analysis.
- pharo-ai / NgramModel - N-gram language model that can be trained to estimate the probability of a next word based on N-1 previous words.
- pharo-ai / TF-IDF - Term Frequency - Inverse Document Frequency (TF-IDF), a statistical metric that reflects the importance of a word in a document. Can be used for finding keywords, ranking words by importance, or as a simple way of finding semantic similarity between documents.
- TensorFlow Bindings - Allows to use TensorFlow in Pharo.
- https://books.pharo.org - Pharo books are a collection of technical or textbook books around Pharo.
- Agile Artificial Intelligence - Agile Artificial Intelligence is a book that covers classical algorithms commonly assimilated as artificial intelligence techniques.
- Agile Visualization - Visualization made easy in Pharo. It uses the Roassal visualization engine
- Free online books from Stéphane Ducasse website - A collection of free books related to Smalltalk and Pharo.
- SquareBracketAssociates - Organisation grouping repositories for various books around Pharo.
- PharoCodeGenerator - Generate Pharo code based on ASTs.
- PharoJS - Converts Pharo code to Javascript.
- PlainPharoCode - Instead of using String, use Pharo code to define code to generate.
- Python3Generator - A toolkit to generate Python 3 source code from Pharo.
- VisitorGenerator - Generates basic visitor & visit methods for any Pharo classes hierarchy.
- XML-XMLWriter - Block-based API for XML generation for Pharo.
- Chanel - A cleaner for Pharo Smalltalk code.
- QualityAssistant - A live feedback code quality tool for Pharo.
- Rules - Rules is a small model of rules that a model should not violate. It is able to compute the technical debt for a set of violations.
- clap-st - Command-line argument parsing for Pharo.
- Launchpad - A command-line interface to start, list, and explain the applications available within the image
- Pharo server tools - Tools to deploy and manage headless Pharo servers from the command line.
- pi - CLI tool to install Pharo Smalltalk packages.
- Molecule - A component oriented framework for Pharo.
- Arff - An Arff generator written in Pharo, Arff is the dataformat used by weka.
- CSV - NeoCSV is an elegant and efficient standalone Smalltalk framework to read and write CSV converting to or from Smalltalk objects.
- Fuel - A general-purpose object serialization framework for Squeak and Pharo, developed in Pharo.
- msgpack-smalltalk - MessagePack serialization library.
- NeoJSON - Framework to handle JSON in Pharo.
- NeoUniversalBinaryJSON - An implementation of Universal Binary JSON (UBJSON) for Pharo.
- pharo-ical - iCalendar import and export.
- Pillar - Markup syntax and associated tools to write and generate documentation, books and slides.
- Protobuf - Google's protocol buffers support for Pharo Smalltalk.
- SIXX - XML serializer/deserializer.
- STON - The Smalltalk Object Notation, similar to JSON but for Smalltalk.
- Tabular - Support of common spreadsheets formats (CSV, XLSX, ODS).
- XML-Pastell - An XPath-like DSL that makes navigation in XML DOM trees easier.
- XML-Parser - Official XML parser maintained by Pharo community.
- XML-Support - XML Support for Pharo.
- XML-XMLParserStAX - Official XML pull parser for XMLParser maintained by Pharo community.
- XML-XMLParserHTML - Official parsers for HTML that convert possibly malformed HTML into well-formed XML maintained by Pharo community.
- XML-XMLWriter - Official XML generation framework maintained by Pharo community.
- XML-XPath - Official XPath library for Pharo.
- Soup - HTML Scraping library for Pharo.
The project http://github.com/Pharo-containers contains several data structures. Some more are in nursery in https://github.com/Ducasse/. The general idea is to have a place to be able to find datastructures.
- Array2D - A grid like structure.
- AVL Tree
- BTree - Not a binary tree but a BTree implementation.
- DataFrame - Tabular data structures for data analysis.
- Dictionary with lookup - A dictionary with lookup.
- Grid - A grid implementation.
- Hastable.
- Iterators - Implementation of the iterator design pattern.
- KeyedTree.
- Multimap - A multi map implementation.
- OrderedSet - A Set where an order of elements matters or an OrderedCollection with no duplicates. Supports the complete API of Set and OrderedCollection. Another version or the same is available at https://github.com/pharo-containers/Containers-OrderedSet
- OrderPreservingDictionary - Order preserving dictionary.
- PropertyEnvironment - A dictionary of properties with a lookup in ancestors (also called environment in other languages).
- QuadTrees.
- RunArray.
- SkipList.
- Stack - A stack implementation.
- Trie - a structure for retrieval information.
- UniqueOrdered - Some collections to have unique ordered elements.
- CDB - a CDB implementation in Pharo.
- CouchDB - Pharo client for CouchDB NoSQL Document Database.
- Garage - Database drivers for the Pharo language.
- Glorp - Multi-database cross-platform object-relational persistence for Pharo and many other Smalltalks.
- GlorpSQLite - SQLite for Pharo, standalone and integrated with Glorp.
- P3 - PostgresV3 protocol client for Pharo, standalone and integrated with Glorp.
- pharo-ado - Enable data persistence in Pharo by using ActiveX Data Objects (ADO) on Microsoft Windows and external DBMS.
- Pharo-UDBC - Pharo Universal Database Connectivity.
- PunQLite - UnQLite binding for Pharo Smalltalk.
- Tarantalk - Tarantool client for Pharo.
- SCouchDB - Pharo driver for CouchDB database using Zinc client. Supports Mango queries and implements Voyage API.
- Simple-Persistence - Simple file base persistence for when you don't quite need a database.
- SQLite3 - A clean SQLite FFI binding for Pharo for those who only want to use SQLite easily.
- Voyage - An object persistence abstraction layer for Pharo.
- Datasets - A collection of small toy datasets used for demonstration and experiments with AI and machine learning. Includes many famous datasets such as Iris, Boston Housing, Wine, Diabetes, MNIST, etc.
- Les Miserables - Coappearance characters of Les Miserables.
- RandomPartitioner - A tool for partitioning a dataset. Given a set of proportions (e.g. 50%, 30%, and 20%), it shuffles the collection and divides it into non-empty subsets in such a way that every element is included in exactly one subset. Can be used in machine learning and statistical analysis for splitting datasets into training, validation, and test sets.
- Docker Pharo Runtime - Docker image for Pharo
- Docker Pharo VM - Docker image for Pharo VM
- Artefact - Artefact is a framework to generate PDF documents in Pharo.
- Bloc - Next generation low-level UI infratructure and framework for Pharo.
- Brick - Next generation widget libraries for Pharo. Works on top of Bloc.
- ConstraintsLayout - A constraints layout for morphic using Cassowary as its backend.
- Colors Extensions - Extensions to Pharo colors.
- GraphViz - Pharo GraphViz binding.
- GEXF - Pharo GEXF file model and exporter.
- Jun - A 3D graphics library with chemoinformatics extensions.
- MaterialColors - Project implementing Material Design recommandations on colors.
- MermaidPharo - Pharo support for MermaidJS.
- PlantUMLPharoGizmo - Pharo support for PlantUML.
- Roassal3 - The agile 2D visualization engine for Pharo version 3. (V2: Roassal2)
- Sparta - Sparta is an almost stateless vector graphics API for Pharo that provides bindings to the Moz2D rendering backend.
- SpecUIAddOns - Add-ons for Spec UI description framework.
- Woden - A 3D graphics engine for Pharo.
- Calypso - Pharo system browser.
- CollectionExtensions - Extensions for Pharo collections API.
- Dawn theme - A warm dark theme for Pharo.
- Glamorous Toolkit - Moldable IDE for Pharo.
- Mirage - A windows switcher with a previewer for Pharo.
- Native-Browser - A small project to add the possibility to open native browser via a FileReference.
- Smalltalk Vim Mode - Vim Mode for Playground, System Browser, Debugger in Pharo.
- TelePharo - Tools to manage and develop remote Pharo images.
- TilingWindowManager - Tiling Window Manager for Pharo.
- Uncommon-Themes - A collection of themes for Pharo.
- GitBridge - Access resources and information from the git repository containing your project.
- OSC - An open sound control library.
- TUIO - A driver for TUIO.
- HID - An implementation of the Human Interface Device protocol with a driver to be used with libusb.
- Netatmo API - Netatmo API implementation for Legrand Netatmo products (Weather Station and Healthy HomeCoach / Aircare product).
- PharoThings - Live programming platform for IoT projects based on Pharo.
- Buoy - A complement to Pharo
- I18N - Internationalization support for applications.
- Talents - Implementation of Talents in Pharo. Allowing us to extend the behaviour in single instances.
- Citezen - A bibtext parser and tool suite.
- SmalltalkEnv - LaTeX environment for Smalltalk.
- Beacon - A logger using beacon.
- TinyLogger - A really small logger for Pharo applications.
- Bell - An observability library written in Smalltalk
- Magritte - A fully dynamic meta-description framework.
- Aconcagua - This model represents measures as first class objects, that is, an object that encapsulates a number with its unit.
- BugReport - A small project to ease the bug reporting in Pharo application by dumping clear and detailed stacks.
- Chalten - This is a time model that allows to use dates, months, years, etc. in an easy way.
- DMirror - Tool to spawn new job on forked Pharo images.
- Dr Geo - A software to design & manipulate interactive geometric sketches. It helps kids to explore geometry.
- Fog - Pharo Ethereum Driver.
- IPFS - Binding to InterPlanetary File System for Pharo.
- ISO3166 - Codes for the names of countries, dependent territories, and special areas of geographical interest for Pharo applications.
- PharoFamily - PDF image showing a part of Pharo ecosystem.
- PharoMisc - Small utilities and libraries around various topics.
- PTerm - Using Unix terminal from Pharo.
- Stylesheet - Stylesheet is a project to define css like stylesheet in Pharo applications.
- Territorial - Geographical Information Retrieval (GIR) project including features to access geopolitical objects like Nations, Cities, Regions, International Organizations, and statistical data.
- Ansible - An AMQP client for Pharo
- FileSystemNetwork - Adds WebDAV and FTP support to Pharo's FileSystem framework. This allows you to use remote WebDAV and FTP locations with the same (FileSystem) API that's used for disk access.
- JRPC - Yet another JSON-RPC 2.0 implementation for Pharo Smalltalk.
- Stargate - A library supporting the creation of HTTP based RESTful APIs.
- Superluminal - Building blocks for creating HTTP requests and API clients
- Zodiac (built-in) - Zodiac is an open-source Smalltalk framework implementing TLS/SSL secure as well as regular socket streams.
- fari.sh - Fresh, ready-to-hack Pharo images.
- Pharo Install - A command-line tool for installing Pharo Smalltalk packages into fresh images.
- Pharo Launcher - Official tool to manage your pharo images and download new ones.
- Chrysal - How to manage application configuration.
- Cruiser - Application packager for Pharo.
- DeploymentUtility - A project providing a facade to help to deploy pharo projects.
- Filetree - A file-per-method export format of Pharo source code allowing one to version code with git, svn, fosil, etc.
- Metacello - A package management system for Pharo.
- pharo-server-tools - Tools to deploy and manage headless Pharo servers from the command line.
- SmalltalkCI - Framework for testing Smalltalk projects on Linux, macOS, and Windows and on Travis CI, AppVeyor, and GitLab CI/CD.
- Tonel - A file-per-class export format of Pharo source code allowing one to version code with git, svn, fosil, etc.
- BioSmalltalk - Bioinformatics Library for Pharo Smalltalk.
- CORMAS - CORMAS (Common-pool Resource and Multi-Agent Simulation) is a agent based model library in Smalltalk.
- GADM - A browseable GADM world tree for Pharo Smalltalk.
- Geometry - A library for representing basic geometry elements and doing computations with them.
- HoneyGinger - a fluid dynamics simulation engine focused on interactivity and visualization
- Kendrick - Domain-Specific Modeling for Epidemiology.
- MatplotLibBridge - A bridge to Python's Matplotlib.
- Mathemagics - Symbolic algebra package that handles mathematical expressions using simplification, derivatives, functions, variables, etc. Calculator included. Parser supports infix notation.
- Polymath - Set of mathematical tools for Pharo. Similar to numpy in Python.
- RMapViewer - A Viewer for chemical reaction maps.
- StNER - Interface to the Stanford Named Entity Recognizer.
- Units - A simple package for Units management in Pharo.
- Z3950 - ZOOM FFI Client for Z39.50 Protocol.
- CCBC - Code Critics Bar Chart for Pharo Smalltalk.
- DesignInfo - Collects package metrics (SLOC).
- Moose - Platform for software and data analysis.
- PetitParser - Petit Parser is a framework for building parsers using objects.
- PostgreSQLParser - A parser for PostgreSQL queries and Plpg/SQL source code.
- Pharo-LibVLC - FFI binding to libVLC.
- PharoSound - Sound facilities for Pharo.
- KerasBridge - Bridge between the Keras library for neural network and Pharo
- LibUSB - A FFI binding to libusb C library.
- OSSubprocess - Allows one to spawn Operating System processes from within Pharo language.
- Pharo-OS-Linux-Ubuntu - Support for Ubuntu operating system for Pharo.
- Pharo-OS-OSX - Support for OSX operating system for Pharo.
- Pharo-OS-Unix - Support for Unix operating system for Pharo.
- Pharo-OS-Raspbian - Support for Raspbian operating system for Pharo.
- Pharo-OS-Windows - Support for Windows operating system for Pharo.
- ProcessWrapper - Plugin + Wrapper code for Windows process execution.
- PythonBridge - A bridge between Python and Pharo. This bridge allows to seamlessly use Python libraries in Pharo
- SystemInteraction - A project to simplify system interactions in Pharo providing a facade to OSSubProcess and OSWindSubProcess and some pre-made commands.
- Babymock - A visual mock object library.
- DrTests - An extendable, plugins-based UI for testing Pharo projects.
- Hapao - Spy2 is a profiling framework. Spy2 contains Hapao, the visual test coverage tool.
- Mocketry - Mock objects library with very fluent lightweight API.
- µ-talk - Mutation Testing in Smalltalk.
- ParametrizedTests - Extension to SUnit to implement parametrized tests in Pharo.
- StateSpecs - Assertions library based on should expressions.
- Exercism Pharo Smalltalk - Solve problems with TDD at Exercism.io and receive mentor feedback.
- Iceberg - Set of tools to handle git repositories from a Pharo image.
- How to setup a Pharo project - Video showing how to setup a Pharo project (continuous-integration setup included).
- Infecting morph by virus - Example of usage of Ghost to infect a Morph, making it change the color of other Morphs it touches.
- Pharo Tech Talk Feb 2017 : Reflectivity - Reflectivity in Pharo6.
- Pharo Techtalk: Consortium/Association 2017 - Live stream for the pharo tech talk March 2018.
- Pharo TechTalk July 2019: Contribute to Pharo - TechTalk showing how to contribute to Pharo.
- Polyphemus - Framework allowing to analyse/query/modify Pharo images without executing them.
- Amber - Amber is an implementation of the Smalltalk language that runs on top of the JavaScript runtime. It uses Pharo as reference implementation.
- ChartJs - Seaside binding of ChartJs to display and interact with charts.
- CodeParadise - Run Pharo code inside a tiny SqueakJS VM and manipulate the Dom via WebComponents and MVP
- Ethel - Lightweight framework for composing web service clients.
- HighchartsSt - A Highcharts Js API wrapper for Pharo Smalltalk.
- MaterialDesignLite - Binding google's Material Design Lite project for Seaside.
- OpenAPI - A pharo implementation of OpenAPI 3.0.1, a machine-readable interface files specification for describing, producing, consuming, and visualizing RESTful web services.
- Parasol - Testing web apps in Smalltalk using Selenium WebDriver.
- PharoJS - Develop in Pharo, Run on Javascript.
- Pragma-Validators - Pragma validators for Pharo accessors, inspired by Java Bean Validation annotations.
- PrismCodeDisplayer - Code displayer for Seaside base on Prism.js project.
- RenoirSt - A DSL enabling programmatic cascading style sheet generation for Pharo Smalltalk.
- Seaside - Framework to develop sophisticate web applications in Smalltalk.
- SeasideBootstrap - Binding to Twitter's Bootstrap project for Seaside.
- Teapot - Micro web framework for Pharo Smalltalk.
- Teapot-ACL - A minimalistic role-based access control list for Teapot authorization.
- TelescopeCytoscape - Interactive visualization project for Seaside based on Cytoscape.js.
- Willow - Web Interaction Library that eases the burden of creating AJAX-based web applications.
- Zinc - HTTP components to deal with HTTP networking in Smalltalk.
- DiscordSt - DiscordSt is a client for Discord written in Pharo.