static void meiga gparamspec *pspec; · motivation many desktop applications use web services and...

45
static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, Enrique Ocaña González [email protected] Meiga Light content sharing from the desktop

Upload: others

Post on 27-Jul-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

static void_f_do_barnacle_install_properties(GObjectClass

*gobject_class){

GParamSpec *pspec;

/* Party code attribute */ pspec = g_param_spec_uint64

(F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code",

0, G_MAXUINT64,

G_MAXUINT64 /* default value */,

G_PARAM_READABLE | G_PARAM_WRITABLE |

G_PARAM_PRIVATE);

g_object_class_install_property (gobject_class,

F_DO_BARNACLE_PROP_CODE,

Enrique Ocaña Gonzá[email protected]

MeigaLight content sharing from the desktop

Page 2: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

● A need: content sharing● Development process● The result● How it works● Ideas for the future● References

Index

Page 3: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

A need: content sharing

Page 4: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Motivation

Many desktop applications use web services and online contents

Few offer contents to other applications (P2P, servers)

Use cases:● Share files or pictures in an convenient way● Be an agent that generates XML or RSS contents

which can be consumed by an external aggregation service (planet, Yahoo pipes, etc.)

● Remotely command applications

Page 5: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Alternatives

Dedicated server technologies:

Apache+PHP, Java/Tomcat, Mono/ASP...

Desktop utilities:

Gnome-user-share

KDE File server

Opera Unite

Page 6: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Disadvantages

Dedicated server technologies:

Heavy, complex to set up

Not integrated with Gnome mainloop

Desktop utilities:

Gnome-user-share: depends on Apache (heavy)

KDE File server: Kicker applet

Opera Unite: not free software

Page 7: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Solution

Lightweight GPL application using technologies friendly with Gnome desktop:

Based on GObject

Easy integration with main loop

Possibility of DBUS services to third parties

Simplified network configuration

Existent libraries:

libsoup

libgupnp

Page 8: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Libsoup 2.4

Asynchronous, uses Glib main loop

SSL support using GNU TLS

Server basic and digest authentication support

SOAP and XML-RPC basic client support

Libgupnp 0.6

Asynchronous, uses Glib main loop

UPnP allows to configure port dedirection if supported by the router

Page 9: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Initial evolution plan

Stage 1

● Evaluate libraries

● Implement a little file server similar to KDE Public Fileserver

● Code a DBUS service to allow other programs to register/unregister files for sharing

Stage 2

● Generate RSS feeds

● Register more complex things: remote calls to functions, etc.

Stage 3

● Extend some existing Gnome applications to implement functionalities such as:

● “Offer all your pictures as RSS”

● “Offer the playlist of songs you've listened today to as RSS”

Meiga está ahora aproximadamente

aquí

Page 10: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Development process

Page 11: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Programming language

Vala was the chosen language

Advantages:

Easy to use → Less development time

Execution speed

Previous experience

Disadvantages:

Evolving syntax

There's no binding for all the libraries → Pure C

More complex autotools integration

Page 12: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

Release 0.1.0 Release 0.2.0

Page 13: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

DBUS interface for external applications

Release 0.1.0 Release 0.2.0

Page 14: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

DBUS interface for external applications

RSS server module

Release 0.1.0 Release 0.2.0

Page 15: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

DBUS interface for external applications

RSS server module

Graphic interface

Release 0.1.0 Release 0.2.0

Page 16: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

DBUS interface for external applications

RSS server module

Graphic interface

Autotools integration

Release 0.1.0 Release 0.2.0

Page 17: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

DBUS interface for external applications

RSS server module

Graphic interface

Autotools integration

UpnP redirection utility

Release 0.1.0

Release 0.1.0 Release 0.2.0

Page 18: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

File server module

DBUS interface for external applications

RSS server module

Graphic interface

Autotools integration

UpnP redirection utility

Release 0.1.0

Release 0.1.0 Release 0.2.0

Page 19: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

Port from Glade to GtkBuilder

Release 0.1.0 Release 0.2.0

Page 20: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

Port from Glade to GtkBuilder

Log exposing to the graphic interface

Release 0.1.0 Release 0.2.0

Page 21: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

Port from Glade to GtkBuilder

Log exposing to the graphic interface

Spanish and Galician internationalization

Release 0.1.0 Release 0.2.0

Page 22: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

Port from Glade to GtkBuilder

Log exposing to the graphic interface

Spanish and Galician internationalization

Bug correction

Release 0.1.0 Release 0.2.0

Page 23: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Real project evolution

Port from Glade to GtkBuilder

Log exposing to the graphic interface

Spanish and Galician internationalization

Bug correction

Release 0.2.0

Release 0.1.0 Release 0.2.0

Page 24: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

The result

Page 25: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Home network

MeigaIP: 192.168.1.10

Router UpnPIP: 1.2.3.4

Internet

Remote userContents

Page 26: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Main window and system tray

Page 27: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Log and port redirection

Page 28: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Sharing a folder

Page 29: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Sharing a folder

Page 30: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Remote access

Page 31: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Remote access

Page 32: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Contents as RSS

Page 33: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Log

Page 34: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

How it works

Page 35: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

MeigaServer

Net RssFeed RssNode

Meiga

Log

libsoup

Gui

DBUS

SERVER

GUI

sh C

fwlocalip fwupnp

C

upnp

Test

libgupnp

NET

gui.ui

gui.glade

HTTP

UPnP Router

Page 36: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Programmable serial asynch events management

Connect Redirect Return

Composite action “redirect port”

State interpreterProgramAction for state 1Action for state 2Action for state N

Callback for state 1Callback for state 2Callback for state N

E1E2EN

DataParametersResponseIntermediate dataSequence control

Timeout control

Some states are reused for other composite actions

Page 37: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Ideas for the future

Page 38: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

More redirection modules

Redirection by SSH

Net

SERVER

sh

fwlocalip fwssh

NET

SSH server

Auxiliar client

HTTP

Remote browser

Page 39: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Integration with other desktop applications

Nautilus menu: “Share on Meiga”

MeigaServerMeiga

DBUS

SERVER

Third party utility

Page 40: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

More server modules

Function calls

MeigaServer

SERVERRythmbox

Playlist module

Contacts module

/playlist/...

/addressbook/...

URLDBUS

Evolution

Page 41: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Security

Password access

Cyphering

Restriction by IP

etc.

Page 42: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

Situations to avoid

Meiga shouldn't become a comprehensive interface for DBUS through HTTP (“serve everything”)● Security holes● There are currently more advanced utilities for

network object sharing. Eg: CORBA

Page 43: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

References

Page 44: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

References

● http://meiga.igalia.com

● http://live.gnome.org/Vala

● http://library.gnome.org/devel/libsoup/stable/libsoup-server-howto.html

● http://dbus.freedesktop.org/doc/api/html/group__DBusBus.html

● http://raphael.slinckx.net/blog/documents/dbus-tutorial

● http://www.gupnp.org/docs/gupnp/client-tutorial.html

● http://www.upnp.org/standardizeddcps/igd.asp99

● http://www.lrde.epita.fr/~adl/autotools.html

● http://live.gnome.org/Vala/GameDevelopmentSeries/Setup

Page 45: static void Meiga GParamSpec *pspec; · Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases:

http://meiga.igalia.com

Thank you very much

Questions, comments, suggestions?