chapel-lang / chapel

a Productive Parallel Programming Language
https://chapel-lang.org
Other
1.76k stars 414 forks source link

Build a big set of libraries #6329

Open daviditen opened 7 years ago

daviditen commented 7 years ago

This list is taken from the Python standard library. These are the Python modules that I think would be useful in Chapel. This is an incomplete list - for example this list only includes one compression algorithm, but the Python standard library has several. It does not include Python libraries that are not in the standard library.

The format of this list is: Category

Data Types

Compression

File Formats

Cryptography

OS services

Interprocess Communication & Networking

Internet Data

Markup

Internet Protocols

Multimedia

Graphical User Interfaces

Profiling

ben-albrecht commented 7 years ago

Some libraries not listed above that will be needed by the package manager effort:

ben-albrecht commented 7 years ago

Flagged as [easy] since porting/wrapping libraries would be a good way for new Chapel developers to start contributing to the project.

@daviditen aptly pointed out that we will need some guidelines to help external contributors follow the conventions of introducing a new library to Chapel, e.g. getting feedback on a mockup interface, then a subset of the implementation, etc. ...

dqian96 commented 6 years ago

Hey, my name is David and I am currently a software engineering student. I would like to tackle this this issue, how should I get started? Thanks!

daviditen commented 6 years ago

Hi David,

Thanks for your interest! What areas are you most interested in working on? Since this issue was written we've had some good progress on Collections (DistributedBag, DistributedDeque) and Cryptography, but most of the rest are not spoken for.

A good way to start would be to mock up an interface of what the new module would look like with descriptions of what exposed functions/classes/records/etc. do.

For example, if you took the signal handling point, I could imagine a mockup that started like:

/* A module for raising and handling signals */
module SignalHandling {
  /* POSIX signals */
  enum signal { ... };

  /* Raise the signal `sig` */
  proc raise(sig: signal): void {}

  /* set up a signal handler for the signal `sig` */
  proc handleSignal(sig: signal, handlerFunction): void {}
}

From there you could open an issue asking for input on your design and start getting to work implementing it.

ben-albrecht commented 6 years ago

@dqian96 - here are some examples of recent interface proposals that @daviditen was mentioning:

If you are interested in starting with a ramp-up task, you might consider contributing to an existing module. Many of the next steps for existing module are documented in the format of "Improve X" where "X" is a module name. This issue query captures most of these issues.

dqian96 commented 6 years ago

@ben-albrecht - thanks for pointing me to those useful threads.

I think that improving an existing module would be a great place to start. I am interested in implement timSort for the sort module. I see that it was attempted before, but it was not merged. I think this would be a good place to start, as there already exists information on the implementation process.

Thanks

dqian96 commented 6 years ago

I submitted a PR for the tim sort implementation #7782 Please let me know if I'm on the right track! Thanks

krishnadey30 commented 5 years ago

@ben-albrecht @daviditen I would like to take up some of these issues. I would like to know more about heapq. You meant priority queue using heap right?

ben-albrecht commented 5 years ago

@krishnadey30 - yes, here is a good reference: https://docs.python.org/3.7/library/heapq.html

ben-albrecht commented 5 years ago

json - JSON encoder/decoder

@daviditen - Don't we already have support for this in our IO module? Do you think we could benefit from an additional JSON module similar to the TOML module?

csv - read/write CSV files

Perhaps we should remove this from the list now, or at least link to another issue that is tracking the progress on our csv module.

lydia-duncan commented 5 years ago

iirc, our JSON support is only used in formatted IO. @mppf is also a good person to ask

mppf commented 5 years ago

We need to pull the JSON encoder/decoder out of formatted I/O and into some sort of JSON support object. See #7846. It's true that it's currently only available through formatted I/O.

lydia-duncan commented 5 years ago

Also, isn't subprocess already handled?

daviditen commented 5 years ago

csv - read/write CSV files

Perhaps we should remove this from the list now, or at least link to another issue that is tracking the progress on our csv module.

