The word “vocabulary” is as basic to Factor as “module” or “crate” is in Rust, but I don’t know about the rest.
I generally feel negatively towards the mutable bags of state that are Smalltalk-inspired “images”, which might be rearing their heads here with the “refresh” verb.
“scaffold” refers to the “scaffold tool” which generates stub files for a vocabulary (module). Similar to how “cargo new” in Rust builds a stub project to work from. “refresh” refers to reloading code changed code on disk in source files into the running Factor system.
Yeah, on top of the (now fixed?) longstanding issue of the interactive UI being objectively unusable on HiDPI displays; the main reason I never got into Factor despite being intrigued by it is because it exclusively expected you to write code vendored in the Factor source directory itself, and programs were impossible to distribute other than “extract this tarball into your Factor source folder”. Versus e.g. Common Lisp, while having the Lisp machine “bag of state” sorta thing going on, people still expect programs to be reproducible from a standalone set of source code rather than shipping a binary “image”.
to write code vendored in the Factor source directory itself, and programs were impossible to distribute other than “extract this tarball into your Factor source folder”.
I forgot about this. This too was wildly off-putting.
We’ve had vocabulary roots for 20 years. These are just module search paths.
You can also ship binaries in a reproducible way using the deploy tool.
And we ship with a “work” directory where you can conveniently add any of your own code without configuring additional locations. I appreciate the feedback, thank you.
Hmm, sorry, I don’t remember precisely what my issue was but I remember distributing source code was difficult in some fashion (since I didn’t want to just distribute binaries).
There was never really an issue with distributing source code out-of-tree but for a long time it was just the idiomatic thing to do to add your code to Factor’s repository and let it be shipped/maintained with it. Libraries would change so fast in the early days that it made bitrot of third party code easier to manage.
Oh I was looking for image. I don’t think it’s anywhere in the documentation (because I couldn’t find a page for it just now) and an offhand explanation in a Discord channel really is not enough.
I couldn’t find that and that’s decent bare documentation but doesn’t explain why the concept of image keeps coming up. So arguably that’s pretty sparse for something that’s such a central concept.
(Not that I think there’s really a tutorial for factor linked on the site anyway.)
(Not that I think there’s really a tutorial for factor linked on the site anyway.)
The root page of the documentation site points to a “Guided Tour of Factor” amongst other things. This is also available in the help browser shipped with Factor. This is linked from the Factor homepage, which lists a number of useful beginner resources, including tutorials under “Get started programming with Factor”. I agree there doesn’t seem to be an early introduction to images though, that’s good feedback.
I really wanted to like Factor. But figuring out how to run code and package it and the paths and whatever was just too annoying.
This stuff:
“vocabulary”, “scaffold”, “refresh”?
score 1 · canonical
The word “vocabulary” is as basic to Factor as “module” or “crate” is in Rust, but I don’t know about the rest.
I generally feel negatively towards the mutable bags of state that are Smalltalk-inspired “images”, which might be rearing their heads here with the “refresh” verb.
score 2 · canonical
“scaffold” refers to the “scaffold tool” which generates stub files for a vocabulary (module). Similar to how “cargo new” in Rust builds a stub project to work from. “refresh” refers to reloading code changed code on disk in source files into the running Factor system.
score 1 · canonical
Yeah, on top of the (now fixed?) longstanding issue of the interactive UI being objectively unusable on HiDPI displays; the main reason I never got into Factor despite being intrigued by it is because it exclusively expected you to write code vendored in the Factor source directory itself, and programs were impossible to distribute other than “extract this tarball into your Factor source folder”. Versus e.g. Common Lisp, while having the Lisp machine “bag of state” sorta thing going on, people still expect programs to be reproducible from a standalone set of source code rather than shipping a binary “image”.
Although skimming the site it looks like they’ve added alternate “roots” and stuff now, where you can have more normal source trees? So maybe time for me to look into it again… https://docs.factorcode.org/content/article-add-vocab-roots.html
score 2 · canonical
I forgot about this. This too was wildly off-putting.
score 1 · canonical
We’ve had vocabulary roots for 20 years. These are just module search paths.
You can also ship binaries in a reproducible way using the deploy tool.
And we ship with a “work” directory where you can conveniently add any of your own code without configuring additional locations. I appreciate the feedback, thank you.
score 1 · canonical
Hmm, sorry, I don’t remember precisely what my issue was but I remember distributing source code was difficult in some fashion (since I didn’t want to just distribute binaries).
score 1 · canonical
There was never really an issue with distributing source code out-of-tree but for a long time it was just the idiomatic thing to do to add your code to Factor’s repository and let it be shipped/maintained with it. Libraries would change so fast in the early days that it made bitrot of third party code easier to manage.
score 3 · canonical
Oh I was looking for
image. I don’t think it’s anywhere in the documentation (because I couldn’t find a page for it just now) and an offhand explanation in a Discord channel really is not enough.score 1 · canonical
What are you looking for in the docs?
https://docs.factorcode.org/content/article-images.html
score 1 · canonical
I couldn’t find that and that’s decent bare documentation but doesn’t explain why the concept of image keeps coming up. So arguably that’s pretty sparse for something that’s such a central concept.
(Not that I think there’s really a tutorial for factor linked on the site anyway.)
score 1 · canonical
The root page of the documentation site points to a “Guided Tour of Factor” amongst other things. This is also available in the help browser shipped with Factor. This is linked from the Factor homepage, which lists a number of useful beginner resources, including tutorials under “Get started programming with Factor”. I agree there doesn’t seem to be an early introduction to images though, that’s good feedback.
score 1 · canonical
I know because I think I trawled all of that 1-2 years ago. The core language is great. All of the stuff around it is a bit difficult.
And I think the thing is that languages these days are more “the stuff around” than the actual thing and syntax itself.
score 1 · canonical