1. Background

The framework aims to create a social network characterized by an anarchic, horizontal structure, where every user possesses administrative capabilities, reflecting a philosophy of shared authority and communal governance. The network emphasizes server-side rendering to enhance accessibility and ease of deployment on Debian systems, adhering strictly to server-side dynamics to simplify management and enhance learnability. Central to the project’s ethos are privacy, data ownership, and the freedom to share, advocating against redundant data streaming and the high processing power demands of modern internet usage, thereby reducing electronic waste and energy consumption.

2. Requirements

2.1. Must Have

  • Equal Administrative Power for All Users: Every user functions as an admin, capable of editing all content, including other users' pages, reflecting the network’s anarchic structure.

  • Server-side Rendered Pages: Utilize Flask and Python to ensure all pages are rendered on the server, supporting broad accessibility and simplifying client-side requirements.

  • Compatibility with Debian 12 and Nginx: The system should be easily deployable on Debian systems with Nginx handling incoming HTTP requests as the front-facing web server.

  • Flat-file JSON Data Storage: All data, including user profiles, pages, comments, and files, will be stored in a flat-file system using JSON, eliminating the complexity and overhead associated with traditional databases.

  • Customizable HTML Templates: The network will use simple, editable HTML templates for the front-end, ensuring that users can easily modify the appearance and layout of their interfaces.

  • Hashtag Functionality: Implement hashtags for tagging and searching content across the network, with tags stored in the JSON file associated with each content piece.

2.2. Should Have

  • Comprehensive Logging System: Implement logging for all key user activities, including creation and editing of pages, files, comments, and user profiles to monitor and manage the network efficiently.

  • Markdown to HTML Rendering: Integrate a server-side Markdown processor to enable users to write content in Markdown, which will be converted to HTML upon page rendering.

  • Custom WYSIWYG Editor: Develop a simple, customized WYSIWYG editor that operates entirely server-side for users to edit content easily.

  • Wiki-like Hyperlinking: Implement a custom tagging system for creating hyperlinks within content, allowing users to navigate between pages, profiles, and files easily using specific prefixes (e.g., u>username<u for users).

  • EXIF Data Stripping: Automatically strip EXIF data from uploaded media to enhance user privacy.

  • Smartphone Access Blocking: Design the system to detect and block access from smartphones, redirecting to a page explaining the network’s philosophy against modern surveillance practices.

  • Content Auto-Deletion: Provide options for content to auto-delete based on specific criteria such as time elapsed or view count.

  • Data Anonymization: Offer users the option to anonymize their data during creation or editing to protect privacy.

2.3. Could Have

  • Referrer Blocking: Implement measures to block all incoming requests that do not originate from a list of approved domains.

  • Content Mirroring on Gemini and Gopher: Expand accessibility by mirroring content on both Gemini and Gopher protocols, maintaining the network’s ethos across multiple platforms.

  • IRC Integration: Incorporate an IRC server to facilitate real-time, text-based communication among users, compensating for the lack of dynamic client-side interactions.

  • IPFS for Decentralized Storage: Explore the use of IPFS to store and retrieve decentralized files, enhancing the resilience and redundancy of data storage.

  • Activity Hub: Look into developing or integrating with an activity hub using existing protocols to foster broader interaction across platforms.

  • News Groups: Set up news groups within the network for users to post and access news and updates.

  • Single-Use Email: Implement a feature for creating temporary, single-use email addresses for communication or registration purposes.

  • Onion Service: Provide an onion service address to access the network, enhancing privacy and security for users.

  • Compatibility with Text-Based Browsers: Ensure the network is fully usable with text-based browsers like Lynx and Dillo, reflecting the network’s commitment to accessibility.

  • Custom Protocol for Interconnected Instances: Develop a custom protocol that allows different instances of the network to act as nodes in a larger interconnected system, sharing data and user interactions seamlessly.

  • Extension System: Allow sysadmins to place Python scripts in a bin folder, which act as add-ons that users can invoke with specific tags (e.g., [jibber 40]) to enhance functionality.

2.4. Must Not Have

  • No User Sign-up: There will be no public sign-up process. New users can only join by invitation from existing users to maintain a trusted community network.

  • No Emphasis on Growth: Growth is not a priority; instead, the focus is on maintaining a high-quality, trust-based network of comrades.

  • No Client-side Scripting: The framework will strictly avoid any client-side JavaScript or similar technologies to ensure simplicity and universal accessibility.

3. Method

The framework employs a modular architecture facilitated by Flask Blueprints, allowing separation of concerns into manageable components such as users, pages, files, and comments. Nginx serves as the reverse proxy, while Gunicorn is used as the WSGI server to run the Flask application. The application’s data is stored in flat-file JSON format, ensuring simplicity and ease of access. Extensions and user-generated scripts are managed through a designated bin folder, enhancing the network’s functionality and customizability.

4. Implementation

The implementation is organized into five phases: environment setup, application development, front-end design, testing, and deployment. Each phase is structured to ensure comprehensive development, testing, and integration of all system components, adhering to the outlined requirements and methods.

5. Milestones

Milestone 1: Complete environment setup and server configurations. Milestone 2: Core application functionality and data handling. Milestone 3: Extensions implementation and front-end development. Milestone 4: Testing and final adjustments. Milestone 5: Deployment and go-live.

6. Gathering Results

Following deployment, the system will be monitored for performance, usability, and adherence to specified requirements. User feedback and system logs will be evaluated to ensure the network operates effectively and aligns with the envisioned user empowerment and privacy standards.