Skip to content

Commit ff04e3f

Browse files
committed
Merge branch 'docs/add-project' of https://github.com/sanjay7178/opensciencelabs.github.io into docs/add-project
2 parents 75f72e8 + c982b3d commit ff04e3f

File tree

50 files changed

+3583
-7245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+3583
-7245
lines changed

.github/workflows/main.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ jobs:
5050
run: |
5151
poetry check
5252
poetry install
53+
python -m nltk.downloader punkt
5354
5455
- name: Linter
5556
if: ${{ github.event_name == 'pull_request' }}

conda/dev.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ dependencies:
66
- python <3.12
77
- pip
88
- poetry
9+
- nodejs

mkdocs.yml

Lines changed: 55 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,55 +16,72 @@ theme:
1616
primary: indigo
1717

1818
extra_css:
19-
- css/style.css
20-
- css/index.css
19+
- css/base.css
20+
- css/blog.css
21+
- css/code.css
22+
- css/content.css
23+
- css/footer.css
24+
- css/home.css
25+
- css/nav.css
26+
- css/partners.css
27+
- css/search.css
28+
- css/team.css
29+
- css/tokens.css
30+
- css/utilities.css
2131

2232
extra_javascript:
23-
- js/bundle.js
24-
- js/search.js
25-
- js/index.json
33+
- js/theme.js
34+
- js/osl-search.js
35+
- js/vendor/lunr.min.js
36+
- js/vendor/lunr.stemmer.support.min.js
37+
- js/vendor/lunr.multi.min.js
38+
- js/vendor/lunr.es.min.js
39+
- js/vendor/lunr.pt.min.js
2640

