Coder Social home page Coder Social logo

stewartadam / fwbackups Goto Github PK

View Code? Open in Web Editor NEW
86.0 13.0 20.0 2.58 MB

A feature-rich, user-friendly backup program [bugfixes only]

Home Page: http://www.diffingo.com/oss/fwbackups/

License: GNU General Public License v2.0

Shell 0.13% Python 98.41% Meson 1.26% CSS 0.20%
python backups backup-solution graphical-user-interface

fwbackups's People

Contributors

dependabot[bot] avatar glixx avatar mrs0m30n3 avatar stewartadam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fwbackups's Issues

Add POT file

Please add POT file in sources. It will help to sync with transifex.
If you will update POT file it will be uploaded at transifex automatically.

Allow backup sets to be unscheduled

Backup sets currently automatically create a crontab entry unless they are disabled, at which point the GUI will refuse to backup the set (even if manually triggered).

This behavior can be overridden using fwbackups-run -f on the CLI but there is no GUI equivalent functionality.

Adjusting GUI behavior to permit backups of disabled sets when clicking Backup Set Now would enable the scenario for users to configuring a backup that they wish to run repeatedly but trigger manually.

Feature request: Progress meter

A progress indicator would really be a useful. Progress bar with speed and percentage is optimal, but even just bytes written would be helpful for large backups.

The preference "start fwbackups when I log in" breaks autostart when there is no folder named autostart

System Details

  • fwbackups version: 1.43.7
  • OS name and version: Fedora 29 + gnome 3.30.2 fresh install

Issue description

When setting the preference "Start fwbackups (minimized) when I login" to enabled and there is no folder named ~/.config/autostart, fwbackups creates a file names autostart with the fwbackups.desktop contents in it.

Bug details

Steps to Reproduce:

  1. remove or rename: /home/username/.config/autostart
  2. open fwbackups and open preferences
  3. enable Startfwbackups (minimized) when I login
  4. your ~/.config/ folder now has a file named autostart

Observed results:
~/.config/autostart is a file with the contents of the .desktop file (and Gnome-tweaks/gnome-tweak-tool crashes because of it. bugreport: https://gitlab.gnome.org/GNOME/gnome-tweaks/issues/186)

Expected results:
A folder named ~/.config/autostart with the fwbackups.desktop file in it.

Workaround:
create a folder named autostart in ~/.config/ if there is none

ImportError

Hello, i get the following error code when trying to launch the application:

Traceback (most recent call last):

  File "/usr/share/fwbackups/fwbackups-runapp.pyw", line 47, in <module>
    from fwbackups import interface

  File "/usr/lib/python2.7/dist-packages/fwbackups/interface.py", line 23, in <module>
    import gtk.glade
ImportError: No module named glade

Feature request : dividing archive into several smaller archives

It would be nice to have the possibility to divide a backup archive into more archives which have a chosen size.
e.g. 512MB or so .... ;-) ... opening too big archives can be difficult depending on hardware.

System Details

  • fwbackups version: 1.43.8-rc1
  • OS name and version: Linux Mint 21.1 Cinnamon

Lacks Python 3 support

System Details

  • fwbackups version: 1.43.7
  • OS name and version: Ubuntu 20.04.2 LTS (xubuntu)

Issue description

I have many compilation errors while making source code.
First it was "./configure" - intltool version lower than 0.35.0, i upgraded it to 0.51.0, then everything ok.
But while it was making (make install), i observed compilation errors (listed below)

Bug details

Steps to Reproduce:

  1. ./configure (ok)
  2. make (ok)
  3. sudo make install (error occurs)

Observed results: Errors while makeinstalling

Expected results: Installation

Making install in bin
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/bin'
make[2]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/bin'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/bash /home/ooolledj/Downloads/fwbackups-1.43.7/install-sh -d /usr/local/bin
/usr/bin/install -c -m 755 fwbackups /usr/local/bin/fwbackups
/usr/bin/install -c -m 755 fwbackups-run.py /usr/local/bin/fwbackups-run
/usr/bin/install -c -m 755 fwbackups-runonce.py /usr/local/bin/fwbackups-runonce
make[2]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/bin'
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/bin'
Making install in po
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/po'
linguas="de es et fr gl hr id is lt ms nb_NO nl oc pt_BR pt_PT ru sq sv th tr uk "; \
for lang in $linguas; do \
  dir=/usr/local/share/locale/$lang/LC_MESSAGES; \
  /bin/bash /home/ooolledj/Downloads/fwbackups-1.43.7/install-sh -d $dir; \
  if test -r $lang.gmo; then \
    /usr/bin/install -c -m 644 $lang.gmo $dir/fwbackups.mo; \
    echo "installing $lang.gmo as $dir/fwbackups.mo"; \
  else \
    /usr/bin/install -c -m 644 ./$lang.gmo $dir/fwbackups.mo; \
    echo "installing ./$lang.gmo as" \
	 "$dir/fwbackups.mo"; \
  fi; \
  if test -r $lang.gmo.m; then \
    /usr/bin/install -c -m 644 $lang.gmo.m $dir/fwbackups.mo.m; \
    echo "installing $lang.gmo.m as $dir/fwbackups.mo.m"; \
  else \
    if test -r ./$lang.gmo.m ; then \
      /usr/bin/install -c -m 644 ./$lang.gmo.m \
	$dir/fwbackups.mo.m; \
      echo "installing ./$lang.gmo.m as" \
	   "$dir/fwbackups.mo.m"; \
    else \
      true; \
    fi; \
  fi; \
