9 ms·
Prologue: A web framework written in Nim
- dotdi 6y agoIt's really nice to see that the Nim ecosystem is gaining more and more traction. A good web framework is indeed quite an important step towards making a language/ecosystem more appealing to a more general audience. I've yet to encounter a small enough project with low risk where I could get away with trying something completely new, but I'm looking forward to trying Nim in the (hopefully very near) future. One negative thing that stood out to me was that commit messages are sometimes really bad, like "break" or "let me try". I'm not trying to bash the author, but I feel it's somewhat unprofessional.
- schwartzworld 6y agoConsidering he's offerring his work up for free, it seems very nitpicky to me
- akiselev 6y ago"Unprofessional" is a tad harsh for commit messages in a personal project but the "they're doing it for free" sentiment that gets expressed in almost every HN thread about open source projects isn't helping anyone either. Most personal projects of this scale are labors of love and I suspect most people wouldn't mind nitpicks given in good faith if it means exposing the project to a wider audience. Though I also suspect they will be triaged towards the bottom of the pile :)
- pgt 6y agoI guess all roads do lead to Prolog. Why risk the naming confusion? Doing a search for "prologue language" yields millions of Prolog results on both DDG and Google.
- sigzero 6y agoIt's getting to be almost impossible not to have a similar name to something else.
- jmnicolas 6y agoNimPrologue, NWF (NimWebFramework) etc I could probably come with dozen more names if I knew more about the project and after a bit of brainstorming.
- balthasar 6y agoA lot of different words out there.
- Wezl 6y agoAs a new user, I was able to get a pronounceable(ish) 4-letter username. It's not always hard. But Prologue is an English word and a lot of English words are taken. (and probably many words in other languages, too)
- tokai 6y agoWhen I try to search for your name, I only get hits on some country radio channel. I could search for ‘wezl hacker news’, but it would have been easier if you had chosen a non-colliding name to begin with.
- nepeckman 6y agoThis project isnt a language, it's a framework. Searching "prologue framework" or "prologue web framework" returns this repo as the first result.
- memsom 6y agoBut is is confusing if you know what Prolog is. Real world example: Once there was a new browser from Mozilla called Firebird. There was also a previously established RDBMS called Firebird. No one believed the browser and the RDBMS would be confused, but none the less Firebird the Browser is now called Firefox. The reason is a little confused - Mozilla at the time claimed something like "Firefox was only the code name", but I think they would have left it alone if the people from Firebird RDBMS hadn't asked them to rethink the naming. Edit: also, searching for "prolog web framework" gets you stuff about using prolog for web application development. So, yeah, naming is not great and your assertion is not entirely correct. The first few hits I got were: * https://www.metalevel.at/prolog/web https://www.metalevel.at/prolog/web * https://github.com/Anniepoo/weblog https://github.com/Anniepoo/weblog * http://www.pathwayslms.com/swipltuts/html/index.html http://www.pathwayslms.com/swipltuts/html/index.html And no sniff of this new framework.
- __ryan__ 6y ago> Edit: also, searching for "prolog web framework" gets you stuff about using prolog for web application development. So, yeah, naming is not great and your assertion is not entirely correct. Is this a typo? I would certainly hope that a search for "prolog web framework" would not include results about a web framework written in Nim named "Prologue" "Prolog" and "prologue" are completely different words with different meanings-- they are only homophones. It's not really analogous (at all) to the Firebird situation where the names of the projects had the exact same name, same spelling and all. If this project were named "Sea", do you think people would conflate it with the "C" programming language?
- planetis 6y ago> Is this a typo? I would certainly hope that a search for "prolog web framework" would not include results about a web framework written in Nim named "Prologue" Unfortunately not. It's caused by fuzzy matching and happens with other words (and languages) too. Annoying but I don't think we should start avoiding certain words because google search (and some people apparently) can't make the distinction.
- toolz 6y agosincerely asking: are you worried that anyone will suffer from this decision? Personally I can't imagine a scenario where someone actually feels any pain from this naming decision. Adding "nim" to your prologue search is par for the course for many categories of search. I laugh about how often I get guitar string ads because I'm always looking up "elixir string" documentation xD but it's not a pain point. Who suffers here? It's FOSS so the "marketing" of the project has little to do with the name I'd suspect. I mean who is going to pick a technology based on the search-ability? We're talking about decisions being made by people who are highly skilled internet searchers.
- sesuximo 6y agoIt just seems like a minor annoying that could be trivially avoided
- gdsdfe 6y agoyeah I don't get it either
- athenot 6y agoIt's no different than other languagages. If I'm searching for something about the express framework, I include "js" or "node" in my search terms. Same for rails, add "ruby". "go" is also a fun one…
- jjnoakes 6y agoI use "golang" as a search term for go.
- planetis 6y agoI think none mentioned here the fact that prolog and prologue are two different words. Prolog is a made up word, an abbreviation for "programmation en logique". Prologue means the introductory part. So why the confusion? I believe prolog is an excellent name for a logic PL and prologue is too for a web framework. Why change it? https://en.wikipedia.org/wiki/Prolog#History https://en.wikipedia.org/wiki/Prolog#History
- planetis 6y agoAlso it's not the first time I get garbage results from google's fuzzy matching, happens with other words too. Arguably it's annoying and should be improved instead.
- TruffleLabs 6y ago“Prologue is a powerful and extensible web framework written in Nim language.“ Powerful to me would be “able to create systems & applications in half the time compared to...” :)
- mratsim 6y agoI don't want people to create Electron in half the time ;)
- square_usual 6y agoNot the most relevant point, but those commit messages don't inspire confidence :/ E: I do like it, though. Don't want to bash on the project for no reason, just would prefer it if the maintainer tried to have better commit messages!
- johnisgood 6y agoIt does not instill confidence, for sure. 1 word commit messages, and even they have some typos, also "yeah".
- Xevi 6y agoI agree. I have absolutely no idea what was changed in most of those commits. If I relied on this framework it would be a pain in the * to trace down when a potential bug was introduced, or to just get an overview of what's being worked on.
- JNRowe 6y agoI was trying to track down a problem in the nim-lang/Nim repo, and had a similar impression. During a `git bisect` run I thought I'd made a mistake as I saw duplicate messages pop up, until I realised there are an enormous amount of duplicate messages in the repo. A lazy scan right now shows over a hundred "make tests green again", a dozen "fix(up|)", handful of "WIP", etc. And beyond that a huge chunk are just "update <something>". Even with ~20k commits you can catch duplicates in a single unlucky bisect session. I think I've come to the conclusion that /we/ in this subthread may be the problem though. Loads of projects are like that, and hardly anybody else cares. I suspect it just depends on how you are treating your VCS; I think it tells a story, others seem to think it just a snapshotting tool.
- ziotom78 6y agoThank you for this perspective: I never realized that "git bisect" is good only as long as commit messages are meaningful. I'm going to teach how to use "git" in my class next semester, and this is surely a point I will make!
- rishav_sharan 6y agoI have played around with it a bit and I just love the way the routes and middlewares are defined in this. I think the latest and greatest v0.4 will be released shortly, so anyone who is interested, do keep an eye out. Nim always was a bit lacking in webdev but with Prologue and Basolato, the web is suddenly looking much more interesting.
- chrismmay 6y agoOhhh, written in Prolog at the National Institute for Mental Health https://en.wikipedia.org/wiki/Mrs._Frisby_and_the_Rats_of_NIMH https://en.wikipedia.org/wiki/Mrs._Frisby_and_the_Rats_of_NI...
- zeeone 6y agoIt seems nothing groundbreaking. A router, some middleware and websockets. Also, nim is a mess. Very poorly designed language. I tried it a couple of years ago and was repelled by its syntax and attempts to solve every single problem for you.
- christiansakai 6y agoCurious in what way you said it is very poorly designed other than syntax issue?
- geodel 6y ago> It seems nothing groundbreaking. A router, some middleware and websockets. That is standard for Micro service/Web framework. 2 functions and a router and you are now "Open source Web framework" author on github.
- planetis 6y ago> attempts to solve every single problem for you. What are you talking about?
- no_wizard 6y agoNIM really is a full stack language and ecosystem. It has a first class compiler to JavaScript (though, I admit, I don't know how tuneable it is, so I think it just compiles down to ES5, it'd be nice to do a differential build where it would compile down to ES5 and/or ES2015/ES2016 at the users discretion) Only thing it needs now is a compile to CSS solution and you would never have to leave the language. Its a very thurough language in that regard. It also needs a strong GUI framework for desktop and mobile apps, as well, but still, its very fully featured! My hunch in this area is that you could just compile to Electron/NativeScript/React Native as a relatively 'quick' solution to these problems. I'm excited to see where this language goes. I'm pretty tempted to use it in production to replace Python for some things and may find it more expansive due to its flexibility of compile targets. My only gripe (and its relatively small) is I don't like its compiler directive syntax using the `{.directive.}` style, its a little ugly and noisy to me, I'd prefer something like rust's `#[]` (I think this is actually how you use a Rust macro, but its a nice syntax regardless) Not enough to stop me from thinking the language has some real upside and potential, though.
- michaelsbradley 6y agoQt + DOtherSide/NimQML is working out to be a decent GUI framework for desktop app development. https://github.com/filcuc/DOtherSide https://github.com/filcuc/DOtherSide https://github.com/filcuc/nimqml https://github.com/filcuc/nimqml LGPL compliance is an important consideration owing to Qt's being LGPL licensed, but it's actually not a big deal despite there being a lot of FUD around it: https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDyn...
- GavinMcG 6y agoWhy even bring up that style gripe? You acknowledge it's relatively small and inconsequential. If you're excited to see where the language goes, don't drag things down with completely subjective aesthetic criticisms.
- athenot 6y agoI wasn't a huge fan of that style too but it's growing on me. More importantly, it's worth noting that this is also intended for experimental features which can eventually become part of the language syntax. eg: proc hello(greeting: string): string {.noSideEffect.} became func hello(greeting: string): string
- Conlectus 6y agoI've been following Nim for a while now (including back when it was called Nimrod), but the big reason I've never dug much more into it is because it repeats the Billion Dollar Mistake[1] of allowing values (yes, not all values, but important ones) to be nil without explicitly using Option types. It's disappointing that Nim has not (perhaps cannot, for backwards compatibility) learned the same lesson here that most other modern languages have, and used explicit nilability embedded in the type system. And to preempt the argument that "you can't, for performance reasons!", you could do the same thing as Rust does and explicitly opt-in to having your code break if something is nil, via a call like `.unwrap()` which the compiler may optimize away. [1] https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare/ https://www.infoq.com/presentations/Null-References-The-Bill...
- rezeroed 6y agohttps://nim-lang.org/docs/options.html https://nim-lang.org/docs/options.html
- cheriot 6y agoThe real question is: how much of standard libraries and broader ecosystem use them? Scala has null values, but broad usage of Option and Either so I can often write code as if null didn't exist.
- planetis 6y ago> ... allowing values (yes, not all values, but important ones) to be nil ... What!? What that even means? Value types can't be nil in nim-lang, these are always initialized, but you can use Option[T] when you need it. If you mean reference types (`ref`) hopefully this PR will land soon https://github.com/nim-lang/Nim/pull/15287 https://github.com/nim-lang/Nim/pull/15287.
- Conlectus 6y agoReference types were indeed what I was referring to.
- yumaikas 6y agoSo, given that Jester exists and is a thing, how does this compare to it?