#2461 How to make Fantom more popular

go4 Sun 13 Sep 2015

If no enough user base, also no high quality developers. I noticed that many community projects are stopped. Some developers leave because of less ecosystem.

Anyone have idea to make Fantom more popular and attract more developers. What is Fantom miss now, And How to spread the world?

ahhatem Sun 13 Sep 2015

I don't think fantom lacks features, it lacks marketing. Most people include tech-savvy developers have never heard of it.

Despite the fact that we have a success story with Fantom and it did an amazing job, I am still not sure from a business risk perspective I can take the decision to use it in a multi-year project, unless we are willing to help maintain it ourselves along with all related libraries. Since the community is really small.I can't be sure that any library will actually still be actively developed or maintained in 5 years.

This situation leads to a position that in most larger projects, I can't take the decision to use Fantom despite being a Fantom fan and follower for years.

As a start, we need to find a way to make more people know that it exists...

ahhatem Sun 13 Sep 2015

On another hand, Fantom, despite having an amazing design is still held back by the large size of the sys library, the effort needed to port it to other platforms is always a challenge, none of the attempts actually worked...

Not exactly the reason of the lack of Fantom adoption but having Fantom code and most sys library work on other important stacks like NodeJS or LLVM would be really good.

Another related issue is that most community frameworks still rely heavily on java libraries (to my knowledge) which is good for getting solid production-ready libraries/frameworks fast, but it destroys the benefit of having a portable project, even if someone spent time to create an alternative runtime, most Fantom libraries/Frameworks won't work..... Given that most frameworks are maintained by 1-2 developers, it makes it almost impossible to expect a somewhat soon pure-fantom re-write of the framework.

For me, Fantom is a great JVM library with support to JS cross compiling giving me a very nice development experience and solid production ready code. But it is not a cross platform solution nor can I use it in anything outside the JVM. Any use on any other platform, if ever existed, would probably be a simple mostly-incompatible wrapper to the new platform libraries/frameworks. The problem is that this type of languages already exist for all platforms. So, Fantom wouldn't offer much new in this regard.

go4 Sun 13 Sep 2015

Yes, I agree with you, Fantom lacks marketing than features.

Some of my idea: (maybe no any help)

Documents enhance

The newcomer more prefer introduction than manuals or specification. But it’s difficult to find The Tour link in Docs page. Fantom need more tutorials and guide.

Move to Github

The Github is an open source community network. The Bitbucket is a service for enterprise develop. And the Github is more popular than Bitbucket.

There is a programming languages showcases and trending on Github.

Online javascript demo

I think some online JS-FWT demo will be attractive.

More compiler targets

I really like Haxe language has nine targets.

lbobr Tue 15 Sep 2015

Popularity is over-rated

What did popularity ever get a language -other than huge libraries, serious tooling, fame for the authors, jobs for the users -and the aquaduct ?

Fan strikes me as attractive because it isn't so popular.

A small town, as it were. One that would be nice to move to.

I would move into the old abandoned CLR place on the hill. A bit of a doer-upper, but hot property imo because of the new bridge the monkeys built over the river -which makes for a short commute to iOS and Android (it's a toll-bridge admittedly, but the Xamarin monkeys aren't greedy).

But ultimately I want to live off the land; a simple eco-friendly life where I generated so little garbage that no collector was needed, and I could have a garden full of tiny wireless rain-gauges running slightly odd Fan code.

I figure that if I wrote Fan carefully, I could live off grid -compiling Fan to to C, with just a small home-made runtime that does ref-counting. Perhaps I would start with some vala gnomes in the back end of the garden.

Right, that's enough day-dreaming.

LightDye Tue 15 Sep 2015

A similar question was raised nearly 2 years ago in Fantom needs more movement and I think that most comments in that topic are still relevant.

When I try to promote Fantom amongst my friends, the most common complaints are:

  • Fantom doesn't have generics (well, it does, but not user-generics)
  • Fansh isn't as fancy as Ruby's irb
  • But Scala does what Fantom does and it is more popular
  • Java 8 has closures, so who needs another language?

Personally I think Fantom will benefit from having:

  • A good tutorial for building a commercial-grade application including connectivity to RDBMS and transaction management.
  • A public example of an awesome application built in Fantom. A "Success story".
  • Better IDE integration. F4 is great but I don't think is upgraded frequently.
  • A game engine for Android and/or iOS.
  • A drag-n-drop UI designer for FWT.
  • Implement proxy authentication (currently unable to use fanr from behind a proxy, for example)

SlimerDude Fri 18 Sep 2015

