JuliaStats / PGM.jl

A Julia framework for probabilistic graphical models.
Other
52 stars 19 forks source link

name bikeshed #2

Open StefanKarpinski opened 10 years ago

StefanKarpinski commented 10 years ago

I'm not super into the OpenPP name. How about calling this Probabilistic.jl?

lindahua commented 10 years ago

The most accurate description of this business is Probabilistic Programming. Only Probabilistic doesn't seem to convey the meaning properly.

papamarkou commented 10 years ago

Would any of ProbabilisticModels or ProbabilisticGraphicalModels or ProbabilisticProgramming be not too long to consider as alternative names?

lindahua commented 10 years ago

I wish to have a not-too-long and easy-to-remember name.

This project was called DOPPLER (DOmain-specific language for Probabilistic Programming and machine LEaRning). The DOPPLER name was coined by BBN, which I don't think it is proper to use again.

StefanKarpinski commented 10 years ago

Since anything you do in a programming language is programming, I figured using Probabilistic reads pretty well to indicate that you're about to do some probabilistic programming – and Probabilistic.jl seems like a good, clear repo name. Since the terms "probabilistic models", "probabilistic graphical models" and "probabilistic programming" would all be fitting but longer, perhaps I should ask if there is there any common term starting with "probabilistic" that wouldn't fall under the scope of this package? If not, then I think just calling it Probabilistic is warranted.

lindahua commented 10 years ago

What about OpenPGM?

lindahua commented 10 years ago

The name Probabilistic strides me as too broad. This package concerns about doing probabilistic inference in a certain way that is closely related to probabilistic graph models.

lindahua commented 10 years ago

Or perhaps OpenPPL. It seems that PPL is a well defined acronym now:

http://en.wikipedia.org/wiki/Probabilistic_programming_language

papamarkou commented 10 years ago

I agree with both of you, ProbabilisticModels and ProbabilisticGraphicalModels are too long.

Probabilistic is overall ok, I only think that it may be a bit generic. For example, all the standalone packages in JuliaStats would fit in a package called Probabilistic...

PPL is a nice acronym, but the last letter refers to a language, and we are writing a package rather than a language...

lindahua commented 10 years ago

It is a domain-specific language embedded in Julia. It is still a language in some sense.

papamarkou commented 10 years ago

Then again, PPL may be fine if language is interpreted in the widest sense of the work... agree.

lindahua commented 10 years ago

Look at this list: http://en.wikipedia.org/wiki/Probabilistic_programming_language#List_of_probabilistic_programming_languages

Most of these things are just packages/libraries -- wikipedia still calls them PPL.

papamarkou commented 10 years ago

Yes, I was looking at this table. PPL sounds good to me.

StefanKarpinski commented 10 years ago

So OpenPPL.jl or just PPL.jl? Even if the PPL acronym is pretty standard, it's a bit unfortunate that reading it doesn't really tell you much of anything unless you already know it when you see using PPL.

papamarkou commented 10 years ago

This is true, the acronym is not informative. If we end up choosing it, PPL sounds better than OpenPPL in the sense that Julia and its packages are all open source in general. Ideally we would want to find a name more descriptive than PPL.

StefanKarpinski commented 10 years ago

I still think that using Probabilistic is pretty good. Yes, there are lots of things that are probabilistic, but they have other names like Distributions and GLM, etc. Maybe using ProbPL?

papamarkou commented 10 years ago

Although Probabilistic strikes me as an unusual choice due to it being an adjective not followed by a noun, I find it a reasonable option, I start getting used to it. I am not excited about ProbPL because it is half way between an acronym and an explicit name (I tend to be "bipolar" between these two, i.e. either acronym or explicit). One more thought; is StochasticModels any good? It has 3 letters less than ProbabilisticModels, so it may be ok in terms of its name length?

lindahua commented 10 years ago

Probably, it is a little bit ambitious. I envision this as a bigger project than a typical Julia package which deserves a special name.

Look at the names in this table. Many of them are acronyms that sound like English nouns. For example, Church and BUGS, which are not directly related to the things that the system is doing (at first glance). But now when people mention it, people knows what it is doing. Another excellent case in point is Julia itself.

