OASIS is a Python framework for simulating social media platforms (Twitter, Reddit) populated by LLM-powered agents. It is designed for computational social science research, specifically studying information spread, opinion dynamics, group polarization, and the impact of platform algorithms. The system is built on top of the CAMEL AI framework for LLM interaction. The architecture follows a modular, event-driven pattern. The core simulation loop is managed by OasisEnv, which coordinates agents (SocialAgent), a platform (Platform), an async message channel (Channel), and a social graph (AgentGraph). Actions are generated by agents (either manually or via LLM calls), passed through the channel, and executed by the platform against a SQLite database. A recommendation system (Recsys) provides personalized content feeds using various strategies. The codebase is a hybrid of a software library and a research project. While the core framework is well-structured with clean abstractions (e.g., Channel, AgentGraph, Recsys), it carries significant research code debt: tight coupling to the fast-moving camel-ai framework, global state in recommendation modules, skipped tests, hardcoded paths in experiments, and mixed sync/async patterns. The extensive YAML-driven experiment configurations and visualization scripts are tightly coupled to specific research questions (misinformation, polarization) and datasets. Maintenance is active in the context of ongoing research, but the codebase shows signs of technical drift (skipped tests, commented-out features, dependency on specific LLM API patterns). It is a powerful tool for researchers but would require significant hardening for production use.
NDlib is a Python library for modeling and simulating diffusion processes on complex networks, with a strong focus on epidemic compartment models and opinion dynamics. It provides a collection of built-in models (SIR, SEIR, voter model, bounded confidence, etc.), a flexible compartment-based composition system for building custom models, and a domain-specific language (NDQL) for defining models declaratively. The library also includes an interactive dashboard server for code-free experimentation, visualization modules (matplotlib and bokeh), and a sensitivity analysis runner via SALib. While the codebase demonstrates solid architectural patterns such as abstract base classes, configuration objects, and block schema registries, it suffers from significant technical drift: it retains Python 2 compatibility shims (six, future), uses outdated dependency versions, and has brittle test infrastructure. The dashboard and parser rely on dynamic code generation that is fragile. Overall, NDlib is a functional research-oriented library with reusable compartment and configuration patterns, but its maintenance has stalled, making it risky for new projects without substantial modernization.