There's a prototype in the test system but no official CSV module. The prototype would need design buy-in and better handling for malformed files before it could become an official module.

ben-albrecht commented 5 years ago

configparser - parse configuration files

From what I understand, this parses a format similar to Microsoft INI. I'm not sure there's much value to supporting this over other common config formats like TOML, YAML, and JSON, and suggest we drop it from this list.

dgarvit commented 5 years ago

Can I work on gzip library for chapel?

mppf commented 5 years ago

@dgarvit - I don't know of any other effort on that, so feel free

DmiitriyJarosh commented 4 years ago

Some libraries not listed above that will be needed by the package manager effort:

Hello, my name is Dmitrii. I am 3d year student of Saint-Petersburg State University in Russia. Implementing git2 sounds really great for me. Is it still able to be taken as a project? Can it be a part of GSOC program? Can you recommend me something to start with this topic?

ben-albrecht commented 4 years ago

Hi @DmiitriyJarosh --

Is it still able to be taken as a project?

Yes.

Can it be a part of GSOC program?

I think so, if you can identify someone to mentor the project -- see https://chapel-lang.org/gsoc/faq.html for info on proposing an original project.

Can you recommend me something to start with this topic?

I would suggest creating a separate issue for implementing a git2 Chapel interface, where further discussion about design and implementation can take place. Check out these guidelines for opening a design issue: ContributorInfo.rst#design

You will want to familiarize yourself with Chapel, specifically Chapel/C interop, for this project.

DmiitriyJarosh commented 4 years ago

Hi @DmiitriyJarosh --

Is it still able to be taken as a project?

Yes.

Can it be a part of GSOC program?

I think so, if you can identify someone to mentor the project -- see https://chapel-lang.org/gsoc/faq.html for info on proposing an original project.

Can you recommend me something to start with this topic?

I would suggest creating a separate issue for implementing a git2 Chapel interface, where further discussion about design and implementation can take place. Check out these guidelines for opening a design issue: ContributorInfo.rst#design

You will want to familiarize yourself with Chapel, specifically Chapel/C interop, for this project.

I created issue #15143 for design discussion

ben-albrecht commented 4 years ago

@egeOzpinar - AFAIK, yes.

egeOzpinar commented 4 years ago

@ben-albrecht Okay then I'll start as soon as possible. Thank you.

mukul-mehta commented 4 years ago

Hi! Could I work on the logging module? I'd also like to work on the argparse module.

ben-albrecht commented 4 years ago

@mukul-mehta - there is actually a logging mason package: https://github.com/ajoshpratt/chpllog

You might be able to contribute to that package though.

ben-albrecht commented 4 years ago

I'd also like to work on the argparse module.

That would be great.

Aniket21mathur commented 4 years ago

@ben-albrecht I like to work on the gzip library, is it available?

ben-albrecht commented 4 years ago

@ben-albrecht I like to work on the gzip library, is it available?

AFAIK, yes. That would be great!

parthsarthiprasad commented 4 years ago

@ben-albrecht Is work on support for file formats available? I've worked on integrating jpeg support for chapel as personal project once.

ben-albrecht commented 4 years ago

@parthsarthiprasad - I think so. A standalone jpeg package would be nice.

nimitbhardwaj commented 4 years ago

Is the wave multimedia library implemented? I have done some work with sounds in my projects with python at the root level of samples, I may work on it if it is not implemented yet.

ben-albrecht commented 4 years ago

@nimitbhardwaj - No one has worked on that one to my knowledge.

rapiz1 commented 3 years ago

For those who're interested in heapq, Heap is already in Chapel. Maybe heapq can be somehow extending Heap.

ben-albrecht commented 3 years ago

Removing [good first issue]. This mega-issue is useful for external contributors to find projects to work on in Chapel, but is not really a great starting point for a first-time contributor.

@daviditen - separately, I wonder if we should repackage this issue as "mason package ideas" since we don't expect any of these libraries to be contributed to the standard library initially.