done
installing de.gmo as /usr/local/share/locale/de/LC_MESSAGES/fwbackups.mo
installing es.gmo as /usr/local/share/locale/es/LC_MESSAGES/fwbackups.mo
installing et.gmo as /usr/local/share/locale/et/LC_MESSAGES/fwbackups.mo
installing fr.gmo as /usr/local/share/locale/fr/LC_MESSAGES/fwbackups.mo
installing gl.gmo as /usr/local/share/locale/gl/LC_MESSAGES/fwbackups.mo
installing hr.gmo as /usr/local/share/locale/hr/LC_MESSAGES/fwbackups.mo
installing id.gmo as /usr/local/share/locale/id/LC_MESSAGES/fwbackups.mo
installing is.gmo as /usr/local/share/locale/is/LC_MESSAGES/fwbackups.mo
installing lt.gmo as /usr/local/share/locale/lt/LC_MESSAGES/fwbackups.mo
installing ms.gmo as /usr/local/share/locale/ms/LC_MESSAGES/fwbackups.mo
installing nb_NO.gmo as /usr/local/share/locale/nb_NO/LC_MESSAGES/fwbackups.mo
installing nl.gmo as /usr/local/share/locale/nl/LC_MESSAGES/fwbackups.mo
installing oc.gmo as /usr/local/share/locale/oc/LC_MESSAGES/fwbackups.mo
installing pt_BR.gmo as /usr/local/share/locale/pt_BR/LC_MESSAGES/fwbackups.mo
installing pt_PT.gmo as /usr/local/share/locale/pt_PT/LC_MESSAGES/fwbackups.mo
installing ru.gmo as /usr/local/share/locale/ru/LC_MESSAGES/fwbackups.mo
installing sq.gmo as /usr/local/share/locale/sq/LC_MESSAGES/fwbackups.mo
installing sv.gmo as /usr/local/share/locale/sv/LC_MESSAGES/fwbackups.mo
installing th.gmo as /usr/local/share/locale/th/LC_MESSAGES/fwbackups.mo
installing tr.gmo as /usr/local/share/locale/tr/LC_MESSAGES/fwbackups.mo
installing uk.gmo as /usr/local/share/locale/uk/LC_MESSAGES/fwbackups.mo
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/po'
Making install in pixmaps
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/pixmaps'
make[2]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/pixmaps'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/bash /home/ooolledj/Downloads/fwbackups-1.43.7/install-sh -d /usr/local/share/icons/hicolor/{scalable,128x128,64x64,48x48,32x32,16x16}/apps/
/bin/bash /home/ooolledj/Downloads/fwbackups-1.43.7/install-sh -d /usr/local/share/fwbackups/
/usr/bin/install -c -m 644 fwbackups.svg /usr/local/share/icons/hicolor/scalable/apps/fwbackups.svg
/usr/bin/install -c -m 644 fwbackups-128.png /usr/local/share/icons/hicolor/128x128/apps/fwbackups.png
/usr/bin/install -c -m 644 fwbackups-64.png /usr/local/share/icons/hicolor/64x64/apps/fwbackups.png
/usr/bin/install -c -m 644 fwbackups-48.png /usr/local/share/icons/hicolor/48x48/apps/fwbackups.png
/usr/bin/install -c -m 644 fwbackups-32.png /usr/local/share/icons/hicolor/32x32/apps/fwbackups.png
/usr/bin/install -c -m 644 fwbackups-16.png /usr/local/share/icons/hicolor/16x16/apps/fwbackups.png
/usr/bin/install -c -m 644 fwbackups-32.png /usr/local/share/fwbackups/fwbackups.png
make[2]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/pixmaps'
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/pixmaps'
Making install in src
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src'
make[2]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/bash /home/ooolledj/Downloads/fwbackups-1.43.7/install-sh -d /usr/local/share/applications
/usr/bin/install -c -m 644 fwbackups.desktop /usr/local/share/applications/fwbackups.desktop
 /usr/bin/mkdir -p '/usr/local/share/fwbackups'
 /usr/bin/install -c -m 644 BugReport.glade fwbackups.glade fwbackups-autostart.desktop fwbackups-runapp.pyw '/usr/local/share/fwbackups'