2741
nav:
2842
- Blog: "blog/index.md"
2943
- Projects:
30-
- index: "projects/index.md"
44+
- Overview: "projects/index.md"
3145
- Incubation: "projects/incubation/index.md"
32-
- Affiliation:
33-
- index: "projects/affiliation/index.md"
46+
- Affiliation: "projects/affiliation/index.md"
3447
- All Projects: "projects/list/index.md"
3548
- Opportunities:
36-
- index: opportunities/index.md
49+
- Overview: opportunities/index.md
3750
- OSS Internship:
38-
- index: "opportunities/internships/oss/index.md"
51+
- Overview: "opportunities/internships/oss/index.md"
3952
- Project Ideas: "opportunities/internships/oss/project-ideas/index.md"
40-
- Interns Guide: "opportunities/internships/guides/interns/index.md"
41-
- Projects Ideas Template: "opportunities/internships/templates/projects-ideas/index.md"
42-
- Candidates's Project Proposal Template: "opportunities/internships/templates/candidate-proposal/index.md"
53+
- "Contribution Guidelines": "opportunities/guides/contribution/index.md"
54+
- "Candidates' Guide": "opportunities/internships/guides/interns/index.md"
55+
- "Template: Projects Ideas": "opportunities/internships/templates/projects-ideas/index.md"
56+
- "Template: Candidates's Project Proposal": "opportunities/internships/templates/candidate-proposal/index.md"
4357
- OSS Research Seed Internship:
44-
- index: "opportunities/internships/oss-research-seed/index.md"
58+
- Overview: "opportunities/internships/oss-research-seed/index.md"
4559
- Project Ideas: "opportunities/internships/oss-research-seed/project-ideas/index.md"
46-
- Interns Guide: "opportunities/internships/guides/interns/index.md"
47-
- Projects Ideas Template: "opportunities/internships/templates/projects-ideas/index.md"
48-
- Candidates's Project Proposal Template: "opportunities/internships/templates/candidate-proposal/index.md"
60+
- "Contribution Guidelines": "opportunities/guides/contribution/index.md"
61+
- "Candidates' Guide": "opportunities/internships/guides/interns/index.md"
62+
- "Template: Projects Ideas": "opportunities/internships/templates/projects-ideas/index.md"
63+
- "Template: Candidates's Project Proposal": "opportunities/internships/templates/candidate-proposal/index.md"
4964
- Google Summer of Code:
50-
- index: "opportunities/gsoc/index.md"
65+
- Overview: "opportunities/gsoc/index.md"
5166
- Project Ideas: "opportunities/gsoc/project-ideas/index.md"
52-
- Contributor Guide: "opportunities/gsoc/guides/contributor/index.md"
53-
- Project Idea Template: "opportunities/gsoc/templates/project-ideas.md"
54-
- Contributor Project Proposal Template: "opportunities/gsoc/templates/contributor-proposal.md"
67+
- "Contribution Guidelines": "opportunities/guides/contribution/index.md"
68+
- "Candidates' Guide": "opportunities/gsoc/guides/contributor/index.md"
69+
- "Template: Project Idea": "opportunities/gsoc/templates/project-ideas.md"
70+
- "Template: Candidates Project Proposal": "opportunities/gsoc/templates/contributor-proposal.md"
5571
- Partnership:
56-
- index: "partnership/index.md"
72+
- Overview: "partnership/index.md"
5773
- Partners: "partnership/partners/index.md"
74+
- Open Proposals:
75+
- Overview: "partnership/open-proposals/index.md"
76+
- Community Training: "partnership/open-proposals/community-training/index.md"
5877
- Learning:
59-
- index: learning/index.md
60-
- Events:
61-
- index: learning/events/index.md
62-
- Study Groups:
63-
- index: learning/study-groups/index.md
78+
- Overview: learning/index.md
79+
- Events: learning/events/index.md
80+
- Study Groups: learning/study-groups/index.md
6481
- About:
65-
- index: "about/index.md"
82+
- Overview: "about/index.md"
6683
- About OSL:
67-
- index: "about/index.md"
84+
- Overview: "about/index.md"
6885
- Contact Us: about/contact/index.md
6986
- Our Formula: "about/formula/index.md"
7087
- Roadmap: about/roadmap/index.md
@@ -73,7 +90,7 @@ nav:
7390
- Team: about/team/index.md
7491
- Fiscal Sponsor: about/fiscal-sponsor/index.md
7592
- Guidelines:
76-
- index: about/guidelines/index.md
93+
- Overview: about/guidelines/index.md
7794
- Articles: about/guidelines/articles/index.md
7895
- DEI: about/guidelines/dei/index.md
7996
- Mentoring: about/guidelines/mentoring/index.md
@@ -89,6 +106,7 @@ markdown_extensions:
89106
- pymdownx.inlinehilite
90107
- pymdownx.snippets
91108
- pymdownx.superfences
109+
- mdx_truly_sane_lists
92110