True, Fantom doesn't have to be the most popular language, but it's always nice when more people use it. I believe it has a lot to offer, if only readable syntax and terse system libraries.

I remember the Fantom needs more movement topic, a direct result of which is the Fantom-Factory Website - so it's nice to see it appearing on Go4's Resource List!

I agree that cross-platform libraries are a good thing, and to that end, all my libraries in the Pod Repository are pure Fantom. More recently I've been ensuring they work in a Javascript runtime too. (I even have IoC and Reflux running in a browser - expect releases soon!)

elyashiv Thu 24 Sep 2015

I'm quite new to Fantom, and I well want to share a few thoughts.

First, the reason I know about Fantom is from a programming language course - I needed to do quite a few programming excises in Fantom. This was a fun experience, and I'm still programming in Fantom every now and then. Thanks for all the developers, I had lots of fun in that course.

A few things that won't so nice and fun, and I hope that they will improve:

  1. The F4 IDE doesn't work on GTK+ latest version, which means that it doesn't work on quite a few popular Linux distributions. I reported this bug, and it has bean processed for over 420 days (!). I know it's not this communities fault, but a IDE is a tool used a lot, and F4 is about the only good one.
  2. The docs are great, but it's hard to find something on the more advanced things. I fond myself reading through source code in order to understand the Build class, and it's just one example. The examples at the bottom of the documentation index are a good start, but it can be nice to have more of that.
  3. The IRC channel, which generally would have been a good place to get help and start is almost abandoned. If there is just one person active on the channel, it's harder to get help. I know this forum is a great place, and I do ask here for help, but noobs are scared to publish silly questions that will stay in the archives for ever, and a active IRC channel with nice people is less intimidating.
  4. Did you ever check how many questions are there in stackoverflow tagged "fantom"? Not very impressive. By looking at stackoverflow one can think this language is dead, and that no body is maintaining the pods. I know, as I said before, that this forum is a place for questions, but maybe we should change this - politely redirect questions to stackoverflow, and use this forum for discussion and bug reports.

SlimerDude Tue 29 Sep 2015

Hi elyashiv,

Thanks for sharing your background and how you came to know Fantom - I'm know I'm nosey and like to hear such things!

Yeah, I should log onto the IRC channel more - anyone's free to say "Hello!" and ask questions should they see me there!

Having written documentation, both for my own pods and articles, I can tell you that it's hard... it's hard knowing what to write about, it's hard guessing what the reader may or may not know, and it's hard gauging how much detail to give. So asking questions is really useful - giving answers to targeted questions is a lot easier than blindly writing examples!

To that end, asking questions on StackOverflow is a great idea - I know LightDye has been active there in the past!

shturman Fri 2 Oct 2015

Hi SlimerDude!

http://pods.fantomfactory.org return application error

Jimbo Fri 23 Jun

I know this is an old thread, but I thought I'd weigh in anyway.

I think making the website look prettier and more modern would help a lot.

The fonts look like they might be fixed width. The design would be improved a lot with larger font-size, and bigger line-spacing.

Also I don't see a simple tutorial (for whatever main target tasks fantom is designed for).

SlimerDude Sun 25 Jun

Hi Jimbo,

Thanks for your thoughts!

I think making the website look prettier and more modern would help a lot.

What do you make of fantom-lang.org? I've tried to make that site more attactive. For comparison, which sites do you like the look of?

The fonts look like they might be fixed width. The design would be improved a lot with larger font-size, and bigger line-spacing.

Hmm... on which pages? The only fixed width font I see are in the source code, so it may be browser / platform thing.

Also I don't see a simple tutorial

Yeah, more examples are always helpful. There are a couple on the examples page, then there are these on Alien-Factory:

jhughes Mon 10 Jul

I'd like to add that the lack of examples, and really the incomplete documentation, has really driven me away from fantom. At this point, the only thing I really use is the WISP server and everything else is pretty much written in java and pulled into the final fantom project.

For simple tasks (in java) I would assume there would be a way to find an equivalent as it's designed to be a java replacement but I keep finding myself just writing it in java and then pulling in that compiled java code into fantom because I spend too much time trying to find basic examples and just abandon for a more documented language.

A couple of examples from today I struggled with trying to find good working examples:

  1. I want to create an empty map in Fantom of a Str:Obj type.

JAVA - HashMap<String,Object> map = new HashMap()

Fantom - I've given up looking for a solution

  1. Spawn a new thread to run a method

    JAVA - 2 second google search results in plenty of examples

    Fantom - Too much time looking for this answer I still can't quite pin down the correct syntax and so i've abandoned for Java again

