matz / streem

prototype of stream based programming language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Package manager?

alexispurslane opened this issue Β· comments

I am volunteering to write a package manager similar to npm for Streem. I thought it might be named "River." Here are my ideas:

  • river install <git-repo> install project from git repo.
  • river install installs current director if it is a river project.
  • river remove <name> removes a project with this name.
  • river setup an interactive prompt wizard for setting up your project.
  • river version.
  • river run runs main.strm in the src/ directory
  • river bin creates a shebang file in the bin/ directory with your program.
    I plan to write in it either C or Rust. Let me know of any suggestions.

πŸ‘ Looks good, as long as there's a central registry for packages. It's more complicated that way, but in my opinion it's harder to maintain packages when you can only get dependencies directly through version control systems or online downloads (for example, Go).

I don't have a server with that kind of capacity though. Can you suggest something for that?

Also: I would like to have matz's opinion on naming. And I'm going to use JSON for config files. I have chosen to write it in C because it is more stable.

I run most of my open source web apps on Heroku. While some of their plans cost money, there is a free tier that I personally find pretty useful. However, I'm not sure if the free tier would be able to handle something of this capacity, and Heroku's dynos sleep when they're not in use if you're on the free tier.

I like river as a name. How about bucket (or something similar)? Since you can put some of the water in a stream into a bucket...

πŸ‘

πŸ‘
Hope to introduce namespace (e.g. matz/streem ) into the package manager. There is no such a thing in npm and the names of the packages are a bit mess.

I decided that (at least for the first version) I will use git. It will take the name of the package, and look on a organization called streem-lang for the packages. How about that?

I don't have the money currently to host a server.

While I'm still early on in the project, I'm going to move to Go.

@ChristopherDumas Would that mean that all packages (not just first party ones) would be in the streem-lang organization? If so, I don't like that, it makes things too strict, and it means that whenever GitHub is down, you can't safely deploy to production (which happens with Go's packaging). I like the idea of having a central registry where all the files for each package are copied too, which theoretically could be replicated in the future (this is what npm does). Of course, this requires more resources in terms of storage for the project. Maybe we could start by having packages link to sources somewhere else, and eventually there might be the ability to copy files if/when there is funding for it. That being said, Go sounds like a pretty good language to start with, it's fast, safe, and very good at handling concurrent networking.

I don't know.... I don't want to be the one paying for/maintaining the server that holds all our packages.......

Could you build it like ruby's bundle. You can add alternate source files. If those files had strict format anyone could host one. The file would be a manifest of package names to package locations. Perhaps a simple JSON structure...

I'll work on getting it working with github, and then, once we get some funding or something, than maybe we could do something else. https://github.com/streem-lang/river

Cool, sounds good. I think we'll be fine for now. Besides, there are some major package managers that still don't copy the contents of packages into their registries.

Alright! I've already got something working. The only problem is that when I run git, it replaces River's process.

The only problem now is that there is only so far I can get withougt streem itself working!

I don't think we should worry about implementing the package manager just yet, especially since a few implementation and design designs will be based around how Streem will work.

How about using JSON for the config files?

Personally I like my configs to be written in the same language as the project I'm working on.

As far as hosting packages, perhaps let the author choose the host, and publish a url to a central directory instead of the whole package.

A bit of a more ambitious project would be to use p2p/bittorrent to distribute packages. Not sure that's ever been done yet, sounds fun.

Currently I've actually got the Github thing done, as well as removing packages. My issue on Imports covers the problem I'm currently having. I've also already got the JSON config working, so until Streem is actually finished, I can't use Streem.

Currently, I've done:

  • river install author/name: Installs Streem package with same name and author from github
  • river remove name: Removes streem package that you name
  • river setup name: Interactive prompt to setup your project
  • river version: Version
  • river help: A help similar to this

I haven't done the bin and run commands because of the fact that Streem can't execute files yet. And I'm still wondering wether the install with no args command is even worth creating.

Thank you for the effort. I like the name river.
But Streem is still very young. The package manager is not needed yet.
When the time is come, it will be a great tool for the language.

πŸ‘ Can we close this and continue development on River's repo when Streem has matured more?

Sure! Actually, I got very far, but I can't go much farther because streem isn't working yet, so you guys had perfect timing!

Nice work. :)

I'm currently reading up on Go, C, Bison, Lex, and Yacc on my kindle so maybe I can make some more useful contributions!