Skip to content

Commit c277443

Browse files
committed
Differences from Atom
1 parent 1222828 commit c277443

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
title: "Pulsar : Differences from Atom"
3+
sitemap:
4+
priority: 0.1
5+
---
6+
7+
Pulsar reuses most code that used to belong to Atom. Everything that used to run
8+
on Atom 1.60.0 should run on Pulsar 1.100.0-beta, so if a package stops working
9+
it may be a bug on Pulsar.
10+
11+
Things that changed:
12+
13+
## Made it easier to install from source
14+
15+
Atom used to have a 5,000 script to prepare a development environment. That also
16+
dependend on older `npm` tool - newer `npm` versions would crash (and, honestly,
17+
still are crashing) so we moved away from `npm` and are now using `yarn`.
18+
19+
This is _not a final decision_ - we just decided for `yarn` because newer `npm`
20+
still doesn't work with Pulsar dependencies. Together with this decision, we
21+
added `electron` as a development dependency, and made some scripts like `yarn build` and `yarn start` to [make it easier to run the editor from
22+
source](/docs/launch-manual/sections/core-hacking). This also makes it easier
23+
for newcomers help if they want.
24+
25+
## Removed all Telemetry
26+
27+
Atom used to have a toggle for telemetry. Now, it's gone - no telemetry will be
28+
sent to our servers, ever. If you're seeing some suspicious requests to servers,
29+
first try to reproduce on safe mode and if it's still present, please open an
30+
issue - it may be leftover code that we missed.
31+
32+
We don't have telemetry andpoints on our backend, and don't intend to have any.
33+
34+
## Library bumps
35+
36+
At the time we forked Atom, it was using Electron 10. We changed to Electron 12
37+
(the latest version we could bump until things started to become problematic,
38+
like native dependencies crashing and other random errors). We _do intent_ to
39+
upgrade Pulsar to the latest Electron, and then try to keep up-to-date. This can
40+
cause issues with packages that used deprecated Electron features.
41+
42+
We also upgraded Tree-Sitter to the latest community version, and all grammars
43+
with it; bumped some other libraries in the process, trying to make things more
44+
up-to-date, but _no functionality_ was changed.
45+
46+
## Changes on the way Pulsar watches for file changes
47+
48+
At the time we forked Atom, it basically had three different ways of checking
49+
file changes: polling for changes, using tree-view as a mechanism, using an
50+
internal library called `@atom/watcher`, and using [Node sentinel file
51+
watcher](https://github.com/Axosoft/nsfw). We removed all options except for
52+
this latest one, because _all other options_ were internal code made by the Atom
53+
team.
54+
55+
In fact, the `@atom/watcher` was under the options "experimental watching
56+
library", and we actually have no idea what was the intended result for that.
57+
Considering it would probably become stale, buggy, and be a security issue, we
58+
decided to stop supporting it.
59+
60+
## Changes in the building process
61+
62+
This is somewhat controversial. Atom used to have a very big, very hard to
63+
follow, build process that needed constant tweaking to work. We removed all the
64+
build process to use the external tool
65+
[electron-builder](https://www.electron.build/)
66+
67+
While this made things easier for us and allowed us to have beta (and alpha)
68+
binaries for everything we want to develop and test (and that's, close to "day
69+
1" of our fork, we already had DEB, RPM, AppImage, both Intel and Silicon DMGs,
70+
and a Windows version on our CI server, ready to install and use), this had some
71+
unfortunate side-effects - Atom used to speed up the loading of the editor with
72+
both an in-house transpilation process, and a technique called [V8
73+
Snapshots](https://web.archive.org/web/20221215131147/https://flight-manual.atom.io/behind-atom/sections/how-atom-uses-chromium-snapshots/).
74+
It also depended on an in-house code called [Electron
75+
Link](https://github.com/atom/electron-link) and it was [**completely tied**
76+
with the way the source code was
77+
organized](https://github.com/atom/atom/blob/master/script/lib/generate-startup-snapshot.js).
78+
79+
None of these exist on the newer code. This means that _currently_ Pulsar takes
80+
more space on the disk _and_ it's slower to load on some systems. Another weird
81+
side-effect of the V8 Snapshots is that it allowed Atom to "preload" some code -
82+
sometimes, even **before** that could could even run! Which means we saw some
83+
weird bugs appearing that didn't happen on Atom (because some of the stuff that
84+
should be _loaded_ in the future was already _pre-loaded_ because of the
85+
snapshots), but this, again, made the development process unstable - the source
86+
ran differently than the final binaries.
87+
88+
We are working on a way to mitigate both problems.
89+
90+
## Dev resource path and benchmarks
91+
92+
Atom used to have a "dev resource path" toggle to allow one installed Atom
93+
instance to load using a different source code. We are slowly removing this
94+
ability because, as of now, it's both easier to run Pulsar from source and this
95+
technique depended on some dynamic requires (which does not play nice with code
96+
analysis tools and bundlers that we want to use in the future) and also because
97+
this technique did not allow us to update Electron.
98+
99+
We also removed the "benchmark window" because nobody could run that code, even
100+
on current stable Atom versions...

docs/docs/index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ fit into other topics. This is where you will find information about things
3030
like the tools used by the team and contributors, a glossary to translate
3131
any confusing jargon and details of the various APIs that make up Pulsar.
3232

33+
### [<i class="fa-solid fa-atom"></i> Differences from Atom](/docs/differences-from-atom/)
34+
35+
Pulsar is a fork of Atom - this means that it's currently using the same
36+
Atom code at version 1.63-beta (we did not upgrade further because then we
37+
would have to remove the sunset messages and undo their code that basically
38+
downgraded packages, where we want to _upgrade_ them). This section
39+
discusses other changes
40+
3341
### [<i class="fa-solid fa-box-archive"></i> Atom Archive](/docs/atom-archive/)
3442

3543
This is an archive of the old Atom documentation as it appeared on their

0 commit comments

Comments
 (0)