make[2]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src'
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src'
Making install in src/fwbackups/operations
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups/operations'
make[2]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups/operations'
make[2]: Nothing to be done for 'install-exec-am'.
 /usr/bin/mkdir -p '/usr/local/lib/python3.8/site-packages/fwbackups/operations'
 /usr/bin/install -c -m 644 __init__.py backup.py restore.py '/usr/local/lib/python3.8/site-packages/fwbackups/operations'
<string>:2: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
Byte-compiling python modules...
__init__.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/operations/__init__.py", line 66
    except Exception, error:
                    ^
SyntaxError: invalid syntax

backup.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/operations/backup.py", line 262
    except IOError, description:
                  ^
SyntaxError: invalid syntax

restore.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/operations/restore.py", line 126
    except Exception, error:
                    ^
SyntaxError: invalid syntax


Byte-compiling python modules (optimized versions) ...
__init__.pybackup.pyrestore.py
make[2]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups/operations'
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups/operations'
Making install in src/fwbackups
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups'
make[2]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups'
make[2]: Nothing to be done for 'install-exec-am'.
 /usr/bin/mkdir -p '/usr/local/lib/python3.8/site-packages/fwbackups'
 /usr/bin/install -c -m 644 config.py const.py cron.py fwlogger.py i18n.py __init__.py interface.py sftp.py shutil_modded.py widgets.py '/usr/local/lib/python3.8/site-packages/fwbackups'
<string>:2: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
Byte-compiling python modules...
config.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/config.py", line 48
    os.mkdir(encode(directory), 0700)
                                   ^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

const.pycron.pyfwlogger.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/fwlogger.py", line 68
    except Exception, error:
                    ^
SyntaxError: invalid syntax

i18n.py__init__.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/__init__.py", line 165
    print "You must install PyCron to run this program."
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("You must install PyCron to run this program.")?

interface.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/interface.py", line 51
    (`name`, `self.filename`))
     ^
SyntaxError: invalid syntax

sftp.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/sftp.py", line 48
    except IOError, errorDesc:
                  ^
SyntaxError: invalid syntax

shutil_modded.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/shutil_modded.py", line 62
    raise Error, "`%s` and `%s` are the same file" % (src, dst)
               ^
SyntaxError: invalid syntax

widgets.py  File "/usr/local/lib/python3.8/site-packages/fwbackups/widgets.py", line 135
    except UnicodeDecodeError, e:
                             ^
SyntaxError: invalid syntax


Byte-compiling python modules (optimized versions) ...
config.pyconst.pycron.pyfwlogger.pyi18n.py__init__.pyinterface.pysftp.pyshutil_modded.pywidgets.py
make[2]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups'
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7/src/fwbackups'
make[1]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7'
make[2]: Entering directory '/home/ooolledj/Downloads/fwbackups-1.43.7'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7'
make[1]: Leaving directory '/home/ooolledj/Downloads/fwbackups-1.43.7'

Help installing on 20.04

Just wondering if anyone can help out installing fwbackups on recent Ubuntu (Ubuntu Budgie 20.04.1).
After installation, I get the error:

/usr/bin/fwbackups: line 30: python: command not found

In that file, I changed python > python2.7. Now I get this error when I run fwbackups:

$ fwbackups
An error occurred while importing gtk/gobject.
Please make sure you have a valid GTK+ Runtime Environment.

I also tried:

sudo ln -s ../site-packages/fwbackups /usr/lib/python2.7/dist-packages/fwbackups

But that didn't help.
Your GUI is so straightforward and intuitive, plus as a backup tool for personal files it has all the features I want. I would love to use it as I haven't found a similar easy alternative (and I have been looking a lot).

meson version error on ubuntu 22.04

System Details

  • fwbackups version: gtk4
  • OS name and version: ubuntu 22.04

Issue description

when try to build and install I got this error:

The Meson build system
Version: 0.61.2
Source dir: /home/saibal/Scaricati/fwbackups-feature-gtk4
Build dir: /home/saibal/Scaricati/fwbackups-feature-gtk4/_build
Build type: native build

meson.build:1:0: ERROR: Meson version is 0.61.2 but project requires >= 0.62.0

I installed last version of meson in ubuntu 22.04 repository. I will try with flatpak

congratulations

nothing to report. Just to say that it's my preferred program for backups. I have been using it since 4 years.

fwbackups crashes trying to present dialog to clear large log file

Originally posted by @MidnightJava in #17 (comment)

