diff --git a/README.md b/README.md index 1d2dc56..9c8df38 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,91 @@ # Map of Open Source Science (MOSS) -MOSS is a project of [OSSci](https://www.opensource.science/), an initiative of [NumFOCUS](https://numfocus.org/). +MOSS is a project of [OSSci](https://www.opensource.science/), an initiative of [NumFOCUS](https://numfocus.org/). ## Overview - This project aims to visualize the intersection of open source software and scientific research. -> The Map of Open Source Science is a proof of concept and as such, nothing is accurate. +The Map of Open Source Science (MOSS) is a visualization tool that maps the intersection between open source software and scientific research. It creates a network graph that shows relationships between research papers, software repositories, authors, and other entities in the open science ecosystem. This visualization helps researchers, funders, and policymakers understand the complex relationships and dependencies within the scientific software landscape. +> The current version of MOSS is a proof of concept and is continuously being improved. -## [Getting Started](./scripts/README.md) +## Architecture +MOSS consists of several key components: -## Goal -Here is an earlier iteration built using Kumu. We want to build something similar but better. - - [kumu instance](https://embed.kumu.io/6cbeee6faebd8cc57590da7b83c4d457#default) - - [demo video](https://www.youtube.com/watch?v=jZyLSRCba_M) +- **Data Collection Scripts**: Python scripts for collecting data from services like [ecosyst.ms](https://papers.ecosyste.ms/) API +- **Neo4j Graph Database**: Stores the relationship data between papers, repositories, authors, etc. +- **React Frontend**: Provides an interactive visualization of the graph data +- **API Layer**: Connects the frontend to the backend database + +## Technology Stack + +- **Backend**: Python 3.11+, Neo4j (graph database) +- **Frontend**: React, Vite +- **Data Processing**: Custom Python scripts +- **Deployment**: Docker support for Neo4j +- **Documentation**: MkDocs + +## Getting Started + +For detailed setup instructions, see [the setup guide](./scripts/README.md) which includes: + +1. Installing and configuring Neo4j +2. Collecting data using the provided scripts +3. Importing data into the graph database +4. Visualizing the data with Neo4j Bloom + +### Quick Start with Docker + +If you prefer to use Docker for Neo4j: + +1. Navigate to the `neo4j-docker` directory +2. Create an `.env` file based on the provided example +3. Run `docker compose up -d` +4. Follow the data collection and import instructions in the [setup guide](./scripts/README.md) + +### Frontend Development + +To work on the React frontend: + +1. Navigate to the `moss-react-app` directory +2. Install dependencies with `npm install` +3. Start the development server with `npm run dev` + +## Features + +- **Interactive Graph Visualization**: Explore connections between papers, software, and authors +- **Search and Filter**: Find specific entities and their relationships +- **Data Collection Tools**: Scripts to gather data from various sources +- **API Integration**: Connect with ecosyst.ms and other scientific metadata services ## Data Sources +MOSS collects data from multiple sources including: + +- [ecosyst.ms](https://papers.ecosyste.ms/): For paper metadata and citations +- GitHub: For repository information and relationships +- Additional scientific data repositories (expanding) + +## Goal + +We aim to create a comprehensive, interactive visualization of the open source scientific ecosystem that surpasses our earlier prototype: +- [Previous Kumu visualization](https://embed.kumu.io/6cbeee6faebd8cc57590da7b83c4d457#default) +- [Demo video](https://www.youtube.com/watch?v=jZyLSRCba_M) + +The goal is to make the relationships between scientific software and research more transparent, helping the community understand the impact and dependencies of open source software in scientific research. + ## Contributing -We are using the [fork and pull](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models#fork-and-pull-model) collaborative development model, we welcome [pull requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). -- Check issues for anything to work on + +We welcome contributions from the community! We are using the [fork and pull](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models#fork-and-pull-model) collaborative development model. + +To contribute: +1. Check the [open issues](../../issues) for tasks that need attention +2. Fork the repository +3. Create a branch for your changes +4. Submit a pull request + +See the [CONTRIBUTING.md](./CONTRIBUTING.md) file for more detailed guidelines. + +## License + +This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details. diff --git a/moss-react-app/package-lock.json b/moss-react-app/package-lock.json index 0923dcd..95aa792 100644 --- a/moss-react-app/package-lock.json +++ b/moss-react-app/package-lock.json @@ -8,6 +8,7 @@ "name": "my-react-app", "version": "0.0.0", "dependencies": { + "my-react-app": "file:", "react": "^18.3.1", "react-dom": "^18.3.1", "react-force-graph-3d": "^1.24.3" @@ -3674,6 +3675,10 @@ "dev": true, "license": "MIT" }, + "node_modules/my-react-app": { + "resolved": "", + "link": true + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", diff --git a/moss-react-app/package.json b/moss-react-app/package.json index ec5e783..5542898 100644 --- a/moss-react-app/package.json +++ b/moss-react-app/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "my-react-app": "file:", "react": "^18.3.1", "react-dom": "^18.3.1", "react-force-graph-3d": "^1.24.3"