93111
plugins:
94112
- include-markdown:
@@ -128,3 +146,10 @@ plugins:
128146
enabled: true
129147
enable_creation_date: false
130148
type: iso_date
149+
150+
- search:
151+
lang:
152+
- en
153+
- es
154+
- pt
155+
prebuild_index: true
84.5 KB
Loading
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
---
2+
title: "Language Server Protocol (LSP): How Editors Speak Code"
3+
slug: "language-server-protocol-lsp-how-editors-speak-code"
4+
date: 2025-08-15
5+
authors: ["Ansh Arora"]
6+
tags: ["Makim", "Automation", "Developer Experience"]
7+
categories: ["Devops", "Dev Tools"]
8+
description: |
9+
The Language Server Protocol (LSP) powers modern code editors like VS Code by
10+
enabling real-time autocompletion, hover info, diagnostics, and more.
11+
thumbnail: "/header.png"
12+
template: "blog-post.html"
13+
---
14+
15+
# Language Server Protocol (LSP): How Editors Speak Code
16+
17+
When you open a code file in VS Code and get real-time suggestions, hover
18+
tooltips, or error squiggles, have you ever wondered **how** your editor
19+
understands the language you’re writing in?
20+
21+
This magic isn’t hardcoded per-language into the editor. Instead, it’s often
22+
powered by something called the **Language Server Protocol (LSP)**.
23+
24+
Let’s dive into what LSP is, why it exists, and how it powers modern development
25+
environments.
26+
27+
## What is the Language Server Protocol?
28+
29+
The **Language Server Protocol (LSP)** is a standardized way for development
30+
tools (like VS Code, Vim, or Emacs) to communicate with language-specific
31+
services (called language servers).
32+
33+
Instead of writing new editor plugins for every language and every editor, **LSP
34+
decouples the logic**:
35+
36+
- The **editor (client)** handles the UI and editor behavior.
37+
- The **language server** handles parsing, validation, completions, and other
38+
language-specific logic.
39+
40+
They talk to each other via a common JSON-RPC protocol over standard
41+
input/output, TCP, or WebSockets.
42+
43+
## Why was LSP created?
44+
45+
Before LSP, supporting multiple languages across editors was a mess:
46+
47+
- Each editor needed custom plugins.
48+
- Each language had to build and maintain these plugins.
49+
50+
This was inefficient and hard to maintain.
51+
52+
**Microsoft introduced LSP in 2016**, alongside VS Code, to fix this
53+
fragmentation. Now, language authors can focus on building a single LSP server,
54+
and editors can plug into it easily.
55+
56+
![LSP Languages and Editors](https://code.visualstudio.com/assets/api/language-extensions/language-server-extension-guide/lsp-languages-editors.png)
57+
58+
## Core Features of LSP
59+
60+
Here are some features LSP enables out-of-the-box:
61+
62+
- Autocompletion
63+
- Go to Definition
64+
- Hover Information
65+
- Diagnostics (errors/warnings)
66+
- Formatting
67+
- Find References
68+
- Rename Symbol
69+
- Signature Help
70+
71+
These features work **consistently across any editor** that supports!
72+
73+
## How Does It Work?
74+
75+
Here's a simplified lifecycle of how an editor (client) talks to a language
76+
server:
77+
78+
1. **Editor launches the language server.**
79+
2. **Sends an `initialize` request** to begin communication.
80+
3. As you edit:
81+
82+
- Sends `textDocument/didOpen`, `didChange`, or `didSave`.
83+
- Receives back diagnostics or suggestions.
84+
85+
4. On hover, completion, or definition jumps:
86+
87+
- Sends `textDocument/hover`, `completion`, or `definition` requests.
88+
- Displays server responses in the UI.
89+
90+
All of this happens over a well-defined set of JSON-RPC messages.
91+
92+
### Anatomy of a Language Server
93+
94+
A language server is just a **program** that:
95+
96+
- Parses the user’s code (possibly building an AST or symbol table).
97+
- Responds to LSP method calls.
98+
- Tracks open files and their versions.
99+
100+
## Final Thoughts
101+
102+
The Language Server Protocol has quietly become the **backbone of modern
103+
developer tooling**. Whether you’re building an IDE, a DSL, or a configuration
104+
tool, LSP lets you ship a polished editing experience with far less effort.
105+
106+
If you're working on your own language, plugin, or platform, building an LSP
107+
server is one of the smartest investments you can make.
61.2 KB
Loading
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
title: "Packaging a VS Code Extension Using pnpm and VSCE"
3+
slug: "packaging-a-vs-code-extension-using-pnpm-and-vsce"
4+
date: 2025-08-31
5+
authors: ["Ansh Arora"]
6+
tags: ["Makim", "Automation", "VSCode", "pnpm", "esbuild"]
7+
categories: ["Packaging", "Node", "Extensions"]
8+
description: |
9+
A step-by-step guide to packaging and publishing VS Code extensions with pnpm and vsce,
10+
covering how to avoid dependency resolution issues.
11+
thumbnail: "/header.png"
12+
template: "blog-post.html"
13+
---
14+
15+
# Packaging a VS Code Extension Using pnpm and VSCE
16+
17+
VS Code’s `vsce` tool doesn't play nicely with `pnpm` out of the box; here’s a
18+
proven workaround using bundling and the `--no-dependencies` flag to get things
19+
running smoothly.
20+
21+
---
22+
23+
## Why pnpm + vsce can be problematic
24+
25+
`vsce` relies on `npm list --production --parseable --depth=99999`, which fails
26+
under pnpm's symlink-based dependency management, often throwing
27+
`npm ERR! missing:` errors.
28+
([github.com](https://github.com/microsoft/vscode-vsce/issues/421),
29+
[daydreamer-riri.me](https://daydreamer-riri.me/posts/compatibility-issues-between-vsce-and-pnpm/))
30+
31+
---
32+
33+
## Solution Overview
34+
35+
1. **Bundle your extension** using a bundler such as **esbuild** or **Webpack**
36+
2. **Use `--no-dependencies`** when running `vsce package` and `vsce publish`
37+
38+
Because all dependencies are bundled, `vsce` no longer needs to resolve them
39+
from `node_modules`.
40+
41+
---
42+
43+
## Step-by-Step Setup
44+
45+
### 1. Install Tools
46+
47+
```bash
48+
pnpm add -D @vscode/vsce esbuild
49+
```
50+
51+
@vscode/vsce` is the CLI for packaging and publishing VSCode extensions. Recent
52+
versions (e.g., v3.6.0) support npm (≥6) and Yarn (1.x), but don't officially
53+
support pnpm.
54+
55+
### 2\. Configure `package.json`
56+
57+
Scripts Add build and packaging commands: jsonc Copy code
58+
59+
```json
60+
{
61+
"scripts": {
62+
"vscode:prepublish": "pnpm run bundle",
63+
"bundle": "esbuild ./src/extension.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node --minify",
64+
"package": "pnpm vsce package --no-dependencies",
65+
"publish": "pnpm vsce publish --no-dependencies"
66+
}
67+
}
68+
```
69+
70+
- `vscode:prepublish`: runs before packaging; bundles source using esbuild
71+
- `bundle`: compiles `extension.ts` into `out/main.js` and excludes the `vscode`
72+
module
73+
- `package` / `publish`: calls VSCE via pnpm, skipping dependency resolution
74+
75+
### 3\. Why It Works
76+
77+
By bundling dependencies manually, `vsce` doesn’t need to resolve them during
78+
packaging or publishing. The `--no-dependencies` option avoids pnpm’s symlink
79+
issues entirely.
80+
81+
## Sample `package.json` Snippet
82+
83+
```json
84+
{
85+
"devDependencies": {
86+
"@vscode/vsce": "^3.6.0",
87+
"esbuild": "^0.XX.X"
88+
},
89+
"scripts": {
90+
"vscode:prepublish": "pnpm run bundle",
91+
"bundle": "esbuild ./src/extension.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node --minify",
92+
"package": "pnpm vsce package --no-dependencies",
93+
"publish": "pnpm vsce publish --no-dependencies"
94+
}
95+
}
96+
```
97+
98+
### **Wrap-Up**
99+
100+
Using **pnpm** with VS Code extensions involves a few extra steps because `vsce`
101+
doesn’t support pnpm’s dependency structure directly. The ideal workflow: _
102+
**Bundle your extension first**, then _ **Use `--no-dependencies`** to package
103+
and publish safely.

pages/index.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,18 @@ partners:
3434
url: https://www.pyopensci.org/
3535
logo: /images/partners/pyopensci.png
3636

37-
- name: PyDataStructs
38-
url: https://pydatastructs.readthedocs.io/en/stable
39-
logo: /images/partners/pydatastructs.png
40-
4137
- name: IGDORE
4238
url: https://igdore.org/
4339
logo: /images/partners/IGDORE-logo-200pxx200px.png
4440

41+
- name: Data Umbrella
42+
url: https://dataumbrella.org/
43+
logo: /images/partners/dataumbrella.png
44+
45+
- name: TeleHealthCareAI
46+
url: https://telehealthcareai.org/
47+
logo: /images/partners/thcai.png
48+
4549
initiatives:
4650
- title: Community
4751
description: |

0 commit comments

Comments
 (0)