Fantom may have some benefits in places but the time I've spent just trying to do simple things like spawn a thread isn't worth the added effort. If Java has more classes to deal with for concurrency, i'll take the fully documented and example heavy Java over the hunt for simple examples in Fantom.

brian Mon 10 Jul

Certainly as a small language I could understand frustration with lack of examples. But the reference documentation is quite complete.

Although in your two cases:

  1. Searching for "create empty map" or looking at the sys::Map docs has a link to all the examples with an explicit example on how to create an empty map:
  2. There is no examples or reference for spawning Java Threads because we don't use threads since the concurrency model is actor based with immutable messages. The concurrency model is documented under docLang::Concurrency

Certainly using Java is quite fine too if you find that easier! But just remember that Fantom immutability and concurrency don't work well with Java's concurrency model, so you need to isolate it.

But if you are stuck on something, just ask on the forum!

jhughes Mon 10 Jul

I don't want to hijack this thread to explicitly talk about those two issues, these are just concerns I have with the documentation/examples. I've looked at those links you referenced in trying to solve the map issue. Looking at those examples again, I noticed this time the necessity of using the # at the end of a blank map creation using Str:Obj type so the syntax would be

map := [Str:Obj]#

But without those examples, where would I have found this syntax to use a #? This seems like something I would find in the documentation in the constructor section of the Map class but that is very limited in information.

Way more information on how to construct maps is found in the Literals section, which is just a confusing location to go to for information about map constructors. From here at least you could find out a complete explanation of how to construct this type of map without using #, which i'm still not sure when/where that got explained to be used for this type of thing outside of those example files.

Str:Obj map = [:]

brian Tue 11 Jul

Just to clarify in depth your last set of questions:

// this is a type as you might use in a field declaration 
// or method parameter 
Str     

// this is a type literal, same as Type.find("sys::Str"),
// in Java you would use String.class which would evaluate
// to a java.lang.Class; in Fantom type literals evaluate
// to a sys::Type
Str#    

// this is a string value literal, same as Java
"hello"  

If you aren't family with the term literal, it just means a special syntax to declare a data value literally. All programming languages have literals for numbers and strings. Some like Fantom have literals for lists and maps (Java doesn't have a literal representation for data collections other than arrays, so you can't really compare it to anything like Java).

So to take the string examples above for maps:

[Str:Obj]     // this is a type declaration for param/field
[Str:Obj]#    // this is a type literal (evaluates to Type instance)
[Str:Obj][:]  // empty map of type Str:Obj

Further information:

Note: there is an expectation to be productive in Fantom that you read all of docLang like a book. You find every concept covered. I would suggest if you do want to learn Fantom:

  1. First review docIntro::Tour
  2. Read all of docLang
  3. Review /doc/examples/index
  4. Always ask on forum if you have any questions

jhughes Tue 11 Jul

I understand docLang as being useful for somebody learning all the intricacies of fantom but it is not a good solution for full class documentation.

To use Java as an example, I do not open a Java book to refresh my memory on how to use a specific class because I remembered it was mentioned in some chapter, I go to that classes documentation. If I forgot how to make a new instance because I don't remember the parameters, I just take a look in the Constructor section and it's all documented.

With fantom, the make constructor for a map says almost nothing about its use.

new make(Type type)

Constructor with of type (must be Map type).

So now I have to look at the Type class to figure out how to make that, but I also need to know how to make a Map type, which the type class doesn't talk about. So now I have to remember this was talked about in doc/long/TypeSystem#mapSignature, which is in no way an intuitive workflow. Or I could also stumble on the literals documentation where more map constructors are mentioned.

But why do I have to constantly search for all these locations for basic information about the classes? Is it not a reasonable expectation of a user of programming language to find all the information about the Class they are using on the classes documentation page?

And I would additionally like to iterate, the syntax mentioned multiple times now as a valid way to create a map:

[Str:Obj]#    // this is a type literal (evaluates to Type instance)

Outside of the examples, where would I have learned this syntax? I have not seen it on any of the documentation pages mentioned or anywhere that i've looked.

All the answers might be in the documentation pages but the structure and scattered examples for some of the core objects can make it very difficult at times to put it all together for the complete story.

ttmrichter Mon 24 Jul

Reading documentation is hard, apparently.

What Fantom needs is videos. Jump-cut MTV-style.

fraya Thu 24 Aug

I was reading the Journal of Object Technology (JOT) and I found a paper/article made in 2015, which analyse all programming projects in GitHub trying to find the correlation between the number of commits (measure of success) and the popularity (watchers, collaborators,..). I hope you will find it interesting.

Popularity will NOT bring more contributions to your OSS project

Login or Signup to reply.