What are the goals of the Janet project? #554
Replies: 9 comments 31 replies
-
NOTE: If you are a frequent user of Janet, please let me know what things you would like to see in Janet. While adoption is always nice, Janet is not a commercial endeavor and my main goal is "to make a useful lisp-like programming language for scripting and extending C applications". The hope is that if the software is good, users will come. To that end, I think the core language is mostly there, and adding more functionality is encroaching on "bloat". However, we are not there yet and there is room to improve. However, wider adoption does make Janet more useful (more people adding code, more insight, more manpower, etc.), so "adoption" is just one factor that make Janet better software (and perhaps a better community). To improve adoption and also make Janet more useful as software, I think there are a few very important issues.
For my individual goals with Janet, I have many :). When possible, I like to use Janet as a spring board for any programming needs of mine where CPU performance is not an issue. It definitely takes a bit of ego to decide things in other programming languages are not good and re-implement them "better", but that is exactly what many programming languages do. |
Beta Was this translation helpful? Give feedback.
-
I'd like better cross-compilation (mingw build on GNU/Linux to make Windows .exe) support built into JPM, so I don't have to hack around it with things such as this (https://github.com/ahungry/ahungry-janet/blob/master/Wakefile32 and https://github.com/ahungry/ahungry-janet/blob/master/Wakefile). On the subject of jpm, I think the project.janet are a bit wild at the moment, as they execute arbitrary janet code during the build process vs being declarative lists of things that jpm needs to process (files, flags, etc.). This is good for flexibility, but also means everyone has a different ad-hoc solution to solving the same things (GNU/Linux custom build steps vs Windows custom build steps etc.), environment based setup things, dynamic package flag checks etc. Maybe both my wants would be achievable if we could have a generic project.janet for common build steps, and then architecture/OS specific project.linux.janet, project.windows.janet, project.ming.janet, project.osx.janet files which would activate when being built on that target? (it may also make it more clear what OS is and is not supported by various janet packages/libraries). |
Beta Was this translation helpful? Give feedback.
-
Thank you for Janet. I really appreciate its small size, simplicity, taste, practicality, docs, GPL-compatible license, and also how much you include the community. A few comments:
|
Beta Was this translation helpful? Give feedback.
-
I'm very, very much a newcomer, to Janet. Like bakpakin, I'd like to be able to use Janet for anything where CPU use isn't a concern, up to and including running it instead of JS in the browser, or developing GUIs or cross platform TUIs in it. I would also like to see the various edges of it tested more thoroughly, but that's probably mostly down to more total lines of Janet being written in more contexts. I have enjoyed the community quite a bit, y'all have been very helpful |
Beta Was this translation helpful? Give feedback.
-
I do not miss anything in the language itself. If we say to freeze the feature set, I won't object. Especially as adding new functionality is so easy with the module loaders, run-context and other tools. I am very interested in the Spec because it will on one side lead to examining the design and putting struts around it. Also, many newcomers with higher experience level will appreciate it. Documentation could get better, especially in some more advanced topics. But I think there is more work in tutorials, FAQs and other rather free forms. In the "broad the audience" I am on the same boat, people will come if the language is good. The biggest work lay in the ecosystem: libraries, packages, and free form documentation mentioned above. Anyway, I love the sentence: "everything Janet is fair game". For me, it is the motto of the language. |
Beta Was this translation helpful? Give feedback.
-
I definitely came to Janet (and continue to look to it) as a language suitable for small command line applications (though I hesitate to say ‘scripting’ because I like being able to compile and distribute those applications). If I were asked what I want to see out of it, it’s less along the lines of new features and more along the lines of making existing abstractions maximally composable. For instance, the work currently going into make threads and ev behave nicely together. Other examples are the standard ways, or lack thereof, for extending behavior. We have some one-off examples of ad-hoc extension of methods like :close and :compare. But it’s not productive yet, to the extent that if I know how to extend tables for comparison, I can infer how to extend tables for, say, iteration, or string/format, et cetera. |
Beta Was this translation helpful? Give feedback.
-
I've been interested in writing something like this for a little while now. There's a fairly wide array of major benefits that Janet offers, I guess I'll make a list.
Successful Innovation in Lisp(s)As I'm sure the majority of us know, Lisp has a rich and beautiful history, with many twists and turns along the way. Many would agree that Clojure and its successes have marked a sort of milestone in the ideals of Lisp, as it's reached a level of commercial popularity that demands attention from other PL and PLT communities. As we've seen over the past few years, there are now little lisps and clojurelikes popping up all over the place. I'm really happy that Janet takes so much from Clojure's ideals, and continue to iterate on these ideas in a way that seems fresh and confident. ev is a great example, I'm really quite excited to see what the future holds for Janet's stdlib. Maybe a core.logic clone someday? Who knows! Cross-platform, including Windows (!)Pretty self-explanatory, but I think being cross-platform is a HUGE benefit for any programming language. Especially Windows, because it accounts for a large portion of casual users who might not necessarily be running some hacker-y ArchLinux whatever, and they want to learn a little bit about Lisp programming with Janet. It's important not to send them down some MinGW rabbit hole of bad UX design. I'm delighted Janet can just be installed normally on Windows. Standalone, NOT hosted (!!)This is probably the biggest one for me, because it reduces the surface of potentially overwhelming new users with too much information when they go looking for the solution to a simple problem. By having a small language, with a small core, it's so much easier to explain things to newbies. Clojure isn't TERRIBLE about this, but if they're coming to Clojure from zero, there's this weird conversation of like "Oh yeah, there's Java and the JVM, which is this whole container for the universe that our Clojure code exists in, and occasionally the two need to communicate and there's Classes and Factory and ...." That's not very pleasant. Certainly in Janet, there's C, and its ability to talk to Janet, but the user doesn't need to have as much footing there. Future Wishlist
Thanks for all the work, @bakpakin. Truly, I believe history will remember you and what Janet is doing for practical programming languages. |
Beta Was this translation helpful? Give feedback.
-
One other concrete goal that I think we should have: For at least Windows, Linux, and Mac, we could make it so that repositories that are in the janet-lang organization can install with just a "jpm install", where possible. I'll have to look them over more, but I just did the work to get jaylib there. |
Beta Was this translation helpful? Give feedback.
-
I am really keen to get Janet on some simple Web projects. I understand the performance is a non-goal. But I wonder if it's fair to say that the performance will be roughly the same with Lua (not including LuaJIT in comparison)? In such case, do you recommend to use Janet on Web development? |
Beta Was this translation helpful? Give feedback.
-
Janet is a really terrific language. I think it hits a really great sweet-spot of simplicity and expressiveness. Like the smallness of Lua with the expressiveness of Python. The C amalgamation (only 30k lines) is like a superpower for embedding. And the community is exceptionally helpful and friendly. But is there a community goal? (or an individual one in the mind of @bakpakin?).
My assumption was the goal is "adoption", or perhaps "adoption while not losing your identity" (i.e. stay small, stay embeddable, etc.) But that is just my assumption. If adoption is the main goal though, it may be worth discussing what would cause Janet to become more widely adopted. Getting a language above the noise today is very non trivial. I feel like you pretty much need an "adoption hook" and some focus.
Thoughts?
Mike
Beta Was this translation helpful? Give feedback.
All reactions