Here is an article about choice of project names: http://blog.codinghorror.com/whats-in-a-project-name/

Another important thing to keep in mind is googleablility . When you type in Probabilistic in Google, this package probably won't be the entry that comes as the first one.

papamarkou commented 10 years ago

If we try to be a be a bit creative (hopefully not overly creative), how about ProbaModelica, JuliaModeller, StochasticJulia?

StefanKarpinski commented 10 years ago

Probabilistic.jl is quite googleable because of the ".jl". That coding horror article doesn't seem to care at all about whether the name is clear – it's specifically talking about code names. To me clarity is the most important part of picking a name. This has the side-effect of preventing name clashes, assuming that you also avoid duplicating work.

lindahua commented 10 years ago

The scope of this package is to construct a factor graph representation based on a DSL specification. In other words, it only covers a part of the entire framework. It has to work with other packages such as MCMC.jl to actually finish the job.

I would suggest calling it PPL.jl at this point. When we have more things ready, we can create a meta-package that combines multiple relevant packages to provide an environment for probabilistic programming. At that time, we may choose to use Probabilistic.jl (or other names) that indicate a bigger scope.

papamarkou commented 10 years ago

One more thought; it is true that other Julia packages in JuliaStats have names other than Probabilistic (such as Distributions or GLM or MCMC). I think that all of these, including the current package OpenPP, are logical subsets under the probabilistic umbrella, so it may be a bit misleading to call one of these packages Probabilistic.

One way that I can imagine validating a generic name entailing the world "probabilistic" for a package would be to use that package as the unifying framework bringing all the other packages together. The OpenPP package is aimed at unifying the model representation providing a single API for model specification (and for its underlying factor graph generation). It will not encompass inference or learning, therefore OpenPP is not offering a holistic probabilistic approach.

From this point of view and after careful thinking, my modest view is that neither Probabilistic nor PPL capture the scope of the package because they claim to do more than what they are designed to do. Both Probabilistic and PPL imply that we offer some sort of language for probabilistic modelling and inference, which does not reflect the facts exactly. OpenPP will focus on model specification, while other packages will focus on generating and operating on specific instances of models, or on providing inferential tools (MCMC inference or variational methods for example).

For this reason, I suggest we choose a name that is pointing towards the modelling (or graph) aspect, rather the more general probabilistic aspect.

lindahua commented 10 years ago

My understanding is that

Probabilistic programming refers to the entire process, which consists of two stages: (1) users use a language, usually referred to as a PPL, to specify the model and the query; (2) the some algorithm is used to perform the inference. Hence, whereas probabilistic programming involves a broader range, PPL itself seems to focus on a language that people use to specify the model. In this sense, PPL.jl still seems to be appropriate. However, I believe that people may have different understanding.

Another possible name is PGM.jl (Probabilistic Graphical Model): This package will build a graphical model representation based on the specification (probably as a factor graph), and may provide functions to process the graphs or compute its properties.

papamarkou commented 10 years ago

I can see your point @lindahua and I agree. It is a matter of interpretation and your interpretation is valid too. Following your reasoning, I think that both Probabilistic and PPL qualify as equally legitimate.

My favourite name so far is your proposed PGM because it is more aligned to my interpretation, but then again I would feel equally happy if we end up choosing PPL or Probabilistic.

lindahua commented 10 years ago

Ok, let's call it PGM.jl. It has two purposes:

papamarkou commented 10 years ago

Yes, I agree with the justification, sounds a good name to me.

lindahua commented 10 years ago

already to renamed to PGM.jl

amelio-vazquez-reina commented 10 years ago

I may be late to the party, but in case you are still open to suggestions, I think Bayes.jl or Bayesian.jl is a better name. Here are some arguments in favor of it IMHO:

lindahua commented 10 years ago

@ribonoous I may have to clarify a little bit. This package only concerns about model specification. It does not do inference. Inference is taken care by other packages, which uses the model specification constructed here.

milktrader commented 10 years ago

+1 for PGM.jl