|
| 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... |
0 commit comments