Open source Web frameworks comparison and ratings

Open source Web frameworks comparison and ratings

Slides from my talk "Open source Web frameworks comparison and ratings" at TYPO3 Developer Days 2018 (23/06/2018, Düsseldorf, Germany) https://speakerdeck.com/fedir/open-source-web-frameworks-comparison-and-ratings #T3DD18

Fdeabaecd044c39cb7d75b104b0aff7c?s=128

Fedir RYKHTIK

June 23, 2018
Tweet

Transcript

  1. 1.

    Open source Web frameworks comparison and ratings Fedir RYKHTIK @FedirFR

    (@AgenceStratis), June 23, 2018, TYPO3 Developer Days 2018, Düsseldorf, Germany
  2. 2.

    Fedir RYKHTIK • CTO (3 y+) • Associate professor (3

    y+) • Back-end developer (10 y+) • DevOps / SA (10 y+) • @FedirFR Open source Web frameworks comparison and ratings, Fedir RYKHTIK June 24, 2018 - TYPO3 Developer Days, 2018, Düsseldorf, Germany
  3. 4.

    Tools used during analysis and comparison 1. Looking for all

    possible open source frameworks, hosted or mirrored on Github (173 found, 105 selected) a. At least several active contributors b. Recent activity 2. GitHub statistics collection and placement with fedir/ghstat 3. github/linguist for language detection (*) Frameworks listed in Z-A order, based on popularity / activity / maintenance metric coefficient Open source Web frameworks comparison and ratings - Fedir RYKHTIK - June 24, 2018 - TYPO3 Developer Days 2018, Düsseldorf, Germany
  4. 8.

    What is it a Web framework • A web framework

    (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including: ◦ web services, ◦ web resources, ◦ web APIs. • Web frameworks provide a standard way to build and deploy web applications. • Web frameworks aim to automate the overhead associated with common activities performed in web development. • Although they often target development of dynamic websites, they are also applicable to static websites.
  5. 9.

    WF typical components • Routing • URL rewriting • i18n

    & L10n • ORM • Testing framework(s) • DB migration framework(s) • Security framework(s) • Template framework(s) with HTML / JSON generation • Caching framework(s) • Form validation framework(s) • Users permissions framework • Logging • Search • File server • Assets management • Configuration management framework • Form • Validation • Debugging • CLI • Web UI • Generators
  6. 10.

    Frameworks statistics > Types • Client side ◦ Packaged libraries

    with predefined interfaces ◦ Web components oriented ◦ Generators • Server side ◦ Lowlevel / Fullstack ◦ Push / Pull Open source Web frameworks comparison and ratings - Fedir RYKHTIK - June 24, 2018 - TYPO3 Developer Days 2018, Düsseldorf, Germany
  7. 12.

    12 transient-haskell/axiom Placement: 105 Type: client-side and server-side Created at:

    2015/04 License: MIT Language: Haskell All languages: Haskell(99.97),HTML(0.03) Total code size: 74,271 Commits/day: 0.1762 Stars: 49 Forks: 5 Contributors: 5 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 6/5 URL: https://github.com/transient-haskell/axiom Client-side and server-side web framework over Transient and GHCJS (Haskell to JavaScript compiler) Example : main= simpleWebApp 8080 app app= do local . render $ rawHtml $ p "In this example you enter your name and the server will salute you" name <- local . render $ inputString (Just "enter your name") `fire` OnKeyUp <++ br -- new line r <- atRemote $ lliftIO $ print (name ++ " calling") >> return ("Hi " ++ name) local . render . rawHtml $ do p " returned" h2 r • https://github.com/transient-haskell/transient-examples/ blob/master/webapp.hs • https://github.com/transient-haskell/transient/wiki/Transi ent-tutorial#web-programming-axiom
  8. 13.

    13 appwilldev/moochine Placement: 104 Type: server-side Created at: 2012/02 License:

    Apache-2.0 Language: Lua All languages: Lua(91.18),Python(7.68),Shell(1.14) Total code size: 76,989 Commits/day: 0.0687 Stars: 208 Forks: 66 Contributors: 6 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 0/3 URL: https://github.com/appwilldev/moochine A (very) simple and lightweight web framework based on ngx-openresty. • Routing • Configs • Simple templating • Logging • Debugging Great, when You are programming in Lua (performance) and need some Web. Demo app: https://github.com/appwilldev/moochine-demo
  9. 14.

    14 wasabifx/wasabi Placement: 103 Type: backend Created at: 2013/03 License:

    Apache 2 OSS License Language: Kotlin All languages: Kotlin(99.71),HTML(0.27),CSS(0.02) Total code size: 178,859 Commits/day: 0.2160 Stars: 488 Forks: 64 Contributors: 18 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 23/28 URL: https://github.com/wasabifx/wasabi An HTTP framework that allows you to easily create back-end services for a web application or any other type of application that might require an HTTP API (not REST, not MVC) package org.wasabifx.wasabi.samples import org.wasabifx.wasabi.app.AppConfiguration import org.wasabifx.wasabi.app.AppServer fun main(args: Array<String>) { var server = AppServer() server.get("/", { val log = Log() log.info("URI requested is ${request.uri}") next() }, { response.send("Hello World!", "application/json") } ) server.start() } More samples: https://github.com/wasabifx/wasabi/tree/master/wasabi-sample s/src/main/kotlin/org/wasabifx/wasabi/samples
  10. 15.

    15 nitrogen/nitrogen Placement: 102 Type: client-side Created at: 2008/10 License:

    MIT Language: Erlang All languages: Erlang(50.50),Shell(14.86),Makefile(14.63),Perl(10.64), Emacs Lisp(4.53),HTML(1.94),CSS(1.50),Batchfile(0.78),Vim script(0.63) Total code size: 112,183 Commits/day: 0.2240 Stars: 837 Forks: 151 Contributors: 29 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 8/50 URL: https://github.com/nitrogen/nitrogen Nitrogen is an Erlang-based web framework that allows you to develop scaleable, Ajax-rich web applications using a pure Erlang technology stack. • 120+ built in Elements, Actions, and Validators • Easily extendable with your own elements • Plugin System • Built-in AJAX, Comet, and Websockets • jQuery Mobile • REST Handler • Runs on any Erlang Webserver with SimpleBridge body() -> #panel { style="margin: 50px;", body=[ #h1 { text="My Page" }, #label { text="Enter Your Name:" }, #textbox { }, #button { text="Submit", actions=[ #event{type=click, actions=#alert { text="Hello" } ]} ]}. http://nitrogenproject.com/doc/tutorial.html http://nitrogenproject.com/
  11. 16.

    16 positiondev/fn - A functional web framework Placement: 101 Type:

    Created at: 2015/10 License: [Custom license] Language: Haskell All languages: Haskell(98.97),Smarty(0.68),Makefile(0.35) Total code size: 56,223 Commits/day: 0.1051 Stars: 25 Forks: 4 Contributors: 4 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 2/3 URL: https://github.com/positiondev/fn {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} import Control.Lens import Data.Monoid import Data.Text (Text) import qualified Data.Text as T import Network.HTTP.Types import Network.Wai import Network.Wai.Handler.Warp import qualified Network.Wai.Util as W import Web.Fn data Ctxt = Ctxt { _req :: Request } makeLenses ''Ctxt instance RequestContext Ctxt where requestLens = req initializer :: IO Ctxt initializer = return (Ctxt defaultRequest) main :: IO () main = do context <- initializer run 8000 $ toWAI context app app :: Ctxt -> IO Response app ctxt = route ctxt [ end ==> index , path "foo" // segment // path "baz" // param "id" ==> handler] `fallthrough` notFoundText "Page not found." index :: IO (Maybe Response) index = okText "This is the index page! Try /foo/bar/baz?id=10" handler :: Text -> Int -> Ctxt -> IO (Maybe Response) handler fragment i _ = okText (fragment <> " - " <> T.pack (show i))
  12. 17.

    17 Ogeon/rustful Placement: 100 Type: server-side Created at: 2014/02 License:

    Apache-2.0/MIT Language: Rust All languages: Rust(98.18),Shell(1.82) Total code size: 218,969 Commits/day: 0.2796 Stars: 846 Forks: 50 Contributors: 13 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 7/59 URL: https://github.com/Ogeon/rustful A light HTTP framework for Rust, with REST-like features. The main purpose of Rustful is to create a simple, modular and non-intrusive foundation for HTTP applications. It has a mainly stateless structure, which naturally allows it to run both as one single server and as multiple instances in a cluster. • Generic response handlers. Use a function or implement the Handler trait. • Handy macros reduces the risk for typos and makes life easier. • Variables in routes, that can capture parts of the requested path. • Pluggable request and response filtering. #[macro_use] extern crate log; extern crate env_logger; extern crate rustful; use std::error::Error; use rustful::{Server, Context, Response}; fn main() { env_logger::init(); println!("Visit http://localhost:8080 to try this example."); let server_result = Server { host: 8080.into(), ..Server::new(|_: Context, res: Response| res.send("Hello!")) }.run(); match server_result { Ok(_server) => {}, Err(e) => error!("could not start server: {}", e.description()) } } Samples: https://github.com/Ogeon/rustful/tree/master/examples
  13. 18.

    18 amethyst-framework/amethyst Placement: 99 Type: server-side Created at: 2015/05 License:

    MIT Language: Crystal All languages: Crystal(99.98),HTML(0.02) Total code size: 76,817 Commits/day: 0.2469 Stars: 604 Forks: 42 Contributors: 20 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 12/24 URL: https://github.com/amethyst-framework/amethys t Amethyst is a web framework written in the Crystal language. The goals of Amethyst are to be extremely fast and to provide agility in application development, much like Rails. Some features • class-based controllers with method-based actions • views for actions (*.ecr) • filters for action • middleware support • simple REST routing • default routes for controller • path, GET and POST params inside actions • basic cookies support • static files serving • http logger and timer • simple environments support • simple session support Sample
  14. 19.

    19 danneu/kog - A simple Kotlin web framework inspired by

    Clojure's Ring. Placement: 98 Type: server-side Created at: 2016/11 License: MIT Language: Kotlin All languages: Kotlin(100.00) Total code size: 189,487 Commits/day: 0.3891 Stars: 34 Forks: 2 Contributors: 2 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 12/11 URL: https://github.com/danneu/kog A simple, experimental Kotlin web framework inspired by Clojure's Ring. A kog application is a function that takes a Request and returns a Response. Built on top of Jetty. Some features • Powerful type-Safe Routing • Static File Serving • Multipart File Uploads • Basic Auth • Compression / Gzip • HTML Templating • WebSockets • Caching • Logger • JSON • Cookies • Multilanguage Code sample
  15. 20.

    20 vladfaust/prism - Prism is an fast and expressive web

    framework Placement: 97 Type: server-side Created at: 2017/10 License: MIT Language: Crystal All languages: Crystal(100.00) Total code size: 87,085 Commits/day: 0.3691 Stars: 25 Forks: 1 Contributors: 1 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 3/24 URL: https://github.com/vladfaust/prism Features: • Efficiency based on Crystal performance • Safety with strictly typed params • DSL
  16. 21.

    21 HerikLyma/CPPWebFramework - The C++ (with Qt) Web Framework (CWF)

    is a MVC web framework. Placement: 96 Type: server-side Created at: 2016/10 License: MIT Language: C++ All languages: C++(95.57),QMake(3.33),CSS(0.61),C(0.25),Roff(0.23) Total code size: 237,082 Commits/day: 0.2824 Stars: 121 Forks: 19 Contributors: 3 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 0/3 URL: https://github.com/HerikLyma/CPPWebFramewo rk #include <cwf/sqlquery.h> #include <cwf/cppwebapplication.h> #include <cwf/sqldatabasestorage.h> CWF::SqlDatabaseStorage storage("QPSQL", "localhost", "postgres", "postgres", "1234", 5432); class CountriesController : public CWF::Controller { public: void doGet(CWF::Request &request, CWF::Response &response) const override { CWF::SqlQuery qry(storage); qry.exec("select * from countries"); response.write(qry.toJson()); } }; int main(int argc, char *argv[]) { CWF::CppWebApplication server(argc, argv, "/PATH_TO_EXAMPLE/server/"); server.addController<CountriesController>("/countries"); return server.start(); }
  17. 22.

    22 sailorproject/sailor - A Lua MVC Web Framework. Placement: 95

    Type: server-side and client-side (LuaJS VMs) Created at: 2014/01 License: MIT Language: Lua All languages: Lua(86.25),JavaScript(12.69),CSS(1.07) Total code size: 155,740 Commits/day: 0.3148 Stars: 794 Forks: 122 Contributors: 25 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 41/49 URL: https://github.com/sailorproject/sailor Features • MVC structure • Routing • Basic Object-relational mapping • Validation • Transactions • App comes already shipped with Bootstrap • Include, redirect • Sessions, cookies • Login module • Form generation • Friendly urls • Inspect function for better debugging => similar to a var dump • Custom 404 pages • Relations • Model generation (reading from DB) • CRUD generation (reading from model) • Theme and layouts • Integration with Busted for unit and functional tests for your app Simple controller sample: http://sailorproject.org/
  18. 23.

    Code sample -# LANGUAGE OverloadedStrings #-} module Main where import

    Web.Spock import Web.Spock.Config import Control.Monad.Trans import Data.Monoid import Data.IORef import qualified Data.Text as T data MySession = EmptySession data MyAppState = DummyAppState (IORef Int) main :: IO () main = do ref <- newIORef 0 spockCfg <- defaultSpockCfg EmptySession PCNoDatabase (DummyAppState ref) runSpock 8080 (spock spockCfg app) app :: SpockM () MySession MyAppState () app = do get root $ text "Hello World!" get ("hello" <//> var) $ \name -> do (DummyAppState ref) <- getState visitorNumber <- liftIO $ atomicModifyIORef' ref $ \i -> (i+1, i+1) text ("Hello " <> name <> ", you are visitor number " <> T.pack (show visitorNumber)) 23 agrafix/Spock - Haskell web framework for rapid development Placement: 94 Type: server-side Created at: 2013/09 License: BSD3 Language: Haskell All languages: Haskell(99.10),Shell(0.90) Total code size: 163,077 Commits/day: 0.2461 Stars: 485 Forks: 44 Contributors: 20 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 25/78 URL: https://github.com/agrafix/Spock Features • fast typesafe routing • middleware • json • sessions • cookies • database helper • csrf-protection • typesafe contexts
  19. 24.

    24 TinyMission/kara - Kotlin Web Framework for the JVM Placement:

    93 Type: server-side Created at: 2012/12 License: Apache 2.0 Language: Kotlin All languages: Kotlin(62.42),CSS(35.21),JavaScript(2.18),Java(0.20) Total code size: 411,184 Commits/day: 0.2926 Stars: 482 Forks: 74 Contributors: 17 Returning contributors (more than 4 weeks): 6 Open issues / Closed issues: 0/0 URL: https://github.com/TinyMission/kara Developed by JetBrains (authors of Kotlin). Maintained fork: https://github.com/JetBrains/kara The project is rather dead, than alive, but You could drop an eye on it, if You are working with other Kotlin. Demo app: https://github.com/JetBrains/kara/tree/maste r/samples/KaraDemo/src
  20. 25.

    25 mesosphere/chaos - A lightweight framework for writing REST services

    in Scala. Placement: 92 Type: server-side Created at: 2013/06 License: Apache-2.0 Language: Scala All languages: Scala(78.38),Java(18.36),HTML(2.27),CSS(0.99) Total code size: 40,689 Commits/day: 0.1033 Stars: 227 Forks: 36 Contributors: 16 Returning contributors (more than 4 weeks): 6 Open issues / Closed issues: 14/15 URL: https://github.com/mesosphere/chaos Building Blocks There are great JVM libraries for every part of a REST stack. • Jersey for REST via annotations • Guava for lifecycle management and various utilities • Jetty as the web server and servlet container • Jackson for JSON support • Coda Hale's Metrics for JVM and application metrics Chaos just glues these together. Demo app: https://github.com/mesosphere/chaos/tree/master/c haos-examples/src/main/scala/mesosphere/chaos/e xamples
  21. 26.

    26 plotly/dash Placement: 91 Type: Created at: 2015/04 License: MIT

    Language: Python All languages: Python(97.11),JavaScript(2.89) Total code size: 130,703 Commits/day: 0.3575 Stars: 5140 Forks: 497 Contributors: 17 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 56/154 URL: https://github.com/plotly/dash Dash is a Python framework for building interactive, reactive analytical web applications. No JavaScript required.
  22. 27.

    27 DiamondMVC/Diamond - Diamond is a full-stack web-framework written in

    The D Programming Language using vibe.d Placement: 90 Type: server-side Created at: 2017/10 License: MIT Language: D All languages: D(100.00) Total code size: 463,503 Commits/day: 0.6992 Stars: 128 Forks: 9 Contributors: 2 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 1/5 URL: https://github.com/DiamondMVC/Diamond Diamond can be used to write websites, webapis or as stand-alone as a template parser. Controller sample: module controllers.homecontroller; import diamond.controllers; final class HomeController(TView) : WebController!TView { this(TView view) { super(view); } /// / || /home @HttpDefault Status defaultAction() { view.model = new Home("World!"); return Status.success; } /// /home/setname/{name} @HttpAction(HttpPost) Status setName() { auto name = this.getByIndex!string(0); view.model = new Home(name); return Status.success; } }
  23. 28.

    28 go-macaron/macaron - Package macaron is a high productive and

    modular web framework in Go. Placement: 89 Type: server-side Created at: 2014/07 License: Apache-2.0 Language: Go All languages: Go(99.99),HTML(0.01) Total code size: 155,783 Commits/day: 0.1426 Stars: 2394 Forks: 226 Contributors: 15 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 12/115 URL: https://github.com/go-macaron/macaron Features • Routing (suburl, routes combinations, nested group routers) • Integrate with existing services • Templating: dynamically change template files at runtime, in-memory template ... • Modular design (plugin/unplugin features) • Dependency injection • Middlewares (captcha, piwik, gzip, sessions ...) • i18n Code sample import ( "gopkg.in/macaron.v1" "github.com/go-macaron/i18n" ) func main() { m := macaron.Classic() m.Use(i18n.I18n(i18n.Options{ Langs: []string{"en-US", "zh-CN"}, Names: []string{"English", "简体中文"}, })) m.Get("/", func(locale i18n.Locale) string { return "current language is" + locale.Lang }) // Use in handler. m.Get("/trans", func(ctx *macaron.Context) string { return ctx.Tr("hello %s", "world") }) m.Run() }
  24. 29.

    29 ChicagoBoss/ChicagoBoss Placement: 88 Type: server-side Created at: 2009/10 License:

    MIT Language: Erlang All languages: Erlang(81.51),HTML(12.18),CSS(3.24),Elixir(1.22),Makefi le(0.94),Shell(0.62),Batchfile(0.28) Total code size: 583,310 Commits/day: 0.2711 Stars: 1725 Forks: 307 Contributors: 63 Returning contributors (more than 4 weeks): 9 Open issues / Closed issues: 73/247 URL: https://github.com/ChicagoBoss/ChicagoBoss Server framework inspired by Rails and written in Erlang. It offers all the conveniences of modern web development, including Comet. Features • Easy server–side templates • Easy JSON generation • Django & Jade template support • 100% asynchronous I/O • WebSocket & long-poll support • Language–integrated query syntax • Fast, in-memory functional tests • Support for Erlang and Elixir code • Low RAM and CPU usage • Cluster–wide, channel–based message queue • Supports SQL and NoSQL databases • Fast garbage collection • Built-in email server • Hot code upgrades http://chicagoboss.org/ https://github.com/ChicagoBoss/ChicagoBoss/wiki
  25. 30.

    30 kittoframework/kitto - Kitto is a framework to help you

    create dashboards, written in Elixir / React. Placement: 87 Type: client-side Created at: 2016/05 License: MIT Language: Elixir All languages: Elixir(78.73),JavaScript(10.65),CSS(6.19),HTML(4.43) Total code size: 158,304 Commits/day: 0.3882 Stars: 698 Forks: 42 Contributors: 15 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 13/54 URL: https://github.com/kittoframework/kitto Features • Jobs are supervised processes running concurrently • Widgets are coded in the popular React library • Uses a modern asset tool-chain, Webpack • Allows streaming SSE to numerous clients concurrently with low memory/CPU footprint • Easy to deploy using the provided Docker images, Heroku (guide) or Distillery (guide) • Can serve assets in production • Keeps stats about defined jobs and comes with a dashboard to monitor them (demo) • Can apply exponential back-offs to failing jobs • Reloads code upon change in development
  26. 31.

    31 Wardrop/Scorched - Light-weight, DRY as a desert, web framework

    for Ruby. Placement: 86 Type: server-side Created at: 2012/08 License: MIT Language: Ruby All languages: Ruby(99.64),HTML(0.36) Total code size: 86,206 Commits/day: 0.0629 Stars: 240 Forks: 12 Contributors: 8 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 2/26 URL: https://github.com/Wardrop/Scorched Features • Controller • Configuration • Routing • Requests and Responses • Filters • Middleware • Request and Session Data • Views • Sharing Request State
  27. 32.

    32 soveran/cuba - Microframework for web development. Placement: 85 Type:

    server-side Created at: 2010/04 License: MIT Language: Ruby All languages: Ruby(99.38),HTML(0.53),Makefile(0.09) Total code size: 46,530 Commits/day: 0.0886 Stars: 1291 Forks: 179 Contributors: 25 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 3/36 URL: https://github.com/soveran/cuba Sample require "cuba" Cuba.define do on "hello" do res.write "hello, world" end on get, "articles/:id" do |id| article = Article[id] on "comments/:id" do |id comment = article.comments[id] end end end run Cuba
  28. 33.

    33 hypercube1024/firefly Placement: 84 Type: server-side Created at: 2012/02 License:

    Apache-2.0 Language: Java All languages: Java(95.75),Kotlin(3.72),HTML(0.47),JavaScript(0.05), CSS(0.02) Total code size: 4,441,140 Commits/day: 0.8361 Stars: 226 Forks: 118 Contributors: 1 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 0/9 URL: https://github.com/hypercube1024/firefly Asynchronous Java / Kotlin web framework for rapid development of high-performance web application. Java public class HelloHTTPServer { public static void main(String[] args) { $.httpServer() .router().get("/").handler(ctx -> ctx.end("hello world!")) .listen("localhost", 8080); } } Kotlin fun main(args: Array<String>) = runBlocking { val msg = firefly.httpClient().get("http://localhost:8080").asyncSu bmit().stringBody println(msg) }
  29. 34.

    34 nickel-org/nickel.rs - An express.js inspired web framework for Rust

    Placement: 83 Type: server-side Created at: 2014/06 License: MIT Language: Rust All languages: Rust(100.00) Total code size: 159,246 Commits/day: 0.3529 Stars: 2125 Forks: 148 Contributors: 54 Returning contributors (more than 4 weeks): 6 Open issues / Closed issues: 60/164 URL: https://github.com/nickel-org/nickel.rs • Flexible routing • Middleware • JSON handling • Custom error handler • Simple templating • Caching #[macro_use] extern crate nickel; use nickel::{Nickel, HttpRouter}; fn main() { let mut server = Nickel::new(); server.get("/bar", middleware!("This is the /bar handler")); server.get("/user/:userid", middleware! { |request| format!("This is user: {:?}", request.param("userid")) }); server.get("/a/*/d", middleware!("matches /a/b/d but not /a/b/c/d")); server.get("/a/**/d", middleware!("This matches /a/b/d and also /a/b/c/d")); server.listen("127.0.0.1:6767"); }
  30. 35.

    #include <kore/kore.h> #include <kore/http.h> int page(struct http_request *); int page(struct

    http_request *req) { http_response(req, 200, "Hello world", 11); return (KORE_RESULT_OK); } 35 jorisvink/kore - An easy to use, scalable and secure web application framework for writing web APIs in C. Placement: 82 Type: server-side Created at: 2013/06 License: [Custom license] Language: C All languages: C(97.56),Roff(1.25),Makefile(1.19) Total code size: 404,248 Commits/day: 0.6281 Stars: 2770 Forks: 256 Contributors: 31 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 1/158 URL: https://github.com/jorisvink/kore • Supports SNI & HTTP/1.1 • Websocket support • Lightweight background tasks • Built-in parameter validation • Only HTTPS connections allowed • Built-in asynchronous PostgreSQL support • Private keys isolated in separate process (RSA and ECDSA) • Default sane TLS ciphersuites (PFS in all major browsers) • Modules can be reloaded on-the-fly, even while serving content • Event driven (epoll/kqueue) architecture with per CPU core workers • Build your web application as a precompiled dynamic library or single binary
  31. 36.

    36 go-aah/aah - A secure, flexible, rapid Go web framework

    Placement: 81 Type: Created at: 2016/06 License: MIT Language: Go All languages: Go(97.99),HTML(1.77),CSS(0.25) Total code size: 285,431 Commits/day: 0.4727 Stars: 300 Forks: 12 Contributors: 3 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 8/133 URL: https://github.com/go-aah/aah aah is pronounced as ah (IPA: /ˈɑː/); it means delight, joyful pleasure. aah framework brings aah into web application development and its maintenance. • Routing • Multi-Environment Configuration • Parameters Auto Parse and Bind • Security OOTB • SPA and Mobile app support • Event handling and dispatching • Logging • i18n Internationalization • Error Handling • Static File Delivery • New project powerful CLI generator • Docker and systemd files generation
  32. 37.

    37 sugar-framework/sugar Placement: 80 Type: server-side Created at: 2014/01 License:

    MIT Language: Elixir All languages: Elixir(99.86),HTML(0.14) Total code size: 67,241 Commits/day: 0.1337 Stars: 361 Forks: 29 Contributors: 13 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 8/52 URL: https://github.com/sugar-framework/sugar Simple modular MVC web framework for Elixir Goals • Speed. Sugar shouldn't be slow and neither should your project. • Ease. Sugar should be simple because simple is easy to learn and use. • Effective. Sugar should aid development. You have better things to which to devote your time. router.ex defmodule Simple.Router do use Sugar.Router alias Simple.Controllers.Hello plug Sugar.Plugs.HotCodeReload get "/pages/:id", Hello, :show get "/pages" when true, Hello, :show any "/pages/:id" when id == 1, Hello, :show end controller.ex defmodule Simple.Controllers.Hello do use Sugar.Controller def show(conn, args) do conn |> render(args) end end show.html.eex showing page <%= @id %>
  33. 38.

    38 treefrogframework/treefrog-framework - TreeFrog Framework : High-speed C++ MVC Framework

    for Web Application Placement: 79 Type: server-side Created at: 2012/12 License: BSD-3-Clause Language: C++ All languages: C++(71.68),JavaScript(24.50), QMake(1.38),C(0.72),Batchfile(0.66),HTML(0.47),CMak e(0.42),Shell(0.16) Total code size: 2,012,515 Commits/day: 0.7771 Stars: 494 Forks: 117 Contributors: 16 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 14/112 URL: https://github.com/treefrogframework/treefrog-fr amework Some features • ORM with multiple DB backed support • Template system • WebSocket - Full-duplex communications channels • Generator - Generates scaffolds and Makefiles automatically • Cross-platform - Windows, macOS, Linux, etc. Write once, compile anywhere. • Ajax support - JSON, XML and Plain text available • Less resource - Stable operation even on Raspberry Pi More details http://www.treefrogframework.org/en/user-guide/tutorial/ https://github.com/treefrogframework/chatapp
  34. 39.

    39 iron/iron - An Extensible, Concurrent Web Framework for Rust

    Placement: 78 Type: server-side Created at: 2014/06 License: MIT Language: Rust All languages: Rust(100.00) Total code size: 61,619 Commits/day: 0.4244 Stars: 4909 Forks: 356 Contributors: 77 Returning contributors (more than 4 weeks): 4 Open issues / Closed issues: 63/179 URL: https://github.com/iron/iron Iron aims to fill a void in the Rust web stack - a high level framework that is extensible and makes organizing complex server code easy. • Routing • Static File Serving • Logging • JSON, URL, & Form Data parameters parsing • Shared Memory • Sessions Sample extern crate iron; use std::time::Duration; use iron::prelude::*; use iron::status; use iron::Timeouts; fn main() { let mut iron = Iron::new(|_: &mut Request| { Ok(Response::with((status::Ok, "Hello world!"))) }); iron.threads = 8; iron.timeouts = Timeouts { keep_alive: Some(Duration::from_secs(10)), read: Some(Duration::from_secs(10)), write: Some(Duration::from_secs(10)) }; iron.http("localhost:3000").unwrap(); }
  35. 40.

    40 lets-blade/blade - Fast and simple Java MVC framework Placement:

    77 Type: server-side Created at: 2015/06 License: Apache-2.0 Language: Java All languages: Java(99.96),HTML(0.04) Total code size: 734,937 Commits/day: 0.3531 Stars: 3748 Forks: 822 Contributors: 14 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 9/136 URL: https://github.com/lets-blade/blade Features • Routing • Controllers • Static Resources • Upload File • Sessions • Templating • Write Cookie • Web Hooks • Logging • Basic Auth Sample package com.blade.demo.helloworld; import com.blade.Blade; public class HelloApplication { public static void main(String[] args) { Blade.me().get("/", (request, response) -> response.text("Hello World")).start(HelloApplication.class, args); } } https://github.com/lets-blade/blade-demos
  36. 41.

    41 gotham-rs/gotham - A flexible web framework that promotes stability,

    safety, security and speed. Placement: 76 Type: server-side Created at: 2017/07 License: MIT + Apache 2.0 Language: Rust All languages: Rust(100.00) Total code size: 467,349 Commits/day: 2.2105 Stars: 899 Forks: 54 Contributors: 22 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 45/55 URL: https://github.com/gotham-rs/gotham extern crate gotham; extern crate hyper; extern crate mime; use hyper::{Response, StatusCode}; use gotham::helpers::http::response::create_response; use gotham::state::State; pub fn say_hello(state: State) -> (State, Response) { let res = create_response( &state, StatusCode::Ok, Some((String::from("Hello World!").into_bytes(), mime::TEXT_PLAIN)), ); (state, res) } pub fn main() { let addr = "127.0.0.1:7878"; println!("Listening for requests at http://{}", addr); gotham::start(addr, || Ok(say_hello)) } #[cfg(test)] mod tests { use super::*; use gotham::test::TestServer; #[test] fn receive_hello_world_response() { let test_server = TestServer::new(|| Ok(say_hello)).unwrap(); let response = test_server .client() .get("http://localhost") .perform() .unwrap(); assert_eq!(response.status(), StatusCode::Ok); let body = response.read_body().unwrap(); assert_eq!(&body[..], b"Hello World!"); } }
  37. 42.

    42 pradosoft/prado - Prado - Component Framework for PHP 5

    and 7 Placement: 75 Type: server-side Created at: 2004 License: [Custom license] Language: PHP All languages: PHP(93.49),JavaScript(5.18),HTML(0.62),Smarty(0.33), CSS(0.33),Batchfile(0.03),XSLT(0.01) Total code size: 4,551,028 Commits/day: 0.3487 Stars: 143 Forks: 61 Contributors: 13 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 35/596 URL: https://github.com/pradosoft/prado Classic PHP framework Hello World sample from https://github.com/pradosoft/prado-demos <?php $basePath=dirname(__FILE__); $assetsPath=$basePath.'/assets'; $runtimePath=$basePath.'/protected/runtime'; if(!is_writable($assetsPath)) die("Please make sure that the directory $assetsPath is writable by Web server process."); if(!is_writable($runtimePath)) die("Please make sure that the directory $runtimePath is writable by Web server process."); require '../vendor/autoload.php'; $application = new \Prado\TApplication; $application->run(); <?php class Home extends TPage { public function buttonClicked($sender,$param) { $sender->Text='Hello world!'; } } <com:TForm> <com:TButton Text="Click me" OnClick="buttonClicked" /> </com:TForm>
  38. 43.

    43 ninjaframework/ninja - Ninja is a full stack web framework

    for Java. Placement: 74 Type: server-side Created at: 2012/06 License: Apache-2.0 Language: Java All languages: Java(96.76),HTML(2.89),CSS(0.31),Shell(0.02),JavaScr ipt(0.02) Total code size: 2,106,952 Commits/day: 0.4804 Stars: 1774 Forks: 508 Contributors: 63 Returning contributors (more than 4 weeks): 12 Open issues / Closed issues: 130/169 URL: https://github.com/ninjaframework/ninja Features • Templating • Web Sockets • Validation • Uploading files • Scheduler • Lifecycle • Working with relational DBs • Caching • Internationalization • Static assets • Sending mail • Logging • Routing • Servlet bridge • Testing • Debugging • Encrypting sessions • Modules
  39. 44.

    44 UdashFramework/udash-core - Scala framework for building beautiful and maintainable

    web applications. Placement: 73 Type: server-side, client-side Created at: 2016/02 License: Apache-2.0 Language: Scala All languages: Scala(99.99),HTML(0.01) Total code size: 2,502,212 Commits/day: 0.4833 Stars: 295 Forks: 18 Contributors: 8 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 9/30 URL: https://github.com/UdashFramework/udash-core Features • Reactive Data Bindings - Automatically synchronise user interface with your data model. • Type-safe RPC & REST - A client↔server communication based on typed interfaces. Bidirectional RPC via WebSockets out of the box. • User Interface Components - Twitter Bootstrap components enriched by Udash features. • Routing - Udash serves a frontend routing mechanism. Just define matching from URL to view. • i18n - Translations served by the backend or compiled into JavaScript. • Generator - Generate a customized application, compile and try it out in 5 minutes. • Backend independent - Udash provides a complete support for your web application and the communication with the server but does not influence your backend implementation. import io.udash._ val name = Property("World") div( div( label("Name: "), TextInput.debounced(name, placeholder := "Type your name...") ), h3("Hello, ", bind(name), "!") ) https://scalafiddle.io/sf/z8zY6cP/0
  40. 45.

    45 Shirakumo/radiance - A Common Lisp web application environment Placement:

    72 Type: server-side Created at: 2014/02 License: Artistic-2.0 Language: Common Lisp All languages: Common Lisp(100.00) Total code size: 224,336 Commits/day: 1.1049 Stars: 90 Forks: 8 Contributors: 5 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 2/20 URL: https://github.com/Shirakumo/radiance Some features • Routing • Modules • Hooks • Caching • DB support • Logger • Mail • Sessions (define-page example "/example" () (cl-who:with-html-output-to-string (o) (cl-who:htm (:html (:head (:title "Example Page")) (:body (:header (:h1 "Couldn't Be Simpler.")) (:main (:p "Trust me on this one."))))))) https://github.com/Shirakumo/radiance-tutoria l
  41. 46.

    46 revel/revel - A high productivity, full-stack web Go MVC

    framework Placement: 71 Type: server-side Created at: 2011/12 License: MIT Language: Go All languages: Go(98.35),HTML(1.61),NewLisp(0.03),JavaScript(0.01) Total code size: 422,521 Commits/day: 0.4442 Stars: 9911 Forks: 1243 Contributors: 119 Returning contributors (more than 4 weeks): 13 Open issues / Closed issues: 67/759 URL: https://github.com/revel/revel Features • Routing, parameter parsing, validation • Filters: middlewares • Interceptors • Session/flash • Templating system • Caching • Job running • Testing framework • I18n • Synchronous • Stateless • Generators https://github.com/revel/examples • Database-driven hotel-booking application, including user management • Chat room with active refresh, long-polling (comet), and websocket implementations. • Input validation • Single and multiple file uploads • Twitter & Facebook OAuth
  42. 47.

    47 gin-gonic/gin - Fast HTTP Go web framework Placement: 70

    Type: server-side Created at: 2014/06 License: MIT Language: Go All languages: Go(99.48),Makefile(0.42),Shell(0.10) Total code size: 315,384 Commits/day: 0.5361 Stars: 17849 Forks: 2108 Contributors: 153 Returning contributors (more than 4 weeks): 6 Open issues / Closed issues: 218/691 URL: https://github.com/gin-gonic/gin Features • Routing • Validation • Files uploding • Authentification • Logging • Custom Middlewares Sample func main() { router := gin.Default() router.GET("/welcome", func(c *gin.Context) { firstname := c.DefaultQuery("firstname", "Guest") lastname := c.Query("lastname") c.String(http.StatusOK, "Hello %s %s", firstname, lastname) }) router.Run(":8080") }
  43. 48.

    48 rack-app/rack-app - Bare bone minimalist microframework for building rack

    apps Placement: 69 Type: server-side Created at: 2015/10 License: Apache-2.0 Language: Ruby All languages: Ruby(99.98),Shell(0.01),HTML(0.01) Total code size: 204,431 Commits/day: 0.5240 Stars: 343 Forks: 12 Contributors: 7 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 3/16 URL: https://github.com/rack-app/rack-app require 'rack/app' class App < Rack::App apply_extensions :front_end mount SomeAppClass headers 'Access-Control-Allow-Origin' => '*', 'Access-Control-Expose-Headers' => 'X-My-Custom-Header, X-Another-Custom-Header' serializer do |object| object.to_s end desc 'some hello endpoint' validate_params do required 'words', :class => Array, :of => String, :desc => 'some word', :example => ['pug'] optional 'word', :class => String, :desc => 'one word', :example => 'pug' end get '/hello' do puts(validate_params['words']) return 'Hello World!' end namespace '/users' do desc 'some restful endpoint' get '/:user_id' do response.status = 201 params['user_id'] #=> restful parameter :user_id say #=> "hello world!" end end desc 'some endpoint that has error and will be rescued' get '/make_error' do raise(StandardError,'error block rescued') end def say "hello #{params['user_id']}!" end error StandardError, NoMethodError do |ex| {:error=>ex.message} end root '/hello' get '/stream' do stream do |out| out << 'data row' end end end
  44. 49.

    49 kernelsauce/turbo Placement: 68 Type: server-side Created at: 2012/01 License:

    Apache-2.0 Language: Lua All languages: Lua(97.35),Makefile(1.25),Batchfile(0.79),Shell(0.62) Total code size: 549,146 Commits/day: 0.4921 Stars: 403 Forks: 72 Contributors: 29 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 20/162 URL: https://github.com/kernelsauce/turbo Turbo is a framework built for LuaJIT 2 (Just-In-Time Compiler) to simplify the task of building fast and scalable network applications. It uses a event-driven, non-blocking, no thread design to deliver excellent performance and minimal footprint to high-load applications while also providing excellent support for embedded uses. local turbo = require("turbo") local HelloNameHandler = class("HelloNameHandler", turbo.web.RequestHandler) function HelloNameHandler:get() local name = self:get_argument("name", "Santa Claus") self:write("Hello " .. name .. "!") end function HelloNameHandler:post() local name = self:get_argument("name", "Easter Bunny") self:write("Hello " .. name .. "!") end local app = turbo.web.Application:new({ {"/hello", HelloNameHandler} }) app:listen(8888) turbo.ioloop.instance():start()
  45. 50.

    50 bottlepy/bottle - bottle.py is a simple micro-framework for python

    web-applications Placement: 67 Type: server-side Created at: 2009/06 License: MIT Language: Python All languages: Python(98.55),Shell(0.69),Makefile(0.57),Smarty(0.18) Total code size: 315,005 Commits/day: 0.4190 Stars: 5489 Forks: 1121 Contributors: 153 Returning contributors (more than 4 weeks): 8 Open issues / Closed issues: 258/423 URL: https://github.com/bottlepy/bottle Features • Routing • Templating (mako, jinja2, cheetah ...) • Access to form data, file uploads, cookies, headers and other HTTP-related metadata • Built-in HTTP development server and support for paste, fapws3, bjoern, Google App Engine, cherrypy or any other WSGI capable HTTP server Sample from bottle import route, run, template @route('/hello/<name>') def index(name): return template('<b>Hello {{name}}</b>!', name=name) run(host='localhost', port=8080) http://bottlepy.org/docs/dev/tutorial.html
  46. 51.

    51 luckyframework/lucky - Full-featured Crystal web framework inspired by Rails,

    Phoenix and Elm Placement: 66 Type: server-side Created at: 2017/01 License: MIT Language: Crystal All languages: Crystal(99.83),HTML(0.17) Total code size: 261,955 Commits/day: 0.7865 Stars: 860 Forks: 50 Contributors: 28 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 65/244 URL: https://github.com/luckyframework/lucky "Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests." • Routing • Forms • Validators • Templating • Advanced DB operations • Authentication • CLI tasks • Sessions
  47. 52.

    52 pakyow/pakyow - Design-First Web Framework Placement: 65 Type: server-side

    Created at: 2010/10 License: [Custom license] Language: Ruby All languages: Ruby(71.09),HTML(22.57),JavaScript(6.32),CSS(0.01) Total code size: 1,682,178 Commits/day: 0.7795 Stars: 786 Forks: 69 Contributors: 19 Returning contributors (more than 4 weeks): 8 Open issues / Closed issues: 18/140 URL: https://github.com/pakyow/pakyow Pakyow lets you quickly build a prototype writing only HTML and CSS. Pakyow promotes a view-first development process. Put simply, view-first development enables the presentation layer of a website or web app to be built and maintained separately from the logic that renders it. Features • Routing • Sessions • Database support • Forms • Emails notifications • Session & Cookies • Logging
  48. 53.

    53 labstack/echo - High performance, minimalist Go web framework Placement:

    64 Type: server-side Created at: 2015/03 License: MIT Language: Go All languages: Go(99.67),Makefile(0.22),HTML(0.11) Total code size: 231,293 Commits/day: 0.8371 Stars: 10573 Forks: 928 Contributors: 103 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 124/654 URL: https://github.com/labstack/echo • Routing (RESTful APIs; Group APIs) • Extensible middlewares (at root, group or route level) • Data binding for JSON, XML and form payload • Handy functions to send variety of HTTP responses • Centralized HTTP error handling • Template rendering with any template engine • Custom logging formats • Automatic TLS via Let’s Encrypt • HTTP/2 support package main import ( "net/http" "github.com/labstack/echo" "github.com/labstack/echo/middleware" ) func main() { e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.GET("/", hello) e.Logger.Fatal(e.Start(":1323")) } func hello(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") }
  49. 54.

    54 TurboGears/tg2 - Python web framework with full-stack layer implemented

    on top of a microframework core with support for MongoDB, Pluggable Applications and autogenerated Admin Placement: 63 Type: server-side Created at: 2011/02 License: [Custom license] Language: Python All languages: Python(98.53),HTML(1.35),Makefile(0.13) Total code size: 865,318 Commits/day: 0.3338 Stars: 246 Forks: 58 Contributors: 26 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 11/63 URL: https://github.com/TurboGears/tg2 Components • SQLAlchemy (Model) - defines the table structures of the user's database and how to link them to Python objects the user's controller can interact with. • Ming (Model) - provides the data access layer for MongoDB, much like SQLAlchemy defines how to link MongoDB collections to Python objects the user's controller can interact with. • Genshi (View) - defines templates for the HTML or XHTML the user will generate. • Repoze - Repoze.who is used to handle security (identification and authentication). Users can define authorization rules based on predicates attached to controllers. • ToscaWidgets - is the primary widget library for creating forms and complex GUIs. Tosca by default will generate simple HTML forms, but can also be used as a middleware to connect to more advanced JavaScript widgets and toolkits. • Gearbox - is the toolkit used by TurboGears to manage projects, create new ones and serve TurboGears applications. More information • http://turbogears.readthedocs.io/en/latest/turbogears/mi nimal/index.html • http://turbogears.readthedocs.io/en/latest/turbogears/wi ki20.html • https://en.wikipedia.org/wiki/TurboGears
  50. 55.

    55 leafo/lapis - A web framework for Lua and OpenResty

    written in MoonScript Placement: 62 Type: server-side Created at: 2012/10 License: [Custom license] Language: MoonScript All languages: MoonScript(54.43),Lua(44.89),Shell(0.59),Makefile(0.1 0) Total code size: 731,511 Commits/day: 0.7327 Stars: 1942 Forks: 188 Contributors: 41 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 129/373 URL: https://github.com/leafo/lapis • Routing • Database access • Validation • Templating • CLI tool Lua local lapis = require "lapis" local app = lapis.Application() app:match("/", function(self) return "Hello world!" end) return app Moonscript lapis = require "lapis" class extends lapis.Application "/": => "Hello world!"
  51. 56.

    56 voltrb/volt - A Ruby web framework where your Ruby

    runs on both server and client Placement: 61 Type: server-side, client-side Created at: 2014/01 License: MIT Language: Ruby All languages: Ruby(91.63),HTML(6.91),JavaScript(1.37),CSS(0.09) Total code size: 832,461 Commits/day: 1.0471 Stars: 3313 Forks: 216 Contributors: 61 Returning contributors (more than 4 weeks): 4 Open issues / Closed issues: 76/122 URL: https://github.com/voltrb/volt Volt is a Ruby web framework where your Ruby code runs on both the server and the client (via Opal, JavaScript source-to-source compiler). Instead of syncing data between the client and server via HTTP, Volt uses a persistent connection between the client and server. When data is updated on one client, it is updated in the database and any other listening clients (with almost no setup code needed). Demo apps • https://github.com/voltrb/blog5 • https://github.com/voltrb/todomvc (*)Project is not updated since a moment.
  52. 57.

    57 SergioBenitez/Rocket - A web framework for Rust Placement: 60

    Type: server-side Created at: 2016/03 License: [Custom license] Language: Rust All languages: Rust(99.23),Shell(0.76),HTML(0.01) Total code size: 922,162 Commits/day: 1.2346 Stars: 4585 Forks: 299 Contributors: 91 Returning contributors (more than 4 weeks): 1 Open issues / Closed issues: 92/385 URL: https://github.com/SergioBenitez/Rocket • Routing • Databases • Forms • Validation • Configuration • Templating #![feature(plugin, decl_macro)] #![plugin(rocket_codegen)] extern crate rocket; #[cfg(test)] mod tests; #[get("/hello/<name>/<age>")] fn hello(name: String, age: u8) -> String { format!("Hello, {} year old named {}!", age, name) } #[get("/hello/<name>")] fn hi(name: String) -> String { name } fn main() { rocket::ignite().mount("/", routes![hello, hi]).launch(); } More information • https://github.com/SergioBenitez/Rocket/tree/master/ examples • https://rocket.rs/
  53. 58.

    58 kataras/iris - Go web framework for Go. Placement: 59

    Type: server-side Created at: 2016/01 License: BSD-3-Clause Language: Go All languages: Go(99.04),TypeScript(0.94),HTML(0.02) Total code size: 992,944 Commits/day: 1.2877 Stars: 10544 Forks: 1084 Contributors: 40 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 4/845 URL: https://github.com/kataras/iris • Routing (group, wildcards) • Middlewares support • Basic Authentication, OAuth2, JWT • Multiple templating engines supported • Websockets • Sessions • Caching • I18N package main import ( "github.com/kataras/iris" "github.com/kataras/iris/middleware/logger" "github.com/kataras/iris/middleware/recover" ) func main() { app := iris.New() app.Logger().SetLevel("debug") app.Use(recover.New()) app.Use(logger.New()) app.Handle("GET", "/", func(ctx iris.Context) { ctx.HTML("<h1>Welcome</h1>") }) app.Get("/ping", func(ctx iris.Context) { ctx.WriteString("pong") }) app.Get("/hello", func(ctx iris.Context) { ctx.JSON(iris.Map{"message": "Hello Iris!"}) }) app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed)) }
  54. 59.

    59 pippo-java/pippo - Micro Java Web Framework Placement: 58 Type:

    server-side Created at: 2014/10 License: Apache-2.0 Language: Java All languages: Java(98.52),Groovy(0.63),HTML(0.53),FreeMarker(0.3 2) Total code size: 1,157,892 Commits/day: 0.7597 Stars: 663 Forks: 91 Contributors: 18 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 14/171 URL: https://github.com/pippo-java/pippo • Routing • Filters • Static files • Templates • Form processing • Content types • Settings • Session • Reverse routing • Modules • Security • Upload • Internationalization • Hot reloading • WebSocket
  55. 60.

    60 Ramaze/ramaze - Simple, light and modular Ruby web application

    framework Placement: 57 Type: server-side Created at: 2010/04 License: [Custom license] Language: Ruby All languages: Ruby(94.03),CSS(2.78),Nix(1.99),HTML(1.14),Mathema tica(0.03),Liquid(0.03) Total code size: 411,419 Commits/day: 1.0483 Stars: 343 Forks: 34 Contributors: 49 Returning contributors (more than 4 weeks): 9 Open issues / Closed issues: 15/41 URL: https://github.com/Ramaze/ramaze Ramaze is a very simple and straight-forward web-framework. The philosophy of it could be expressed in a mix of KISS and POLS, trying to make simple things simple and complex things possible. • Routes • Controllers • Models • Views • Helpers • Middlewares • Sessions • Caching Data Examples https://github.com/Ramaze/ramaze/tree/mas ter/examples
  56. 61.

    61 balderdashy/sails Placement: 56 Type: server-side Created at: 2012/03 License:

    MIT Language: JavaScript All languages: JavaScript(99.99),HTML(0.01) Total code size: 1,342,436 Commits/day: 2.4969 Stars: 19139 Forks: 1810 Contributors: 210 Returning contributors (more than 4 weeks): 16 Open issues / Closed issues: 118/3543 URL: https://github.com/balderdashy/sails Sails.js (or Sails) is a Model-View-Controller (MVC) web application framework. It is designed to make it easy to build custom, enterprise-grade Node.js web applications and APIs. Emulating the MVC architecture of other frameworks, like Ruby on Rails, it offers similar pattern and familiarity, reducing the cognitive burden when switching between other frameworks/languages. • Models • Views • Controllers • Database adapters • ORM (Waterline.js) • Auto-generated REST APIS, WebSockets by default using Socket.io
  57. 62.

    62 snapframework/snap-core Placement: 55 Type: server-side Created at: 2010/05 License:

    BSD-3-Clause Language: Haskell All languages: Haskell(97.66),CSS(1.54),Shell(0.70), C(0.10) Total code size: 571,466 Commits/day: 0.2707 Stars: 297 Forks: 71 Contributors: 43 Returning contributors (more than 4 weeks): 7 Open issues / Closed issues: 16/178 URL: https://github.com/snapframework/snap-core Snap is a simple Haskell web development framework for UNIX systems Core type definitions (Snap monad, HTTP types, etc) and utilities for web handlers. Features • A fast HTTP server library • A sensible and clean monad for web programming • An HTML-based templating system for generating pages Snaplets A snaplet is a composable web application. Snaplets allow you to build self-contained pieces of functionality and glue them together to make larger applications. Here are some of the things provided by the snaplet API: • Infrastructure for application state/environment • Snaplet initialization, reload, and cleanup • Management of filesystem data and automatic snaplet installation • Unified config file infrastructure
  58. 63.

    • Routing • Caching • Middleware • Configuration • Validation

    • Entity • Template module app.controller.test; import hunt; class TestController : Controller { mixin MakeController; @Action string hello() { return "Hello world!"; } } 63 huntlabs/hunt - A high performance full-stack Web framework written in D programming Language. Placement: 54 Type: server-side Created at: 2016/05 License: [Custom license] Language: D All languages: D(100.00) Total code size: 269,722 Commits/day: 0.7516 Stars: 60 Forks: 12 Contributors: 13 Returning contributors (more than 4 weeks): 7 Open issues / Closed issues: 0/37 URL: https://github.com/huntlabs/hunt
  59. 64.

    64 totaljs/framework - Node.js framework Placement: 53 Type: server-side Created

    at: 2012/12 License: MIT Language: JavaScript All languages: JavaScript(99.36),HTML(0.58),Shell(0.05),CSS(0.00) Total code size: 1,069,901 Commits/day: 1.7238 Stars: 3699 Forks: 413 Contributors: 20 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 3/508 URL: https://github.com/totaljs/framework Total.js framework is a framework for Node.js platfrom written in pure JavaScript similar to PHP's Laravel or Python's Django or ASP.NET MVC. It can be used as web, desktop, service or IoT application. • Controllers • Modules • Packages • Models • View engine • Components • Localization • Authorization • Validation • Security (XSS, CSRF, CORS) • Themes • Isomorphic code • Database
  60. 65.

    65 amberframework/amber Placement: 52 Type: server-side Created at: 2017/04 License:

    MIT Language: Crystal All languages: Crystal(84.06),HTML(13.26),JavaScript(2.11),CSS(0.39) , Makefile(0.18) Total code size: 469,844 Commits/day: 2.1948 Stars: 1158 Forks: 91 Contributors: 53 Returning contributors (more than 4 weeks): 8 Open issues / Closed issues: 79/231 URL: https://github.com/amberframework/amber Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance. Inspired by Kemal, Rails, Phoenix and other popular application frameworks. • Controllers • Views • Models • Routing • Websockets • Mailers Sample require "amber" ​ class HelloController < Amber::Controller::Base def index "hello world" end end ​ Amber::Server.configure do |app| pipeline :api do end ​ routes :api do get "/", HelloController, :index end end ​ Amber::Server.start
  61. 66.

    66 web2py/web2py - Free and open source full-stack enterprise framework

    for agile development of secure database-driven web-based applications, written and programmable in Python. Placement: 51 Type: server-side Created at: 2008/11 License: [Custom license] Language: Python All languages: Python(89.92),HTML(4.60),JavaScript(3.44), Shell(1.25),CSS(0.63),PowerShell(0.08),Makefile(0.08) Total code size: 7,627,597 Commits/day: 1.5551 Stars: 1602 Forks: 769 Contributors: 152 Returning contributors (more than 4 weeks): 20 Open issues / Closed issues: 196/548 URL: https://github.com/web2py/web2py • MVC • HTTP requests, HTTP responses, cookies, sessions • Multiple protocols HTML/XML, REST, ATOM and RSS, RTF and CSV, JSON, JSON-RPC and XML-RPC, AMF-RPC (Flash/Flex), and SOAP • CRUD API • Authentication • Role-based access control • Database abstraction layer (DAL) • Caching • Internationalization • Logging • Embedded ticketing system for each error • Scheduler • Bytecode option Sample def hello(): return 'Hello World'
  62. 67.

    67 ktorio/ktor - Kotlin framework for interconnection of different server/client

    application Placement: 50 Type: server-side Created at: 2015/08 License: Apache-2.0 Language: Kotlin All languages: Kotlin(96.53),Java(3.45),Lua(0.02),HTML(0.00) Total code size: 1,799,298 Commits/day: 1.8868 Stars: 2850 Forks: 216 Contributors: 41 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 107/226 URL: https://github.com/ktorio/ktor Features • Authentication (Basic and Form,Digest,JWT and JWK,LDAP,OAuth) • Auto Head Response • Caching Headers • Call Logging • Compression • Conditional Headers • Content Negotiation • CORS • Data Conversion • Default Headers • ForwardedHeaderSupport • HSTS • HttpsRedirect • Locations • Metrics • Partial Content • Routing • Sessions • Shutdown URL • Static Content • Status Pages • Templates • WebSockets Samples: http://ktor.io/samples/index.html
  63. 68.

    68 cutelyst/cutelyst - A C++ Web Framework built on top

    of Qt, using the simple approach of Catalyst (Perl) framework. Placement: 49 Type: server-side Created at: 2015/06 License: LGPL-2.1 Language: C++ All languages: C++(97.63),CMake(2.17),C(0.15),Shell(0.05) Total code size: 2,506,197 Commits/day: 1.6688 Stars: 392 Forks: 34 Contributors: 5 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 2/61 URL: https://github.com/cutelyst/cutelyst • WebSockets • REST with ActionREST • Plugin based views • Templating • JSON • Emailing • Dispatcher • Chained • Session • Authentication (with PBKDF2) • Authorization with Roles ACL • Input validation • CSRF protection • Upload parser • Chunked responses • Request profiling/stats • Asynchronous processing • Plugin system // Root.cpp void Root::index(Context *c) { c->response()->body() = "Welcome to Cutelyst!"; } More : https://github.com/cutelyst/cutelyst/wiki/Tutorial_01_Intro
  64. 69.

    69 astaxie/beego Placement: 48 Type: server-side Created at: 2012/02 License:

    [Custom license] Language: Go All languages: Go(100.00) Total code size: 1,222,162 Commits/day: 0.8854 Stars: 15588 Forks: 3372 Contributors: 231 Returning contributors (more than 4 weeks): 18 Open issues / Closed issues: 516/1646 URL: https://github.com/astaxie/beego Beego is a RESTful MVC framework for the rapid development of Go applications including APIs, web apps and backend services with integrated Go specific features such as interfaces and struct embedding. • Routing • Configuration • Controllers • XSRF filtering • Session control • Filters • URL Building • Form validation • Error Handling • Logging • Session Module • Cache Module • Logs Module • i18n • CLI development tools
  65. 70.

    70 gobuffalo/buffalo - Rapid Web Development w/ Go Placement: 47

    Type: server-side Created at: 2014/10 License: MIT Language: Go All languages: Go(99.89),HTML(0.08),Shell(0.03) Total code size: 325,905 Commits/day: 0.9623 Stars: 2941 Forks: 223 Contributors: 72 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 54/455 URL: https://github.com/gobuffalo/buffalo Buffalo is a Go web development eco-system. Designed to make the life of a Go web developer easier. • Uses Gorilla toolkit for routes, sessions cookies • Rails-like templating syntax, possibility to extend it's features • Possibility to use html/template or Your own • Buffalo toolbox • Test templates for action, resources, model • Hot Code Reload • Webpack powered frontend pipeline (optional) • Deep integration with pop/sqlx to handle database tasks • Tasks / background workers (as rake in rails)
  66. 71.

    71 scalatra/scalatra - Scala high-performance, async microframework, inspired by Sinatra

    Placement: 46 Type: server-side Created at: 2009/05 License: [Custom license] Language: Scala All languages: Scala(99.54),Java(0.39),HTML(0.07) Total code size: 774,290 Commits/day: 0.6803 Stars: 2286 Forks: 331 Contributors: 95 Returning contributors (more than 4 weeks): 11 Open issues / Closed issues: 96/302 URL: https://github.com/scalatra/scalatra • Routes • Actions • Reverse Routes • Requests & Responses • GZip • Authentication • CORS • Templates • Persistence • Internationalization • Logging • Metrics package org.example.app import org.scalatra._ class MyScalatraFilter extends ScalatraFilter { get("/hello/:name") { <h1>Hello, {params("name")}</h1> } }
  67. 72.

    72 jooby-project/jooby - A modular micro web framework for Java

    and Kotlin Placement: 45 Type: server-side Created at: 2014/10 License: Apache-2.0 Language: Java All languages: Java(99.59),Kotlin(0.21),HTML(0.13),Groovy(0.05),Shel l(0.03),CSS(0.01),FreeMarker(0.00) Total code size: 10,834,192 Commits/day: 1.0143 Stars: 787 Forks: 119 Contributors: 39 Returning contributors (more than 4 weeks): 3 Open issues / Closed issues: 38/879 URL: https://github.com/jooby-project/jooby HTTP, HTTPS, HTTP 2.0, Server-Sent Events and Web-Socket Modular. Make it full-stack via the extensive module eco-system https://jooby.org/modules/
  68. 73.

    73 actix/actix-web - Actix web is a small, pragmatic, and

    extremely fast rust web framework. Placement: 44 Type: server-side Created at: 2017/09 License: [Custom license] Language: Rust All languages: Rust(99.98),Makefile(0.02) Total code size: 1,231,684 Commits/day: 5.3399 Stars: 1525 Forks: 91 Contributors: 45 Returning contributors (more than 4 weeks): 2 Open issues / Closed issues: 31/157 URL: https://github.com/actix/actix-web • Supported HTTP/1.x and HTTP/2.0 protocols • Streaming and pipelining • Keep-alive and slow requests handling • Client/server WebSockets support • Transparent content compression/decompression (br, gzip, deflate) • Configurable request routing • Graceful server shutdown • Multipart streams • Static assets • SSL support with OpenSSL or native-tls • Middlewares (Logger, Session, Redis sessions, DefaultHeaders, CORS, CSRF) • Includes an asynchronous HTTP client • Built on top of Actix actor framework extern crate actix_web; use actix_web::{http, server, App, Path, Responder}; fn index(info: Path<(u32, String)>) -> impl Responder { format!("Hello {}! id:{}", info.1, info.0) } fn main() { server::new( || App::new() .route("/{id}/{name}/index.html", http::Method::GET, index)) .bind("127.0.0.1:8080").unwrap() .run(); }
  69. 74.

    Minimal — We have aggressively minimized the concepts you need

    to understand to be productive while remaining on par with what other frameworks can do. Pragmatic — Hyperapp holds firm on the functional programming front when managing your state, but takes a pragmatic approach to allowing for side effects, asynchronous actions, and DOM manipulations. Standalone — Do more with less. Hyperapp combines state management with a virtual DOM engine that supports keyed updates & lifecycle events — all with no dependencies. import { h, app } from "hyperapp" const state = { count: 0 } const actions = { down: value => state => ({ count: state.count - value }), up: value => state => ({ count: state.count + value }) } const view = (state, actions) => ( <div> <h1>{state.count}</h1> <button onclick={() => actions.down(1)}>-</button> <button onclick={() => actions.up(1)}>+</button> </div> ) app(state, actions, view, document.body) 74 hyperapp/hyperapp - 1 kB JavaScript framework for building web applications. Placement: 43 Type: client-side, server-side Created at: 2017/01 License: MIT Language: JavaScript All languages: JavaScript(96.42),TypeScript(3.58) Total code size: 37,931 Commits/day: 1.5672 Stars: 13943 Forks: 626 Contributors: 69 Returning contributors (more than 4 weeks): 6 Open issues / Closed issues: 29/362 URL: https://github.com/hyperapp/hyperapp
  70. 75.

    75 hexojs/hexo Placement: 42 Type: server-side Created at: 2012/09 License:

    MIT Language: JavaScript All languages: JavaScript(100.00) Total code size: 590,051 Commits/day: 1.0134 Stars: 22391 Forks: 3133 Contributors: 122 Returning contributors (more than 4 weeks): 4 Open issues / Closed issues: 220/2599 URL: https://github.com/hexojs/hexo Simple & powerful blog framework, powered by Node.js. Features • Permalinks • 200+ Themes • Templates • Variables • Helpers • Internationalization • 250+ Plugins • Content API Migrations • RSS • Jekyll • Octopress • WordPress
  71. 76.

    76 hanami/hanami Placement: 41 Type: server-side Created at: 2013/08 License:

    MIT Language: Ruby All languages: Ruby(92.19),HTML(7.13),Shell(0.68) Total code size: 575,597 Commits/day: 0.6031 Stars: 4569 Forks: 449 Contributors: 130 Returning contributors (more than 4 weeks): 9 Open issues / Closed issues: 18/377 URL: https://github.com/hanami/hanami Simple full-stack Ruby web framework. Features • Routing • Models • Templates • Controller • Validations • Mailer • CLI
  72. 77.

    77 luvit/luvit Placement: 40 Type: server-side Created at: 2011/09 License:

    Apache-2.0 Language: Lua All languages: Lua(93.88),Go(5.17),Makefile(0.66),Batchfile(0.29) Total code size: 258,019 Commits/day: 0.6219 Stars: 2812 Forks: 307 Contributors: 63 Returning contributors (more than 4 weeks): 16 Open issues / Closed issues: 87/266 URL: https://github.com/luvit/luvit Node.JS for the Lua Inventor Async Choice If you don’t like callbacks and event emitters, use coroutines and write blocking style code without actually blocking your event loop. Modular Core The various projects in the luvit ecosystem can be mixed and matched to build the ideal runtime for your application. This helps teams migrate without having to learn a new way of programming. Sample local http = require('http') http.createServer(function (req, res) local body = "Hello world\n" res:setHeader("Content-Type", "text/plain") res:setHeader("Content-Length", #body) res:finish(body) end):listen(1337, '127.0.0.1') print('Server running at http://127.0.0.1:1337/') More samples https://github.com/luvit/luvit/tree/master/examples
  73. 78.

    78 slimphp/Slim Placement: 39 Type: server-side Created at: 2010/09 License:

    MIT Language: PHP All languages: PHP(100.00) Total code size: 543,704 Commits/day: 0.5333 Stars: 9023 Forks: 1776 Contributors: 181 Returning contributors (more than 4 weeks): 17 Open issues / Closed issues: 59/1281 URL: https://github.com/slimphp/Slim Middlewares • Application • Routing • Group Possibilitty to add ORM / templating, but as an external tools. Sample <?php use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; require 'vendor/autoload.php'; $app = new \Slim\App; $app->get('/hello/{name}', function (Request $request, Response $response, array $args) { $name = $args['name']; $response->getBody()->write("Hello, $name"); return $response; }); $app->run();
  74. 79.

    79 tornadoweb/tornado Placement: 38 Type: server-side Created at: 2009/09 License:

    Apache-2.0 Language: Python All languages: Python(99.58),Shell(0.24),C(0.10),Ruby(0.08),HTML(0. 00) Total code size: 1,694,690 Commits/day: 0.8423 Stars: 15939 Forks: 4603 Contributors: 291 Returning contributors (more than 4 weeks): 17 Open issues / Closed issues: 160/1155 URL: https://github.com/tornadoweb/tornado Python web framework and asynchronous networking library. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user. • Requests handle • Routing • Template • Internationalization • Websocket import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
  75. 80.

    80 kemalcr/kemal Placement: 37 Type: server-side Created at: 2015/10 License:

    MIT Language: Crystal All languages: Crystal(99.42),HTML(0.58) Total code size: 97,970 Commits/day: 0.5775 Stars: 2211 Forks: 124 Contributors: 49 Returning contributors (more than 4 weeks): 5 Open issues / Closed issues: 12/248 URL: https://github.com/kemalcr/kemal Crystal microframework • Routing • Middlewares • Config • CLI • Logging • WebSocket • Static file serving • Basic templating require "kemal" # Matches GET "http://host:port/" get "/" do "Hello World!" end # Creates a WebSocket handler. # Matches "ws://host:port/socket" ws "/socket" do |socket| socket.send "Hello from Kemal!" end Kemal.run
  76. 81.

    81 enyojs/enyo Placement: 36 Type: client-side Created at: 2011/12 License:

    Apache-2.0 Language: JavaScript All languages: JavaScript(99.15),CSS(0.76),HTML(0.10) Total code size: 1,527,426 Commits/day: 0.8717 Stars: 1956 Forks: 298 Contributors: 80 Returning contributors (more than 4 weeks): 23 Open issues / Closed issues: 10/71 URL: https://github.com/enyojs/enyo A JavaScript application framework emphasizing modularity and encapsulation enyo - The core moonstone - A toolbox of UI components, optimized for TV onyx - Enyo's original UI library, optimized for mobile devices spotlight - A specialized library for handling focus state layout - A set of layout components enyo-ilib - A library providing localization services enyo-dev - A set of build tools for use throughout the development process canvas - A demonstration library with components for building HTML5-based canvas vie Architecture • Modules - libraries, available in the Enyo framework. • Kind - A kind is an object constructor created using the enyo.kind factory method. • Mixin - A set of properties from one or more objects to be added or "mixed in" to a single object. More information: http://enyojs.com/docs/
  77. 82.

    82 zotonic/zotonic Placement: 35 Type: server-side Created at: 2011/06 License:

    Apache-2.0 Language: Erlang All languages: Erlang(62.49),Smarty(13.31),JavaScript(13.04),CSS(8.9 9),Shell(0.86),HTML(0.42),Emacs Lisp(0.42),Python(0.41),Makefile(0.05),sed(0.01),Batch file(0.00) Total code size: 6,175,829 Commits/day: 2.4764 Stars: 558 Forks: 164 Contributors: 61 Returning contributors (more than 4 weeks): 11 Open issues / Closed issues: 252/1112 URL: https://github.com/zotonic/zotonic Erlang Web Framework & CMS. Suited for anything from basic websites to complex distributed applications. It offers an elegant backend for managing content with the flexibility that developers need to build truly amazing applications. • Routing • Templating • Internationalization • Modules • Triggers/actions • E-mail • CLI • Logging Demo: http://demo.zotonic.com/
  78. 83.

    83 expressjs/express Placement: 34 Type: server-side Created at: 2009/06 License:

    MIT Language: JavaScript All languages: JavaScript(99.89),Makefile(0.05),Shell(0.05) Total code size: 367,253 Commits/day: 1.4781 Stars: 38683 Forks: 6819 Contributors: 219 Returning contributors (more than 4 weeks): 8 Open issues / Closed issues: 171/2721 URL: https://github.com/expressjs/express Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. • Routing • Various HTTP helpers • Templating support Many popular frameworks are based on Express. const express = require('express') const app = express() app.get('/', (req, res) => res.send('Hello World!')) app.listen(3000, () => console.log('Example app listening on port 3000!'))
  79. 84.

    84 nova-framework/framework Placement: 33 Type: server-side Created at: 2014/04 License:

    MIT Language: PHP All languages: PHP(89.27),CSS(7.42),JavaScript(1.97),Smarty(1.34) Total code size: 1,743,126 Commits/day: 2.2587 Stars: 424 Forks: 234 Contributors: 50 Returning contributors (more than 4 weeks): 11 Open issues / Closed issues: 0/238 URL: https://github.com/nova-framework/framework Nova Framework is a MVC PHP with lot's of features. • Themes • Code snippets • Screencasts • Chat • Forum (*) Uses components of Laravel 4.x.
  80. 85.

    85 lift/framework Placement: 32 Type: server-side Created at: 2011/01 License:

    Apache-2.0 Language: Scala All languages: Scala(87.20),JavaScript(10.34),CSS(1.16),Java(0.53),HT ML(0.51),Shell(0.24),Batchfile(0.03) Total code size: 4,147,368 Commits/day: 1.0334 Stars: 1150 Forks: 265 Contributors: 80 Returning contributors (more than 4 weeks): 22 Open issues / Closed issues: 141/1313 URL: https://github.com/lift/framework Seven Things of Lift • Lazy Loading • Parallel page rendering • Comet and Ajax • Wiring ◦ Declare interdepencies between page elements • Designer friendly templates ◦ Designers can edit the same pages that your developers edit. The designers do not have to learn any tag libraries or any other language. The dynamic content is based on Lift's snippets and the snippet invocation is done via specially css class names. • Wizard ◦ Multipage input screens with full back-button support • Security ◦ A1: Injection - query strings escaping ◦ A2: XSS - automatically HTML escape Strings ◦ A3: Session Management - keeps passwords hashed at all times with per-row salt ◦ A4: Direct Object References - do not expose direct object references, but issues a session-specific token that refers to the objects. ◦ A5: CSRF - session-specific bindings between HTML elements and the server-side behaviors associated with those elements. The bindings cannot be predicted so it's not possible to issue Cross Site requests that invoke session-specific bindings. ◦ A8: URL Access - includes SiteMap which provides declarative rules for access to URLs in the application. SiteMap will deny access to URLs unless the criteria is met for accessing the specific URL. More : https://seventhings.liftweb.net/ Samples : https://github.com/lift/examples Modules : https://github.com/liftmodules
  81. 86.

    86 skinny-framework/skinny-framework Placement: 31 Type: server-side Created at: 2013/09 License:

    MIT Language: Scala All languages: Scala(70.58),JavaScript(25.84), HTML(1.16),Shell(0.97),Java(0.69),Batchfile(0.66),Free Marker(0.04),CoffeeScript(0.04),CSS(0.03) Total code size: 2,126,866 Commits/day: 0.9041 Stars: 672 Forks: 68 Contributors: 26 Returning contributors (more than 4 weeks): 6 Open issues / Closed issues: 17/125 URL: https://github.com/skinny-framework/skinny-fra mework Skinny is a full-stack web app framework built on Skinny Micro. Is highly inspired by Ruby on Rails and it is optimized for sustainable productivity for Servlet-based web app development. • Scaffold generator • Controller & Routes • Validator • Templating • OAuth for Login • Assets Support • Mail • Worker Jobs • i18n • O/R Mapper • Angular.js Server Side • Tasks #!/usr/bin/env scalas /*** scalaVersion := "2.12.4" libraryDependencies += "org.skinny-framework" %% "skinny-micro-server" % "1.3.0" */ import skinny.micro._ object HelloApp extends WebApp { get("/say-hello") { s"Hello, ${params.getOrElse("name", "Anonymous")}!\n" } } WebServer.mount(HelloApp).port(4567).start() println println("Try: curl -v 'localhost:4567/say-hello?name=Martin'") println
  82. 87.

    87 pallets/flask Placement: 30 Type: server-side Created at: 2010/04 License:

    [Custom license] Language: Python All languages: Python(99.80),Makefile(0.11),HTML(0.08),CSS(0.00) Total code size: 494,569 Commits/day: 0.6803 Stars: 36437 Forks: 10894 Contributors: 409 Returning contributors (more than 4 weeks): 21 Open issues / Closed issues: 27/1467 URL: https://github.com/pallets/flask The Python micro framework for building web applications. Based on ItsDangerous — cryptographically sign your data and hand it over to someone else Jinja — a full featured template engine for Python MarkupSafe — a HTML-Markup safe string for Python Werkzeug — a WSGI utility library for Python from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run() More information: http://flask.pocoo.org/docs/
  83. 88.

    Tool-kit for building reactive applications on the JVM. You can

    use Vert.x with multiple languages including Java, JavaScript, Groovy, Ruby, Ceylon, Scala and Kotlin. Features • Routing, with HTTP protocol support • Data access with multiple backends • Reactive (async, threads, streams) • Microservices components • MQTT protocol ( used in IoT) • Authentication • Integration (mail, STOMP, RabbitMQ, Kafka, AMQP clients) • Event Bus bridges • Devops componenets • Clustering native support • Services (HTTP, SockJS, gRPC) https://vertx.io/docs/ 88 eclipse/vert.x Placement: 29 Type: server-side Created at: 2011/06 License: [Custom license] Language: Java All languages: Java(100.00) Total code size: 5,026,102 Commits/day: 1.0767 Stars: 7997 Forks: 1370 Contributors: 129 Returning contributors (more than 4 weeks): 12 Open issues / Closed issues: 155/1104 URL: https://github.com/eclipse/vert.x
  84. 89.

    89 nuxt/nuxt.js - The Vue.js Developers Framework Placement: 28 Type:

    client-side Created at: 2016/10 License: MIT Language: JavaScript All languages: JavaScript(88.18),HTML(9.12),Vue(2.70) Total code size: 304,906 Commits/day: 4.0355 Stars: 12821 Forks: 985 Contributors: 123 Returning contributors (more than 4 weeks): 7 Open issues / Closed issues: 412/2561 URL: https://github.com/nuxt/nuxt.js Vue.js Meta Framework to create complex, fast & universal web applications quickly. Nuxt.js comes with a lot of features to help the development between the client side and the server side such as Features • Routing • Asynchronous Data • Middleware • Layouts • Templating • Plugins • Modules
  85. 90.

    90 spring-projects/spring-framework Placement: 27 Type: server-side Created at: 2010/12 License:

    [Custom license] Language: Java All languages: Java(99.00),Kotlin(0.43),CSS(0.14), HTML(0.13),Groovy(0.11),AspectJ(0.09),FreeMarker(0.04) ,GAP(0.02),Batchfile(0.01),Shell(0.01),XSLT(0.01),Ruby(0. 01),JavaScript(0.00),Smarty(0.00),PLpgSQL(0.00),Pytho n(0.00) Total code size: 36,316,972 Commits/day: 4.9974 Stars: 21582 Forks: 14041 Contributors: 280 Returning contributors (more than 4 weeks): 34 Open issues / Closed issues: 0/0 URL: github.com/spring-projects/spring-framework The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments. Features Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP. Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient. Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML. Spring MVC and Spring WebFlux web frameworks. Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache. Languages: Kotlin, Groovy, dynamic languages. https://spring.io/projects/spring-framework
  86. 91.

    91 vibe-d/vibe.d Placement: 26 Type: server-side Created at: 2012/04 License:

    [Custom license] Language: D All languages: D(98.07),Meson(1.21),Shell(0.72) Total code size: 1,903,305 Commits/day: 1.9309 Stars: 922 Forks: 263 Contributors: 151 Returning contributors (more than 4 weeks): 26 Open issues / Closed issues: 388/756 URL: https://github.com/vibe-d/vibe.d vibe.d is a high-performance asynchronous I/O, concurrency and web application toolkit written in D. It already contains many supplemental features such as database support to be able to offer a complete development environment. For more specialized needs, there are also many compatible DUB packages available. Multi-threading Natively compiled code Load balancing Generic concurrency tools • HTTP 1.0/1.1 server • Asynchronous I/O • Static file serving • Template system • WebSockets • Sessions • Native database driversCryptography • JSON and BSON support • Simple SMTP client #!/usr/bin/env dub /+ dub.sdl: name "hello_vibed" dependency "vibe-d" version="~>0.8.0" +/ import vibe.d; void main() { auto settings = new HTTPServerSettings; settings.port = 8080; listenHTTP(settings, (req, res) { res.writeBody("Hello Vibe.d: " ~ req.path); }); runApplication(); }
  87. 92.

    92 MithrilJS/mithril.js Placement: 25 Type: client-side Created at: 2014/03 License:

    MIT Language: JavaScript All languages: JavaScript(98.56),HTML(1.44),Batchfile(0.00) Total code size: 676,450 Commits/day: 1.1351 Stars: 8633 Forks: 669 Contributors: 211 Returning contributors (more than 4 weeks): 18 Open issues / Closed issues: 139/1100 URL: https://github.com/MithrilJS/mithril.js Fast and simple client-side Javascript framework for building Single Page Applications. It's small (8.90 KB gzipped), fast and provides routing and XHR utilities out of the box. Detailed comparaison with React / Angular / VueJS https://mithril.js.org/framework-comparison.html
  88. 93.

    93 sinatra/sinatra Placement: 24 Type: server-side Created at: 2009/01 License:

    MIT Language: Ruby All languages: Ruby(99.48),HTML(0.41),Shell(0.07),CSS(0.03),Liquid( 0.01),CoffeeScript(0.00) Total code size: 635,459 Commits/day: 0.7330 Stars: 10007 Forks: 1790 Contributors: 356 Returning contributors (more than 4 weeks): 25 Open issues / Closed issues: 80/609 URL: https://github.com/sinatra/sinatra Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort • Routing • Static Files • Views / Templates • Filters • Helpers • Sessions • Logging • Middlewares require 'sinatra' get '/frank-says' do 'Put this in your pipe & smoke it!' end
  89. 94.

    94 bcit-ci/CodeIgniter Placement: 23 Type: server-side Created at: 2011/08 License:

    MIT Language: PHP All languages: PHP(97.32),HTML(1.34),Python(0.58),JavaScript(0.32), Makefile(0.23),CSS(0.12),Shell(0.10) Total code size: 2,011,873 Commits/day: 2.2284 Stars: 16194 Forks: 7410 Contributors: 362 Returning contributors (more than 4 weeks): 36 Open issues / Closed issues: 79/2800 URL: https://github.com/bcit-ci/CodeIgniter Simple PHP framework • Benchmarking • Caching Driver • Calendaring • Shopping Cart • Config • Email • Encrypt • Encryption Library • File Uploading • Form Validation • FTP • Image Manipulation • Input • Javascript • Language • Loader • Migrations • Pagination • Template Parser • Security • Session Library • HTML Table • Trackback • Typography • URI • XML-RPC and XML-RPC Serveres • Zip Encoding
  90. 95.

    95 vaadin/framework Placement: 22 Type: server-side, client-side Created at: 2012/10

    License: [Custom license] Language: Java All languages: Java(95.77),CSS(3.07),JavaScript(0.54),HTML(0.42),Py thon(0.14),Shell(0.06),Smarty(0.00) Total code size: 24,444,693 Commits/day: 7.4748 Stars: 1363 Forks: 624 Contributors: 157 Returning contributors (more than 4 weeks): 55 Open issues / Closed issues: 3104/6186 URL: https://github.com/vaadin/framework Vaadin is a Java framework for building web applications. • Building applications out of components (49) • Working with data: forms, data binding, validation • Mobile support • Testing: Unit and end-to-end testing https://vaadin.com/comparison https://pages.vaadin.com/vaadin-vs-angular
  91. 96.

    96 vuejs/vue Placement: 21 Type: client-side Created at: 2013/07 License:

    MIT Language: JavaScript All languages: JavaScript(97.65),HTML(0.70),TypeScript(0.57), Vue(0.52),CSS(0.44),Shell(0.13) Total code size: 2,564,042 Commits/day: 1.4018 Stars: 97147 Forks: 14263 Contributors: 189 Returning contributors (more than 4 weeks): 18 Open issues / Closed issues: 218/6517 URL: https://github.com/vuejs/vue "I figured, what if I could just extract the part that I really liked about Angular and build something really lightweight". Evan You, Vue.js creator, former Googler. Vue.js s an open-source JavaScript framework for building user interfaces. Integration into projects that use other JavaScript libraries is made easy with Vue because it is designed to be incrementally adoptable. Vue can also function as a web application framework capable of powering advanced single-page applications. Live demo https://vuejs.org/v2/examples/
  92. 97.

    97 nette/nette Placement: 20 Type: server-side Created at: 2009/08 License:

    [Custom license] Language: PHP All languages: PHP(100.00) Total code size: 326 Commits/day: 1.2867 Stars: 1243 Forks: 264 Contributors: 107 Returning contributors (more than 4 weeks): 24 Open issues / Closed issues: 21/643 URL: https://github.com/nette/nette Nette is a set of PHP 7 standalone components that make up the framework. • Bootstrap • Caching • Database • Finder • Forms • Http • Templating • Mail • Neon • Reflection • Files operations • Access control system
  93. 98.

    98 phalcon/cphalcon Placement: 19 Type: server-side Created at: 2011/11 License:

    [Custom license] Language: PHP All languages: PHP(56.77),Zephir(42.01),Shell(0.62), PowerShell(0.33),Volt(0.19),HTML(0.04),M4(0.02),Jav aScript(0.01),C(0.01),CSS(0.01) Total code size: 5,103,471 Commits/day: 2.4937 Stars: 8968 Forks: 1680 Contributors: 219 Returning contributors (more than 4 weeks): 30 Open issues / Closed issues: 192/3646 URL: https://github.com/phalcon/cphalcon High performance, full-stack PHP framework delivered as a C extension • MVC • Services • Cache • Config • Logging • Adapters • Queue • Database • Events • Validators • Assets • Forms • Image • Tag • View • Access Control Lists • Controllers • Dispatcher • Event Manager • Filters • Routing • Sessions • Url • HTTP • Internationalization
  94. 99.

    99 yesodweb/yesod Placement: 18 Type: server-side Created at: 2009/06 License:

    MIT Language: Haskell All languages: Haskell(99.67),HTML(0.23),Shell(0.06),CSS(0.02),Java Script(0.00) Total code size: 951,284 Commits/day: 1.1593 Stars: 1932 Forks: 315 Contributors: 185 Returning contributors (more than 4 weeks): 21 Open issues / Closed issues: 126/809 URL: https://github.com/yesodweb/yesod Yesod (IPA: [je'sod]) is a web framework based on Haskell for productive development of type-safe, REST model based (where URLs identify resources, and HTTP methods identify transitions) web applications. Yesod is based on templates, to generate instances for classes, entities, and dynamic content process functions, making use of Haskell compiled templates called QuasiQuotes, that admit code expression interpolations in web-like language snippets, making it fully type-checked at compile-time. • Routing and Handlers • Widgets • Forms • Sessions • Persistent • REST • Authentication and Authorization • Scaffolding and the Site Template • Internationalization • Database
  95. 100.

    100 padrino/padrino-framework - Padrino is a full-stack ruby framework built

    upon Sinatra Placement: 17 Type: server-side Created at: 2009/11 License: [Custom license] Language: Ruby All languages: Ruby(96.32),HTML(2.58),CSS(0.73),JavaScript(0.37) Total code size: 1,296,607 Commits/day: 1.1516 Stars: 3120 Forks: 494 Contributors: 207 Returning contributors (more than 4 weeks): 16 Open issues / Closed issues: 36/1316 URL: https://github.com/padrino/padrino-framework Padrino is a ruby framework built upon the excellent Sinatra Web Library. Sinatra is a DSL for creating simple web applications in Ruby quickly and with minimal effort. This framework tries to make it as fun and easy as possible to code more advanced web applications by building upon the Sinatra philosophies and foundations. • Generators • Routing • Tag, View, Asset, Form Helpers • Mailer • Caching • Built-in Admin interface • Logging • Reloading • Localization Agnotstic ORM/ODM: activerecord, datamapper, mongomapper, mongoid, sequel, couchrest JavaScript: prototype, rightjs, jquery, mootools, extcore Renderer: Erb, Haml, Slim Test: Bacon, Shoulda, Cucumber, Riot, RSpec Stylesheet: Less, Sass, SCSS, Compass Mock: rr, Mocha
  96. 101.

    101 playframework/playframework Placement: 16 Type: server-side Created at: 2011/09 License:

    Apache-2.0 Language: Scala All languages: Scala(71.66),Java(27.12),HTML(0.95),Shell(0.13),JavaS cript(0.08),Roff(0.03),CSS(0.03) Total code size: 4,193,936 Commits/day: 1.9344 Stars: 10494 Forks: 3550 Contributors: 406 Returning contributors (more than 4 weeks): 55 Open issues / Closed issues: 390/2647 URL: https://github.com/playframework/playframewor k Play Framework is an open-source web application framework, written in Scala and also usable from other programming languages that are compiled to Bytecode, e.g. Java, which follows the model–view–controller (MVC) architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code reloading and display of errors in the browser. Libraries • Akka-HTTP or Netty for the web server • Akka Streams for all asynchronous IO and streaming • No required ORM, but Anorm (Scala), Slick (Scala) and Ebean (Java) are included for database access • Twirl (Scala) as the template engine • Built-in hot-reloading • sbt as the build tool and for dependency management Features • RESTful framework • Authentication • Validation • JSON and XML parsers and marshallers • Persistence layer based on JPA • Embedded database • Embedded testing framework • Automatic file uploads • OpenID • Web services clients
  97. 102.

    102 Pylons/pyramid Placement: 15 Type: server-side Created at: 2010/10 License:

    [Custom license] Language: Python All languages: Python(99.35),CSS(0.65),Shell(0.01),HTML(0.00) Total code size: 2,153,049 Commits/day: 2.1816 Stars: 2806 Forks: 793 Contributors: 250 Returning contributors (more than 4 weeks): 35 Open issues / Closed issues: 85/841 URL: https://github.com/Pylons/pyramid A Python web framework • Views • Routing • Templating • Static assets • Returning JSON • Configuration • Logging • Sessions • Databases • Forms from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response def hello_world(request): return Response('Hello World!') if __name__ == '__main__': with Configurator() as config: config.add_route('hello', '/') config.add_view(hello_world, route_name='hello') app = config.make_wsgi_app() server = make_server('0.0.0.0', 6543, app) server.serve_forever()
  98. 103.

    103 yiisoft/yii2 Placement: 14 Type: server-side Created at: 2012/02 License:

    BSD-3-Clause Language: PHP All languages: PHP(95.71),JavaScript(3.73),PLSQL(0.29),HTML(0.17), Shell(0.08),Batchfile(0.02),Ruby(0.00),CSS(0.00) Total code size: 7,018,721 Commits/day: 5.3512 Stars: 12035 Forks: 6504 Contributors: 365 Returning contributors (more than 4 weeks): 86 Open issues / Closed issues: 981/9227 URL: https://github.com/yiisoft/yii2 Yii is an open source, object-oriented, component-based MVC PHP web application framework. • Classic MVC • WSDL generation for Web services • Internationalization and localization (I18N and L10N) • Layered caching scheme • Error handling and logging • Prevention of cross-site scripting (XSS), cross-site request forgery (CSRF) and cookie tampering • Scaffolding
  99. 104.

    104 django/django - The Web framework for perfectionists with deadlines.

    Placement: 13 Type: server-side Created at: 2012/04 License: [Custom license] Language: Python All languages: Python(95.65),JavaScript(1.96),HTML(1.73),CSS(0.65), Shell(0.01),Smarty(0.00),Makefile(0.00) Total code size: 13,048,424 Commits/day: 9.6374 Stars: 34385 Forks: 14571 Contributors: 406 Returning contributors (more than 4 weeks): 97 URL: https://github.com/django/django Django (/ˈdʒæŋɡoʊ/) is a free and open-source web framework, written in Python, which follows the model-view-template (MVT) architectural pattern. Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizes reusability and "pluggability" of components, less code, low coupling, rapid development, and the principle of don't repeat yourself. Python is used throughout, even for settings files and data models. Django also provides an optional administrative create, read, update and delete interface that is generated dynamically through introspection and configured via admin models. • URL dispatcher • Form serialization and validation system that can translate between HTML forms and values suitable for storage in the database • Templating • Caching • Middlewares • Internal dispatcher system that allows components of an application to communicate events to each other via pre-defined signals • Internationalization • Serialization system that can produce and read XML and/or JSON representations • ORM
  100. 105.

    105 gohugoio/hugo Placement: 12 Type: server-side Created at: 2013/07 License:

    Apache-2.0 Language: Go All languages: Go(98.94),HTML(0.98),Shell(0.08) Total code size: 1,978,999 Commits/day: 2.0433 Stars: 26223 Forks: 3139 Contributors: 444 Returning contributors (more than 4 weeks): 24 Open issues / Closed issues: 281/2642 URL: https://github.com/gohugoio/hugo Hugo is one of the most popular open-source static site generators. • Fast • Unlimited content types, taxonomies, menus, API-driven content • Markdown powered • i18n • Outputs content in AMP / JSON / Custom format • Many themes • Good documentation • Generated site could be hosted anywhere • Lipi or Netlify frontends for webmaster's graphical GUI (Optional) Migrations from • WordPress • Joomla • Drupal • DokuWiki • Tumblr • Blogger • Jekyll
  101. 106.

    106 netty/netty - Netty project - an event-driven asynchronous network

    application framework Placement: 11 Type: server-side Created at: 2010/11 License: Apache-2.0 Language: Java All languages: Java(98.83),C(1.07),Shell(0.06),Groovy(0.01),C++(0.01), Makefile(0.01),HTML(0.01),CSS(0.00) Total code size: 14,540,961 Commits/day: 2.5747 Stars: 14341 Forks: 6410 Contributors: 331 Returning contributors (more than 4 weeks): 34 Open issues / Closed issues: 336/3822 URL: https://github.com/netty/netty Netty is a non-blocking I/O client-server framework for the development of Java network applications such as protocol servers and clients. The asynchronous event-driven network application framework and tools are used to simplify network programming such as TCP and UDP socket servers. Besides being an asynchronous network application framework, Netty also includes built-in HTTP, HTTP2, DNS and more protocols support, including the ability to run inside a servlet container, support for WebSockets, integration with Google Protocol Buffers, SSL/TLS support, support for SPDY protocol and support for message compression.
  102. 107.

    107 grails/grails-core - The Grails Web Application Framework Placement: 10

    Type: server-side Created at: 2010/02 License: Apache-2.0 Language: Java All languages: Java(50.65),Groovy(47.87),CSS(0.91),HTML(0.30),Shel l(0.10),Python(0.06),PostScript(0.05),XSLT(0.03),Java Script(0.03) Total code size: 6,367,389 Commits/day: 3.6736 Stars: 2329 Forks: 926 Contributors: 208 Returning contributors (more than 4 weeks): 33 Open issues / Closed issues: 183/9908 URL: https://github.com/grails/grails-core Grails is an open source web application framework that uses the Apache Groovy programming language (which is in turn based on the Java platform). It is intended to be a high-productivity framework by following the "coding by convention" paradigm, providing a stand-alone development environment and hiding much of the configuration detail from the developer. • Controllers • Views • Persistence • Scaffolding • Authentification • Plugins • Internationalization • Validation package helloworld class HelloController { def index() { render "Hello World!" } }
  103. 108.

    108 rails/rails - Ruby on Rails Placement: 9 Type: server-side

    Created at: 2008/04 License: MIT Language: Ruby All languages: Ruby(96.72),HTML(1.60),JavaScript(1.04),CoffeeScrip t(0.34),CSS(0.26),Shell(0.04),Yacc(0.01) Total code size: 12,285,673 Commits/day: 10.6343 Stars: 39848 Forks: 16114 Contributors: 383 Returning contributors (more than 4 weeks): 100 Open issues / Closed issues: 1117/11150 URL: https://github.com/rails/rails Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web pages. It encourages and facilitates the use of web standards such as JSON or XML for data transfer, and HTML, CSS and JavaScript for display and user interfacing. In addition to MVC, Rails emphasizes the use of other well-known software engineering patterns and paradigms, including convention over configuration (CoC), don't repeat yourself (DRY), and the active record pattern. Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including Django in Python, Laravel in PHP, Phoenix in Elixir, and Sails.js in Node.js.
  104. 109.

    109 symfony/symfony - The Symfony PHP framework Placement: 8 Type:

    Created at: 2010/01 License: MIT Language: PHP All languages: PHP(97.67),HTML(2.30),CSS(0.02),Shell(0.00),JavaScr ipt(0.00) Total code size: 15,495,901 Commits/day: 5.5576 Stars: 17783 Forks: 6233 Contributors: 383 Returning contributors (more than 4 weeks): 98 Open issues / Closed issues: 880/9757 URL: https://github.com/symfony/symfony Symfony is a PHP web application framework and a set of reusable PHP components/libraries. Symfony aims to speed up the creation and maintenance of web applications and to replace repetitive coding tasks. Symfony has a low performance overhead used with a bytecode cache. Symfony is aimed at building robust applications in an enterprise context, and aims to give developers full control over the configuration: from the directory structure to the foreign libraries, almost everything can be customized. To match enterprise development guidelines, Symfony is bundled with additional tools to help developers test, debug and document projects.
  105. 110.

    110 facebook/react - A declarative, efficient, and flexible JavaScript library

    for building user interfaces. Placement: 7 Type: client-side Created at: 2013/05 License: MIT Language: JavaScript All languages: JavaScript(93.22),C++(2.22),HTML(2.01),TypeScript(0.9 8),CoffeeScript(0.77),Shell(0.29),C(0.26),CSS(0.23),Pyt hon(0.01),Makefile(0.01) Total code size: 1,996,779 Commits/day: 3.1546 Stars: 97857 Forks: 18408 Contributors: 449 Returning contributors (more than 4 weeks): 61 Open issues / Closed issues: 483/5629 URL: https://github.com/facebook/react React (also known as React.js or ReactJS) is a JavaScript library for building user interfaces. React can be used as a base in the development of single-page or mobile applications. However, to create complex applications, it is required to use a composition of various libraries for state management (e.g. Redux), routing, etc. Sample <div id="myReactApp"></div> <script type="text/babel"> class Greeter extends React.Component { render() { return <h1>{this.props.greeting}</h1> } } ReactDOM.render(<Greeter greeting="Hello World!" />, document.getElementById('myReactApp')); </script>
  106. 111.

    111 cakephp/cakephp Placement: 6 Type: server-side Created at: 2010/05 License:

    MIT Language: PHP All languages: PHP(99.78),CSS(0.15),Makefile(0.06),Shell(0.01),JavaS cript(0.00) Total code size: 10,355,072 Commits/day: 8.5323 Stars: 7558 Forks: 3337 Contributors: 369 Returning contributors (more than 4 weeks): 77 Open issues / Closed issues: 242/4719 URL: https://github.com/cakephp/cakephp CakePHP is a MVC web framework. • Auth • Cache • Command • Console • Controller • Core • Database • Event • Filesystem • Form • Http • I18n • Log • Mailer • ORM • Routing • Shell • Validation • View
  107. 112.

    112 emberjs/ember.js - Ember.js - A JavaScript framework for creating

    ambitious web applications Placement: 5 Type: client-side Created at: 2011/05 License: MIT Language: JavaScript All languages: JavaScript(84.48),TypeScript(15.27),HTML(0.23),Shell( 0.02) Total code size: 4,140,690 Commits/day: 3.2666 Stars: 19037 Forks: 3898 Contributors: 363 Returning contributors (more than 4 weeks): 86 Open issues / Closed issues: 331/5380 URL: https://github.com/emberjs/ember.js Ember.js is an open-source JavaScript web framework, based on the Model–view–viewmodel (MVVM) pattern. Although primarily considered a framework for the web, it is also possible to build desktop and mobile applications in Ember. The most notable example of an Ember desktop application is Apple Music, a feature of the iTunes desktop application.
  108. 113.

    113 angular/angular - One framework. Mobile & desktop. Placement: 4

    Type: client-side Created at: 2014/09 License: MIT Language: TypeScript All languages: TypeScript(89.42),JavaScript(4.79),CSS(2.07),HTML(1. 97),Python(0.99),Shell(0.71),PHP(0.05) Total code size: 15,060,907 Commits/day: 7.0647 Stars: 36993 Forks: 8952 Contributors: 418 Returning contributors (more than 4 weeks): 75 Open issues / Closed issues: 2376/13032 URL: https://github.com/angular/angular Angular (commonly referred to as "Angular 2+") is a TypeScript-based open-source front-end web application platform led by the Angular Team at Google and by a community of individuals and corporations. Angular is a complete rewrite from the same team that built AngularJS (1.x).
  109. 114.

    114 phoenixframework/phoenix - A productive web framework that does not

    compromise speed and maintainability. Placement: 3 Type: server-side Created at: 2014/01 License: MIT Language: Elixir All languages: Elixir(89.72),JavaScript(8.84),CSS(0.99),HTML(0.44) Total code size: 1,062,795 Commits/day: 2.1910 Stars: 11907 Forks: 1430 Contributors: 445 Returning contributors (more than 4 weeks): 37 Open issues / Closed issues: 26/1501 URL: https://github.com/phoenixframework/phoenix Phoenix is a web development framework written in the functional programming language Elixir. Phoenix uses a server-side model-view-controller (MVC) pattern. Based on Erlang, it was developed to provide scalable web applications using an approach similar to Ruby on Rails.
  110. 115.

    115 meteor/meteor - Meteor is an ultra-simple environment for building

    modern web applications. Placement: 2 Type: server-side, client-side Created at: 2012/01 License: [Custom license] Language: JavaScript All languages: JavaScript(98.02),Shell(0.57),HTML(0.43),CoffeeScrip t(0.41),PowerShell(0.34),CSS(0.13),Batchfile(0.05),Rub y(0.04),Java(0.01) Total code size: 7,375,333 Commits/day: 7.3126 Stars: 39898 Forks: 4996 Contributors: 390 Returning contributors (more than 4 weeks): 46 Open issues / Closed issues: 129/7478 URL: https://github.com/meteor/meteor Meteor, or MeteorJS, is a JS web framework. Meteor allows for rapid prototyping and produces cross-platform (Android, iOS, Web) code. It integrates with MongoDB and uses the Distributed Data Protocol and a publish–subscribe pattern to automatically propagate data changes to clients without requiring the developer to write any synchronization code. On the client, Meteor can be used with its own Blaze templating engine, as well as with the Angular or React frameworks. Meteor provides full stack reactivity, allowing your UI to seamlessly reflect the true state of the world with minimal development effort.
  111. 116.

    116 laravel/framework - The PHP Framework For Web Artisans Placement:

    1 Type: server-side Created at: 2013/01 License: MIT Language: PHP All languages: PHP(99.40),HTML(0.46),CSS(0.09),JavaScript(0.04),V ue(0.01) Total code size: 5,167,023 Commits/day: 5.6343 Stars: 12600 Forks: 5473 Contributors: 412 Returning contributors (more than 4 weeks): 88 Open issues / Closed issues: 161/10497 URL: https://github.com/laravel/framework Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as: • Simple, fast routing engine. • Powerful dependency injection container. • Multiple back-ends for session and cache storage. • Database agnostic schema migrations. • Robust background job processing. • Real-time event broadcasting.
  112. 117.

    Frameworks statistics > 21 languages Open source Web frameworks comparison

    and ratings - Fedir RYKHTIK - June 24, 2018 - TYPO3 Developer Days 2018, Düsseldorf, Germany Language Number of frameworks JavaScript 12 Ruby 11 PHP 9 Java 9 Go 9 Python 8 Scala 6 Rust 6 Haskell 5 Crystal 5 Lua 4 Kotlin 4 Elixir 3 D 3 Erlang 3 C++ 3 TypeScript 1 MoonScript 1 Common Lisp 1 C 1
  113. 118.
  114. 119.

    stars doesn't matter (not only) Name Stargazers Placement overall Name

    Stargazers Placement overall facebook/react 97857 7 laravel/framework 12600 1 vuejs/vue 97147 21 meteor/meteor 39898 2 meteor/meteor 39898 2 phoenixframework/phoenix 11907 3 rails/rails 39848 9 angular/angular 36993 4 expressjs/express 38683 34 emberjs/ember.js 19037 5 angular/angular 36993 4 cakephp/cakephp 7558 6 pallets/flask 36437 30 facebook/react 97857 7 django/django 34385 13 symfony/symfony 17783 8 gohugoio/hugo 26223 12 rails/rails 39848 9 hexojs/hexo 22391 42 grails/grails-core 2329 10 spring-projects/spring-framework 21582 27 netty/netty 14341 11 emberjs/ember.js 19037 5 gohugoio/hugo 26223 12 gin-gonic/gin 17849 70 django/django 34385 13 symfony/symfony 17783 8 yiisoft/yii2 12035 14 bcit-ci/CodeIgniter 16194 23 Pylons/pyramid 2806 15 tornadoweb/tornado 15939 38 playframework/playframework 10494 16 astaxie/beego 15588 48 padrino/padrino-framework 3120 17 netty/netty 14341 11 yesodweb/yesod 1932 18 hyperapp/hyperapp 13943 43 phalcon/cphalcon 8968 19 nuxt/nuxt.js 12821 28 nette/nette 1243 20 laravel/framework 12600 1 vuejs/vue 97147 21 yiisoft/yii2 12035 14 vaadin/framework 1363 22 phoenixframework/phoenix 11907 3 bcit-ci/CodeIgniter 16194 23 labstack/echo 10573 64 sinatra/sinatra 10007 24 kataras/iris 10544 59 MithrilJS/mithril.js 8633 25 Number of stars it's only one of possible metrics • Placement by popularity • Placement by age • Placement by total commits • Placement by total tags • Placement by top 10 contributors followers power • Placement by closed issues percentage • Placement by commits by day • Placement by active forkers column • ...
  115. 120.

    Ressources • https://github.com/fedir/ghstat/blob/master/stats/all_frameworks.csv • https://en.wikipedia.org/wiki/Comparison_of_web_frameworks • https://en.wikipedia.org/wiki/Play_Framework • https://en.wikipedia.org/wiki/Vue.js •

    https://en.wikipedia.org/wiki/Spring_Framework • https://en.wikipedia.org/wiki/Yii • https://en.wikipedia.org/wiki/Django_(web_framework) • https://en.wikipedia.org/wiki/Netty_(software) • https://en.wikipedia.org/wiki/Grails_(framework) • https://en.wikipedia.org/wiki/Ruby_on_Rails • https://en.wikipedia.org/wiki/Symfony • https://en.wikipedia.org/wiki/React_(JavaScript_library) • https://en.wikipedia.org/wiki/CakePHP • https://en.wikipedia.org/wiki/Ember.js • https://en.wikipedia.org/wiki/Angular_(application_platform) • https://en.wikipedia.org/wiki/Phoenix_(web_framework) • https://en.wikipedia.org/wiki/Meteor_(web_framework) • https://en.wikipedia.org/wiki/Laravel • https://en.wikipedia.org/wiki/Sails.js
  116. 121.

    Thank You ! @FedirFR (feel free to contact me and

    send any remarks about this talk)