Thanks for maintaining this and esp for the rc2 fix. It was working for me, and then today for reasons I don't understand it was unable to launch the GUI. No UI would appear, and I found these entries in syslog:

Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: Traceback (most recent call last):
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: File "/app/lib/python3.10/site-packages/fwbackups/ui/init.py", line 368, in runSetup
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: self._checkLogSize()
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: File "/app/lib/python3.10/site-packages/fwbackups/ui/init.py", line 430, in _checkLogSize
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: response = self.displayConfirm(self.ui.splash, _("Would you like to clean up the log file?"), _("The log file is becoming large (%s). Would you like to clear it? This will permanently remove all entries from the log.") % size)
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: AttributeError: 'UILoader' object has no attribute 'splash'
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: During handling of the above exception, another exception occurred:
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: Traceback (most recent call last):
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: File "/app/lib/python3.10/site-packages/fwbackups/ui/init.py", line 144, in do_command_line
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: self.do_activate()
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: File "/app/lib/python3.10/site-packages/fwbackups/ui/init.py", line 209, in do_activate
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: self.runSetup()
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: File "/app/lib/python3.10/site-packages/fwbackups/ui/init.py", line 371, in runSetup
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: self.displayInfo(self.ui.splash,
Jul 1 21:25:04 darp com.diffingo.fwbackups.desktop[7614]: AttributeError: 'UILoader' object has no attribute 'splash'

Differential backup ?

  • fwbackups version: 1.43.8-rc2
  • OS name and version: Linux Mint 21.2 Jammy Jellyfish

Feature request

Hi Stewart. I'm still enjoying fwbackup! I would like to know if you have any plan to implement it with 'differential' mode, in addition to 'incremental' ??

Expected results:
I personally like this method as it require only the full backup and the last differential to secure the set of files.

Best regards,
Didier

Better diagnostics in the log output

Adding more information to the log output when starting a backup would help diagnose issues like #22 more easily.

Ideas:

  • Destination filesystem
  • Disk utilization (i.e. GB available)
  • fwbackups runtime info on startup (version, flatpak vs native execution environment, host OS, kernel version, tar/bz2/rsync versions)

Errors: Can't find bus

System Details

  • fwbackups version: 1.43.8-rc1
  • OS name and version: Linux Mint 21.1 (Ubuntu Jammy Jellyfish)

Issue description

fwback installed using the flatpack regular installed of Mint.
I did successfully a 'One-Time Backup'. Then I configured a backup set for my usual every day backup.

Bug details

Steps to Reproduce:

  1. I configured a backup set for my usual every day backup.
  2. The Log Viewer report an error (see below).

Observed results:
No backup recorded.

If the fwbackups log has any relevant information, include a snippet below:

"ERROR : Process exited with status 1. Errors: Can't find bus: Impossible de lancer automatiquement D-Bus sans $DISPLAY X11"

I case it can help, here is the result of $DISPLAY in the terminal:
:0 : commande introuvable

Add warning on startup when cron isn't installed

System Details

  • fwbackups version: 1.43.8rc2

Issue description

Flatpak uses the host executables and many Linux distros don't include a cron daemon by default. fwbackups should warn users when cron is not unavailable on startup (it already produces an error on set save when it can't update cron).

schrodinger's backup

System Details

  • fwbackups version:
    flatpak info com.diffingo.fwbackups

     fwbackups - A feature-rich, user-friendly backup program
    
        ID: com.diffingo.fwbackups
       Ref: app/com.diffingo.fwbackups/x86_64/stable
      Arch: x86_64
    Branch: stable
    Version: 1.43.8-rc2
    License: GPL-2.0-or-later
    Origin: flathub
    Collection: org.flathub.Stable
    Installation: system
    Installed: 16.5 MB
    Runtime: org.gnome.Platform/x86_64/45
       Sdk: org.gnome.Sdk/x86_64/45
    Commit: 5c10049bcb8b426f85e8e8c51a943018ff7b000e2b0e6bc015c76696a8e27fb0
    Parent: 8635b1d823392deec1c0dc4f5a7d8f31cd03120813a70a580e26eb037316d595
    Subject: Update dependencies to fix CVEs in cryptography, pyinstaller, and paramiko (39ccf573)
      Date: 2023-12-30 06:02:45 +0000
    
  • OS name and version:
    Fedora Linux 39 (Workstation Edition) x86_64 Kernel: 6.6.8-200.fc39.x86_64

Issue description

backup is incomplete, fwbackup doesn't report an error.
Backup files are cut at ~1.6GB.

Bug details

Steps to Reproduce:

  1. configure backup to use bzip2 or gzip
  2. attemt to recover data form that file

Observed results: Unexpected EOF in archive

Expected results:

  1. Complete and recovareble backup
  2. Error reported when backup isn't successfull

If the fwbackups log has any relevant information, include a snippet below:

unfortunately IMPORTANT information about an error during backup process is MISSING from logs. 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.